[Cin] 10bit VAAPI encoding test thread continued

Terje J. Hanssen terjejhanssen at gmail.com
Tue Nov 12 23:57:09 CET 2024




Den 12.11.2024 21:58, skrev Terje J. Hanssen:
>
>
>
> Den 12.11.2024 21:53, skrev Terje J. Hanssen:
>>
>>
>>
>> Den 12.11.2024 16:42, skrev Andrew Randrianasulu:
>>>
>>>
>>> вт, 12 нояб. 2024 г., 18:32 Terje J. Hanssen <terjejhanssen at gmail.com>:
>>>
>>>
>>>
>>>
>>>     Den 12.11.2024 09:59, skrev Andrew Randrianasulu:
>>>>
>>>>
>>>>     вт, 12 нояб. 2024 г., 11:41 Terje J. Hanssen
>>>>     <terjejhanssen at gmail.com>:
>>>>
>>>>
>>>>
>>>>
>>>>         Den 11.11.2024 22:34, skrev Andrew Randrianasulu:
>>>>>
>>>>>
>>>>>         вт, 12 нояб. 2024 г., 00:31 Terje J. Hanssen
>>>>>         <terjejhanssen at gmail.com>:
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>             Den 11.11.2024 22:20, skrev Andrew Randrianasulu:
>>>>>>
>>>>>>
>>>>>>             пн, 11 нояб. 2024 г., 23:43 Terje J. Hanssen
>>>>>>             <terjejhanssen at gmail.com>:
>>>>>>
>>>>>>             {snip}
>>>>>>
>>>>>>
>>>>>>
>>>>>>>>>                         .
>>>>>>>>
>>>>>>>>
>>>>>>>>                         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.
>>>>>>
>>>>>>
>>>>>>             not exactly, in first case it just uses libav* from
>>>>>>             system ffmpeg package... and this in your case uses
>>>>>>             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?
>>>>>>
>>>>>>
>>>>>>
>>>>>>             I was about to ask if onevpl patch can be added to
>>>>>>             git ...
>>>>>>
>>>>>>             Dear Phyllis, can you add onevpl.patch so future QSV
>>>>>>             testing will be easier (it defaults to off so should
>>>>>>             not break anything ... by default).
>>>>>>
>>>>>>             while there, Terje, can you pack your latest profile
>>>>>>             work and send it separately?
>>>>>
>>>>
>>>>         Do you mean to attach them with filenames to a separate
>>>>         post here or?
>>>>
>>>>
>>>>     yes.
>>>>
>>>>
>>>>
>>>>>>             I think we use
>>>>>>             codec_encoder_additional_params.container as format
>>>>>>
>>>>>>             so 10bit 420 hevc  qsv for mp4 will look like
>>>>>>
>>>>>>             hevc_qsv_10bit.mp4
>>>>>>
>>>>>>             with content you experimentally determinated.
>>>>>>
>>>>>>             and y210 probably will be named
>>>>>>
>>>>>>             hevc_qsv_y210.mp4
>>>>>>
>>>>>
>>>>>             What about
>>>>>
>>>>>             hevc_qsv_10bit-420.mp4
>>>>>
>>>>>             and
>>>>>
>>>>>             hevc_qsv_10bit-422.mp4
>>>>>
>>>>>             respectively?
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>         if those relative long names fit their box - then ok ...
>>>>
>>>>         An alternative short(er) form and still a relative
>>>>         unambiguous description
>>>>
>>>>         hevc_qsv_10b420.mp4
>>>>         hevc_qsv_10b422.mp4
>>>>
>>>>
>>>>     then make them so!
>>>
>>>     I have some questions:
>>>
>>>     I know how to edit the content of the included "generic" video
>>>     preset
>>>
>>>     cat /Cin/bin/ffmpeg/video/hevc_qsv.mp4
>>>
>>>         mp4 hevc_qsv
>>>         # only usable with ext. ffmpeg, another pixfmt is yuyv422
>>>         profile=main
>>>         cin_pix_fmt=nv12
>>>
>>>     to create three additional, typical types:
>>>
>>>         hevc_qsv_8b420.mp4
>>>         hevc_qsv_10b420.mp4
>>>         hevc_qsv_10b422.mp4
>>>
>>>
>>>     I can load these compression types, but Cingg won't render with
>>>     other names than with the hevc_qsv.mp4?
>>>
>>>
>>> show content of those for all of us? ;)
>>
>>
>> Of course, we can clarify the questions this way.
>>
>> cat hevc_qsv_8b420.mp4
>>
>>     mp4 hevc_qsv_8b420
>>     # usable with Pixels: nv12
>>     profile=main
>>     # global_quality=25
>>
>>
>> cat hevc_qsv_10b420.mp4
>>
>>     mp4 hevc_qsv_10b420
>>     # usable with Pixels: p010le
>>     profile=main10
>>     # global_quality=25
>>
>>
>> cat hevc_qsv_10b422.mp4
>>
>>     mp4 hevc_qsv_10b422
>>     # usable with Pixels: y210le
>>     profile=0
>>     # global_quality=25
>>
>>
>
> Attached the three presets
>
>
>> If I load these compression Preset types, two issues arise:
>>
>> 1. The window content is correct, but the Pixel field is not: no drop 
>> down menu, but preferably nv12, p010le or y210le should be selected 
>> directly.
>> (I have tested these work, but not all other options on the drop down 
>> menu)
>>
>> 2. Rendering won't run and the error output
>> int FFMPEG::open_encoder(const char*, const char*):
>> cant find codec 
>> hevc_qsv_8b420:/Videoklipp/Cineform/cfhd01_hevc_qsv_pix_nv12.mp4
>>
>> However, as mentioned, if I load the default hevc_qsv.mp4 instead and 
>> copy the content above in its window and select the right Pixel format,
>> rendering works fine.
>>
>> ffprobe -hide_banner cfhd01_hevc_qsv_pix_nv12.mp4
>>   Duration: 00:01:11.20, start: 0.000000, bitrate: 2245 kb/s
>>   Stream #0:0[0x1](und): Video: hevc (Main) (hev1 / 0x31766568), 
>> yuv420p(tv, bt709/unknown/unknown, top coded first (swapped)), 
>> 1920x1080 [SAR 1:1 DAR 16:9], 2242 kb/s, 25 fps, 25 tbr, 12800 tbn 
>> (default)
>>
>> and with the gobal_quality=25 flag enabled:
>>
>> ffprobe -hide_banner cfhd01_hevc_qsv_pix_nv12_gq25.mp4
>>   Duration: 00:01:11.20, start: 0.000000, bitrate: 4644 kb/s
>>   Stream #0:0[0x1](und): Video: hevc (Main) (hev1 / 0x31766568), 
>> yuv420p(tv, bt709/unknown/unknown, top coded first (swapped)), 
>> 1920x1080 [SAR 1:1 DAR 16:9], 4642 kb/s, 25 fps, 25 tbr, 12800 tbn 
>> (default)
>>
>>
I think I solved it.
The first line in all presets need to be identical with the original 
preset to get the original drop down Pixel menu

    mp4 hevc_qsv


That is all three presets content and as attached edited:

hevc_qsv_8b420.mp4

    mp4 hevc_qsv
    # usable with Pixels: nv12
    profile=main
    # global_quality=25


hevc_qsv_10b420.mp4

    mp4 hevc_qsv
    # usable with Pixels: p010le
    profile=main10
    # global_quality=25


hevc_qsv_10b422.mp4

    mp4 hevc_qsv
    # usable with Pixels: y210le
    profile=0
    # global_quality=25



>>>
>>>
>>>
>>>     What decide what become available in the Video Preset Pixel
>>>     field, one single default or nv12 on top of a drop down menu?
>>>
>>>
>>>
>>> whatever individual encoder describes in their pixfmt array .... 
>>> (inside libavcodec)
>>>
>>>
>>>     Testing with added
>>>
>>>     global_quality=25
>>>
>>>     works seemingly well and uses higher bit rate vs without this
>>>     flag (default):
>>>
>>>     hdv input:    5938 kb/s vs 3090 kb/s
>>>     cfhd input:   4644 kb/s vs 2245 kb/s
>>>
>>>
>>>
>>> good.
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>>
>>>>
>>>>>
>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cinelerra-gg.org/pipermail/cin/attachments/20241112/587dad23/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: hevc_qsv_8b420.mp4
Type: video/mp4
Size: 94 bytes
Desc: not available
URL: <https://lists.cinelerra-gg.org/pipermail/cin/attachments/20241112/587dad23/attachment-0003.mp4>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: hevc_qsv_10b420.mp4
Type: video/mp4
Size: 78 bytes
Desc: not available
URL: <https://lists.cinelerra-gg.org/pipermail/cin/attachments/20241112/587dad23/attachment-0004.mp4>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: hevc_qsv_10b422.mp4
Type: video/mp4
Size: 74 bytes
Desc: not available
URL: <https://lists.cinelerra-gg.org/pipermail/cin/attachments/20241112/587dad23/attachment-0005.mp4>


More information about the Cin mailing list