[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