[Cin] 10bit VAAPI encoding test thread continued

Terje J. Hanssen terjejhanssen at gmail.com
Mon Nov 11 18:43:18 CET 2024




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 ?


>
>
>
>
>>
>>
>>>
>>>
>>>
>>>
>>>
>>>>>         (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/ee42ebad/attachment-0001.htm>


More information about the Cin mailing list