[Cin] 10bit VAAPI encoding test thread continued
Terje J. Hanssen
terjejhanssen at gmail.com
Mon Nov 11 21:43:34 CET 2024
Den 11.11.2024 19:01, skrev Andrew Randrianasulu:
>
>
> On Mon, Nov 11, 2024 at 8:43 PM Terje J. Hanssen
> <terjejhanssen at gmail.com> wrote:
>
>
>
>
> Den 09.11.2024 17:16, skrev Andrew Randrianasulu:
>>
>>
>> сб, 9 нояб. 2024 г., 19:10 Terje J. Hanssen
>> <terjejhanssen at gmail.com>:
>>
>>
>>
>>
>> Den 09.11.2024 10:48, skrev Terje J. Hanssen:
>>>
>>>
>>>
>>> Den 09.11.2024 00:10, skrev Andrew Randrianasulu:
>>>>
>>>>
>>>> сб, 9 нояб. 2024 г., 01:58 Terje J. Hanssen
>>>> <terjejhanssen at gmail.com>:
>>>>
>>>>
>>>>
>>>>
>>>> Den 07.11.2024 22:53, skrev Terje J. Hanssen:
>>>>>
>>>>>
>>>>>
>>>>> Den 07.11.2024 20:41, skrev Andrew Randrianasulu:
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> sorry I mean set like this
>>>>>>> export CIN_10BIT_ENC=1
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> Now hevc_vaapi was able to render to yuv420p10le,
>>>>>> that is 10-bit 420p, by selecting pixels p010le.
>>>>>> Also rendering with pixels y210 resulted in
>>>>>> yuv420p10le, that is not 10-bit 422p as for
>>>>>> hevc_qsv below.
>>>>>>
>>>>>> I would assume this is caused due to the
>>>>>> incomplete hevc_vapi.mp4 preset as shown below?
>>>>>>
>>>>>>
>>>>>> More like incomplete code that does not yet know how
>>>>>> to get custom format ... so far as name says it only
>>>>>> adds 10bit 4:2:0 encoding, not 4:2:2 subsampling.
>>>>>>
>>>>>> can you test other vaapi/qsv profiles too?
>>>>>>
>>>>>>
>>>>>> also with test picture actually containing more than
>>>>>> 8bit values? ;)
>>>>>
>>>>> To the latter; the input file cfhd01.mkv was 10bit
>>>>> 422: yuv422p10le
>>>>>
>>>>> Maybe have a look at and compare with the hevc_qsv
>>>>> code that managed 10bit 422: yuv422p10le?
>>>>>
>>>>>
>>>>
>>>> Summary
>>>> ----------------
>>>>
>>>> hevc_vaapi.mp4 and av1_vaapi.mp4
>>>> Pixels: vaapi (default and only option) works and
>>>> results in yuv420p
>>>> p010 or p010le written works and result
>>>> in yuv420p10le
>>>> y210 or all variants y210le/Y210/le
>>>> render (with fallback) to yuv420p10le
>>>>
>>>> h264_vaapi.mp4 didn't render (error message)
>>>>
>>>>
>>>> yeah, no 10bit h264 here (while possible by spec)
>>>>
>>>>
>>>>
>>>> av1_qsv.mp4 is for external ffmpeg
>>>>
>>>>
>>>> if you still have my onevpl patch applied (and enabled it
>>>> earlier with configure switch) too - qsv should work ...
>>>>
>>>> try it too just in case?
>>>
>>> av1_qsv.mp4
>>> Would not render at all
>>>
>>> [av1_qsv @ 0x7fe19826f240] Current picture structure is
>>> unsupported
>>> [av1_qsv @ 0x7fe19826f240] 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/Cineform/cfhd01_av1_qsv_pix_nv12.mp4
>>> Render::render_single: Session finished.
>>>
>>>
>>> hevc_qsv.mp4
>>> Does render, but only to yuv420p now.
>>> For one or another reason pixel formats p010le and y210le
>>> results in yuv420p.
>>> That is I am not able to reconstruct the previous 10bit
>>> results below.
>>> I do another attempt next day.
>>
>>
>> hevc_qsv.mp4 revised:
>> pixel formats p010le and y210le render again to yuv420p10le
>> and .yuv422p10le respectively
>> Woops; only when these window lines are commented out as
>> written in my previous post !
>>
>> # profile=main
>> # cin_pix_fmt=nv12
>>
>> Works both with and without
>> export CIN_10BIT_ENC=1
>> before cin/bin
>>
>>
>>
>> we most likely will need new profiles for 10bit everything anyway ...
>>
>> thanks for continued (and very exhaustive!) testing
>
> Also the preset's combination of pixel formats and the right
> (ffmpeg) codec profiles would need an overhaul.
>
> As mentioned already above:
>
> hevc_qsv.mp4 revised:
> pixel formats p010le and y210le render again to yuv420p10le and
> .yuv422p10le respectively
> Woops; only when these window lines are commented out as written
> in my previous post !
>
> # profile=main
> # cin_pix_fmt=nv12
>
>
> I experimented additional and got
>
> y210/profile=1 ==> yuv422p10le
>
> y210/ profile=main10/ profile=2/ profile=3 ==> yuv420p10le
>
> I got similar results with my own dynamic Cingg built with ffmpeg 7.1.
>
> --------------------------
>
> So a question beside:
>
> Yesterday I did a new (monthly) upgrade of Tumbleweed-Slowroll,
> which replaced Packman package libs and ffmpeg 7.1
>
> After that, the static Cingg with onevpl and 10bit patch would not
> render hevc_qsv.
>
> Today's upgrade with new Packman packages up-to-date with the new
> Slowroll version, and now Cingg worked as before:
>
> ffmpeg-7 ffmpeg-7-libavcodec-devel ffmpeg-7-libavdevice-devel
> ffmpeg-7-libavfilter-devel
> ffmpeg-7-libavformat-devel ffmpeg-7-libavutil-devel
> ffmpeg-7-libpostproc-devel ffmpeg-7-libswresample-devel
> ffmpeg-7-libswscale-devel libavcodec61 libavdevice61
> libavfilter10 libavformat61 libavutil59 libpostproc58
> libswresample5 libswscale8
>
> So even Cingg with onevpl is static built, it looks like it is
> dependent of one or more system packages/libs beside?
> Any idea what packages it can be ?
>
>
>
> onevpl/vaapi/vdpau - they all linked dynamically (not sure if static
> version of them even possible)
Ah, I see.
I tried to compare the two configure lines for my full dynamic
Cingg/ffmpeg7.1 built and static-dynamic Cingg/ffmpeg7.0 respectively:
./configure --with-single-user --disable-static-build
--without-thirdparty --without-libdpx
./configure --with-single-user --with-onevpl
As the first line didn't mention "vpl" I searched backwards and got the
understanding that the source code was patched to use the system libvpl.
In the second case the build-system itself was patched with onevpl
(default off) to use the same system libvpl, I assume?
Is/will possibly the current or upcoming Cingg appimage/rpm available
with the onevpl patch, so it can be switched on and tested on other
available hardware?
.
>
>
>
>>
>>
>>
>>
>>>
>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>>> (probably made up something in GIMP 2.10, save as
>>>>>> tiff/EXR, import in cingg, set format to rgba-float,
>>>>>> rendrer ..... hm, may be use YUView to see pixel
>>>>>> values independently of cinelerra's decoding
>>>>>> abilities? a bit of adventure, but should provide
>>>>>> some proof about encoding)
>>>>>>
>>>>>>
>>>>>> ffprobe -hide_banner cfhd01_hevc_vaapi_pix_p010le.mp4
>>>>>> Input #0, mov,mp4,m4a,3gp,3g2,mj2, from
>>>>>> 'cfhd01_hevc_vaapi_pix_p010le.mp4':
>>>>>> Metadata:
>>>>>> major_brand : isom
>>>>>> minor_version : 512
>>>>>> compatible_brands: isomiso2mp41
>>>>>> encoder : Lavf61.1.100
>>>>>> Duration: 00:01:11.20, start: 0.000000,
>>>>>> bitrate: 11082 kb/s
>>>>>> Stream #0:0[0x1](und): Video: hevc (Main 10)
>>>>>> (hev1 / 0x31766568), yuv420p10le(tv,
>>>>>> bt709/unknown/unknown, top coded first
>>>>>> (swapped)), 1920x1080 [SAR 1:1 DAR 16:9], 11080
>>>>>> kb/s, 25 fps, 25 tbr, 12800 tbn (default)
>>>>>> Metadata:
>>>>>> handler_name : VideoHandler
>>>>>> vendor_id : [0][0][0][0]
>>>>>>
>>>>>> ffprobe -hide_banner cfhd01_hevc_vaapi_pix_y210.mp4
>>>>>> Input #0, mov,mp4,m4a,3gp,3g2,mj2, from
>>>>>> 'cfhd01_hevc_vaapi_pix_y210.mp4':
>>>>>> Metadata:
>>>>>> major_brand : isom
>>>>>> minor_version : 512
>>>>>> compatible_brands: isomiso2mp41
>>>>>> encoder : Lavf61.1.100
>>>>>> Duration: 00:01:11.20, start: 0.000000,
>>>>>> bitrate: 11082 kb/s
>>>>>> Stream #0:0[0x1](und): Video: hevc (Main 10)
>>>>>> (hev1 / 0x31766568), yuv420p10le(tv,
>>>>>> bt709/unknown/unknown, top coded first
>>>>>> (swapped)), 1920x1080 [SAR 1:1 DAR 16:9], 11080
>>>>>> kb/s, 25 fps, 25 tbr, 12800 tbn (default)
>>>>>> Metadata:
>>>>>> handler_name : VideoHandler
>>>>>> vendor_id : [0][0][0][0]
>>>>>>
>>>>>>>
>>>>>>> -----
>>>>>>>
>>>>>>> No hevc_vaapi 10bit worked:
>>>>>>>
>>>>>>> localhost:/Cin/ffmpeg/video # cat hevc_vaapi.mp4
>>>>>>> mp4 hevc_vaapi
>>>>>>> # cin_hw_dev=vaapi
>>>>>>>
>>>>>>> I tested hevc_vaapi.m4 and tried to write
>>>>>>> p010 both in the pixels field and as
>>>>>>> format=p010 in the widget,
>>>>>>> but only 8bit 420p each time.
>>>>>>>
>>>>>>> -------------------------------
>>>>>>>
>>>>>>> hevc_qsv 10 bit worked with p010 and with y210
>>>>>>>
>>>>>>> localhost:/Cin/ffmpeg/video # cat hevc_qsv.mp4
>>>>>>> # only usable with ext. ffmpeg, another
>>>>>>> pixfmt is yuyv422
>>>>>>> mp4 hevc_qsv
>>>>>>> # profile=main
>>>>>>> # cin_pix_fmt=nv12
>>>>>>>
>>>>>>>
>>>>>>> ffprobe -hide_banner
>>>>>>> cfhd01_hevc_qsv_pix_p010le.mp4
>>>>>>> Input #0, mov,mp4,m4a,3gp,3g2,mj2, from
>>>>>>> 'cfhd01_hevc_qsv_pix_p010le.mp4':
>>>>>>> Metadata:
>>>>>>> major_brand : isom
>>>>>>> minor_version : 512
>>>>>>> compatible_brands: isomiso2mp41
>>>>>>> encoder : Lavf61.1.100
>>>>>>> Duration: 00:01:11.20, start: 0.000000,
>>>>>>> bitrate: 28276 kb/s
>>>>>>> Stream #0:0[0x1](und): Video: hevc (Main
>>>>>>> 10) (hev1 / 0x31766568), yuv420p10le(tv,
>>>>>>> bt709/unknown/unknown, top coded first
>>>>>>> (swapped)), 1920x1080 [SAR 1:1 DAR 16:9],
>>>>>>> 28273 kb/s, 25 fps, 25 tbr, 12800 tbn (default)
>>>>>>> Metadata:
>>>>>>> handler_name : VideoHandler
>>>>>>> vendor_id : [0][0][0][0]
>>>>>>>
>>>>>>>
>>>>>>> ffprobe -hide_banner
>>>>>>> cfhd01_hevc_qsv_pix_y210le.mp4
>>>>>>> Input #0, mov,mp4,m4a,3gp,3g2,mj2, from
>>>>>>> 'cfhd01_hevc_qsv_pix_y210le.mp4':
>>>>>>> Metadata:
>>>>>>> major_brand : isom
>>>>>>> minor_version : 512
>>>>>>> compatible_brands: isomiso2mp41
>>>>>>> encoder : Lavf61.1.100
>>>>>>> Duration: 00:01:11.20, start: 0.000000,
>>>>>>> bitrate: 32074 kb/s
>>>>>>> Stream #0:0[0x1](und): Video: hevc (Rext)
>>>>>>> (hev1 / 0x31766568), yuv422p10le(tv,
>>>>>>> bt709/unknown/unknown, top coded first
>>>>>>> (swapped)), 1920x1080 [SAR 1:1 DAR 16:9],
>>>>>>> 32071 kb/s, 25 fps, 25 tbr, 12800 tbn (default)
>>>>>>> Metadata:
>>>>>>> handler_name : VideoHandler
>>>>>>> vendor_id : [0][0][0][0]
>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>> you also can set
>>>>>>>>> bin/ffmpeg/encode.opts loglevel to
>>>>>>>>> debug, but render exactly one frame so
>>>>>>>>> log will be smaller.
>>>>>>>>
>>>>>>>> How to render render exactly one frame ?
>>>>>>>>
>>>>>>>>
>>>>>>>> In render dialog window there is selection
>>>>>>>> of render range with 4 choices ... 1 frame
>>>>>>>> mp4/webm should be perfectly legal :)
>>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> "git log" where?
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> in cinelerra-5.1 directory, or
>>>>>>>>>> some down the hierarchy ...
>>>>>>>>>>
>>>>>>>>>> this is command, part of git
>>>>>>>>>> suite of commands.
>>>>>>>>>>
>>>>>>>>>> displays log of commits in git
>>>>>>>>>> repo. (for me it uses l"less" as
>>>>>>>>>> pager, so you can scroll around
>>>>>>>>>> and search)
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cinelerra-gg.org/pipermail/cin/attachments/20241111/4d23b2dd/attachment-0001.htm>
More information about the Cin
mailing list