[Cin] test patch for 7.0 ffmpeg
Terje J. Hanssen
terjejhanssen at gmail.com
Wed Nov 20 23:43:40 CET 2024
Den 20.11.2024 22:50, skrev Andrew Randrianasulu:
>
>
> чт, 21 нояб. 2024 г., 00:47 Terje J. Hanssen <terjejhanssen at gmail.com>:
>
>
>
>
> Den 20.11.2024 22:31, skrev Andrew Randrianasulu:
>>
>>
>> чт, 21 нояб. 2024 г., 00:27 Terje J. Hanssen
>> <terjejhanssen at gmail.com>:
>>
>>
>>
>>
>> Den 20.11.2024 21:38, skrev Andrew Randrianasulu:
>>>
>>>
>>> ср, 20 нояб. 2024 г., 23:31 Terje J. Hanssen
>>> <terjejhanssen at gmail.com>:
>>>
>>>
>>>
>>>
>>> Den 20.11.2024 20:54, skrev Andrew Randrianasulu:
>>>>
>>>>
>>>> ср, 20 нояб. 2024 г., 22:46 Terje J. Hanssen
>>>> <terjejhanssen at gmail.com>:
>>>>
>>>>
>>>>
>>>>
>>>> Den 20.11.2024 16:53, skrev Andrew Randrianasulu:
>>>>>
>>>>>
>>>>> ср, 20 нояб. 2024 г., 18:26 Terje J. Hanssen
>>>>> <terjejhanssen at gmail.com>:
>>>>>
>>>>> Den 20.11.2024 06:23, skrev Andrew Randrianasulu:
>>>>>> On Tue, Nov 19, 2024 at 6:59 PM Terje J. Hanssen
>>>>>> <terjejhanssen at gmail.com> <mailto:terjejhanssen at gmail.com> wrote:
>>>>>>> Den 19.11.2024 15:08, skrev Andrew Randrianasulu:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Tue, Nov 19, 2024 at 1:56 PM Terje J. Hanssen<terjejhanssen at gmail.com> <mailto:terjejhanssen at gmail.com> wrote:
>>>>>>>> Den 19.11.2024 14:53, skrev Andrew Randrianasulu:
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Tue, Nov 19, 2024 at 1:28 PM Terje J. Hanssen<terjejhanssen at gmail.com> <mailto:terjejhanssen at gmail.com> wrote:
>>>>>>>>> Den 19.11.2024 06:58, skrev Andrew Randrianasulu:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> вт, 19 нояб. 2024 г., 03:47 Terje J. Hanssen<terjejhanssen at gmail.com> <mailto:terjejhanssen at gmail.com>:
>>>>>>>>>> Den 18.11.2024 10:52, skrev Andrew Randrianasulu:
>>>>>>>>>>
>>>>>>>>>> It may work or break it completely ...
>>>>>>>>>>
>>>>>>>>>> apply by normal patch command from inside thirdparty/ffmpeg (may be "cat pathname | patch -p1", may be "cat patchname | patch -p0") or edit libavcodec/qsvenc.c by hand.
>>>>>>>>>>
>>>>>>>>>> rebuild ffmpeg, do not do make clean,
>>>>>>>>>> cd ../../
>>>>>>>>>> so you again in main directory with ./autogen.sh and bin directory with cinelerra.
>>>>>>>>>>
>>>>>>>>>> touch cinelerra/ffmpeg.C
>>>>>>>>>> make
>>>>>>>>>>
>>>>>>>>>> Hopefully this rebuild cin so on next start from bin/cin you will have something to test with tff sources.
>>>>>>>>>>
>>>>>>>>>> Unfortunately, netBSD does not support hardware virtualization on AMD cpus, so for now I do not have my virtual machines. I also forgot type of cable from PSU to disks, so now I can only power up one of two sata drives.
>>>>>>>>>>
>>>>>>>>>> It will be fixed eventually, but for now I hope to live up this netBSD install a bit ...
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> To prepare for tomorrow, because else I am stuck:
>>>>>>>>>>
>>>>>>>>>> apply by normal patch command from inside thirdparty/ffmpeg (may be "cat pathname | patch -p1", may be "cat patchname | patch -p0") or edit libavcodec/qsvenc.c by hand.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Should here be a patch attached to be able to use "git am patch"?
>>>>>>>>> I installed Fedora 40 in qemu on NetBSD (thankfully only booting from iso as cdrom was not working on hw virtualization - 4*3.9 {amd fx4300 } Ghz was barely enough for gnome-based (?) installer to just show up) so hopefully there will be!
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> cd /Cin/thirdparty/ffmpeg-7.0 ?
>>>>>>>>>>
>>>>>>>>>> may be "cat pathname | patch -p1", may be "cat patchname | patch -p0" ?
>>>>>>>>>>
>>>>>>>>>> or edit libavcodec/qsvenc.c by hand. - possibly what to edit there?
>>>>>>>>>>
>>>>>>>>>> cd ../../
>>>>>>>>>> localhost:/Cin #
>>>>>>>>> When possible, I need more explanation to my questions above ..,
>>>>>>>> ? If you are not comfortable applying it by hand to internal ffmpeg I'll prepare normal git am patch, just wait a bit, ok?
>>>>>>>>
>>>>>>>>
>>>>>>>> Yes, fine and ok. But I didn't even understand what and how to edit libavcodec/qsvenc.c by hand above ;)
>>>>>>> Normally you just delete lines marked with "-" at very beginning, and replace them with lines marked with "+" sign in patch. Line numbers and line endings extremely important for patch, so sometimes 'innocent' patch editing resulted in no-working patch :(
>>>>>>>
>>>>>>> for simple patches you can just edit file they normally modify by doing patch's work.
>>>>>>>
>>>>>>>
>>>>>>> Yet, I prefer to wait for the normal git am patch ;)
>>>>>> try attached ?
>>>>>
>>>>> Thanks for the patch, but unhappily no success
>>>>> so far. Still the same errors.
>>>>>
>>>>> In case I did something wrong, I have
>>>>> preserved my steps as follow for verification:
>>>>>
>>>>> # cd /Cin/thirdparty/ffmpeg-7.0
>>>>>
>>>>> # git am
>>>>> 0001-experimental-add-qsv-field-info-to-qsv-encoder-in-ff.patch
>>>>> Applying: experimental: add qsv field info to
>>>>> qsv encoder in ffmpeg
>>>>>
>>>>> # cd ../..
>>>>>
>>>>> # /Cin
>>>>>
>>>>> # touch cinelerra/ffmpeg.C
>>>>>
>>>>> # make
>>>>>
>>>>> (no additonal "make install" step mentioned!?)
>>>>>
>>>>>
>>>>> well, just remaking cinelerra put resulting binary
>>>>> in bin, and plugins and stuff should already be
>>>>> there from previous build.
>>>>>
>>>>> BUT in this case we need to rebuild ffmpeg itself,
>>>>> not just our interface to it.
>>>>>
>>>>> rm -rf thirdparty/ffmpeg-7.0
>>>>>
>>>>> rm thirdparty/build/ffmpeg.*
>>>>>
>>>>> make
>>>>
>>>> /Cin/bin/cin
>>>> with a new render test here, got the same qsv errors.
>>>>
>>>>>
>>>>> or you can do full rebuild just in case, but do
>>>>> not forgot to save profiles you worked on for so
>>>>> many days ...
>>>>
>>>> Additional "make install" step and another render
>>>> test had the same qsv errors.
>>>> I checked that my presets in /Cin/bin/ffmpeg/video
>>>> were not overwritten. Should they?
>>>>
>>>> Or did you mean something else with a "full rebuild" ?
>>>>
>>>>
>>>> by full rebuild i mean running
>>>>
>>>> make clean
>>>>
>>>> ./autogen.sh
>>>>
>>>> ./configure with switches for single user and libvpl
>>>>
>>>> make
>>>>
>>>> make install.
>>>>
>>>> by partial rebuild i mean
>>>>
>>>> rm thirdparty/build/ffmpeg.* - files indicating that
>>>> was already built
>>>>
>>>> rm -rf thirdparty/ffmpeg-7.0
>>>>
>>>> so on next top level make it will unpack and patch
>>>> ffmpeg sources anew, build .a static libraries, and
>>>> only then you do
>>>>
>>>> touch cinelerra/ffmpeg.C
>>>>
>>>> make
>>>>
>>>> so cinelerra herself rebuilt with updated ffmpeg libraries.
>>>>
>>>> depend on how cpu power you have. I often do partial
>>>> rebuild because I use qemu-based virtual machines with
>>>> limited number of vCPUs assigned to them, or build on
>>>> my android tablet.
>>>
>>>
>>> Yes I see. Surely smart and effective to do partial
>>> rebuild whenever possible.
>>> But in this case as I didn't get "it" to work, it is no
>>> problem try a full rebuild lastly on my local ws
>>> w/i7-12700KF.
>>>
>>> My noticed steps last time I rebuild this Cingg were:
>>> ---------------
>>> # /Cin
>>> # make clean
>>> # ./configure --with-single-user --with-onevpl
>>> # make
>>> # make install
>>>
>>
>> Hm. Still no success with regards to the qsv rendering errors:
>>
>> [av1_qsv @ 0x7f61b4d67c00] Current picture structure is
>> unsupported
>>
>>> copied back my setup profiles from backup to
>>> bin/ffmpeg/video
>>>
>>
>> No need. I had expected that my setup profiles were deleted
>> now, but not. They looked to have outlived the full rebuild!
>> Should they really?
>>
>>
>> no, "make clean" deletes bin folder and everything there...
>>
>> unless you put them in ffmpeg (not bin/ffmpeg)
>
> I had also saved a backup in ./ffmpeg/video/
>
> Therefore they were copied automatic back to ./bin/ffmpeg/video/ ?
>
>
> on 'make install', yes.
>
> can you visually inspect that patch altered file as intended?
As written above, I was in /Cin/thirdparty/ffmpeg-7.0 when using "git am
patch"
Not quite sure what key to look for in qsvenc.c
fx. no search hit for "patch",
but this is a copied if section from line no 849 - 868 that is similar
like some of the patch content:
if (avctx->flags & AV_CODEC_FLAG_INTERLACED_DCT) {
// it is important that PicStruct be setup correctly from the
// start--otherwise, encoding doesn't work and results in a bunch
// of incompatible video parameter errors
if (avctx->flags & AV_FRAME_FLAG_TOP_FIELD_FIRST)
q->param.mfx.FrameInfo.PicStruct = MFX_PICSTRUCT_FIELD_TFF;
else
q->param.mfx.FrameInfo.PicStruct = MFX_PICSTRUCT_FIELD_BFF;
// height alignment always must be 32 for interlaced video
q->height_align = 32;
} else {
q->param.mfx.FrameInfo.PicStruct = MFX_PICSTRUCT_PROGRESSIVE;
// for progressive video, the height should be aligned to 16 for
// H.264. For HEVC, depending on the version of MFX, it should be
// either 32 or 16. The lower number is better if possible.
// For AV1, it is 32
q->height_align = (avctx->codec_id == AV_CODEC_ID_HEVC ||
avctx->codec_id == AV_CODEC_ID_AV1) ? 32 : 16;
}
q->param.mfx.FrameInfo.Height = FFALIGN(avctx->height,
q->height_align);
>
>
>
>
>>
>>
>>
>>
>> (another thing as CPU was mentioned. I had top running beside
>> running make and noticed CPU was on just 100%
>> That seemingly tells that make uses only a single core, not
>> multi-core utilization like BD rendering used)
>>
>>
>>
>> normally buildsystem makes good use of all cores .. some things
>> like x265 build not really parallel for now but they take
>> relatively small portion of time.
>>
>>
>>
>>> ------------
>>>
>>> What about patches in this new case, are they already
>>> taken care of without extra steps?
>>>
>>>
>>> hopefully yes, as I tried to build with my patch and it was
>>> building w/o error so I made it into git am-compatible patch
>>> and you applied that already.
>>>
>>>
>>> Will it still be need to start Cinelerra with
>>>
>>> CIN_10BIT_ENC=p010le bin/cin
>>>
>>> to get 10bit vaapi?
>>>
>>>
>>>
>>> no, previous patch should take care of this, no need to use
>>> this variable anymore .
>>>
>>>
>>>
>>>
>>>>
>>>>
>>>>
>>>>
>>>>>
>>>>>
>>>>>
>>>>> # bin/cin
>>>>> Loaded a tff hdv.m2t file
>>>>>
>>>>> Attempt to render with preset av1_qsv_8b420.mp4
>>>>>
>>>>> # av1_qsv_8b420
>>>>> # usable with Pixels: nv12
>>>>> profile=main
>>>>> # global_quality=25
>>>>>
>>>>> failed with the previous output error:
>>>>>
>>>>> [av1_qsv @ 0x7fc850e4f280] Current picture
>>>>> structure is unsupported
>>>>> [av1_qsv @ 0x7fc850e4f280] some encoding
>>>>> parameters are not supported by the QSV
>>>>> runtime. Please double check the input parameters.
>>>>> FFMPEG::open_encoder err: Function not
>>>>> implemented
>>>>> int FFMPEG::open_encoder(const char*, const
>>>>> char*):
>>>>> open failed
>>>>> av1_qsv:/Videoklipp/QSV/hdv09_04_av1_qsv.mp4
>>>>> Render::render_single: Session finished.
>>>>>
>>>>>
>>>>>
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cinelerra-gg.org/pipermail/cin/attachments/20241120/d8a88f6d/attachment-0001.htm>
More information about the Cin
mailing list