[Cin] VAAPI supported Encoding formats

Terje J. Hanssen terjejhanssen at gmail.com
Sun Nov 3 00:52:42 CET 2024




Den 03.11.2024 00:09, skrev Andrew Randrianasulu:
>
>
> On Sat, Nov 2, 2024 at 8:15 PM Terje J. Hanssen via Cin 
> <cin at lists.cinelerra-gg.org> wrote:
>
>
>     Den 01.11.2024 19:34, skrev Phyllis Smith:
>>     Terje, thank you for this comprehensive list of vaapi supported
>>     encodings.
>>
>>     On Thu, Oct 31, 2024 at 5:38 PM Terje J. Hanssen via Cin
>>     <cin at lists.cinelerra-gg.org> wrote:
>>
>>         In hope it may be of some use for Cingg next, I make a
>>         summary and supplement to the guide in
>>         https://trac.ffmpeg.org/wiki/Hardware/VAAPI#Encoding
>>         And instead of adding a tail to already too long recent
>>         threads, I start a new thread here.
>>
>>         Two additional references are used
>>         Developer Reference: Media Capabilities Supported by Intel
>>         Hardware
>>         https://www.intel.com/content/www/us/en/docs/onevpl/developer-reference-media-intel-hardware/1-1/features-and-formats.html
>>         Supported Encoding Input Format and Max Resolution
>>         https://github.com/intel/media-driver/blob/master/docs/media_features.md#supported-encoding-input-format-and-max-resolution
>>
>>         to clarify the Encode Features for my own Intel Arc A-series
>>         Discrete Graphics
>>
>>         HEVC (fixed-function hardware + shader-based)
>>          8-bit, 4:2:0 (NV12)
>>         10-bit, 4:2:0 (P010)
>>          8-bit, 4:2:2 (YUY2, Windows only)
>>         10-bit, 4:2:2 (Y210)
>>
>>         AV1
>>          8-bit, 4:2:0 (NV12)
>>         10-bit, 4:2:0 (P010)
>>
>>
>>         A short reminder:
>>         8-bit vs 10-bit color depths is 256 vs 1024 color levels of
>>         each RGB color, or 16.7 mill. vs 1.0 bill colors.
>>         4:2:0 vs 4:2:2 color sub-sampling is keeping 1/4 vs 1/2 of
>>         all 4:4:4 colors or the precision of color compression.
>>         https://fujifilm-x.com/en-us/series/the-filmmakers-handbook/8-bit-or-10-bit-video-color-explained/
>>
>>
>>
>>         An important point to notice is that the VAAPI encoding
>>         'formats' are based on those in the parentheses () above.
>>
>>         Three simplified ffmpeg code lines with default bit-rates and
>>         without audio are used in the following three examples.
>>         Resulting fps encoding counts or speeds are the same in all
>>         cases; I don't know why.
>>
>>
>>         The input file used:
>>
>>         ffprobe -hide_banner cfhd01.mkv
>>         Input #0, matroska,webm, from 'cfhd01.mkv':
>>           Metadata:
>>             ENCODER         : Lavf61.1.100
>>           Duration: 00:01:11.24, start: 0.000000, bitrate: 393480 kb/s
>>           Stream #0:0(eng): Video: cfhd (CFHD / 0x44484643),
>>         yuv422p10le(tv, bt709, top coded first (swapped)), 1920x1080,
>>         SAR 1:1 DAR 16:9, 25 fps, 25 tbr, 1k tbn (default)
>>               Metadata:
>>                 HANDLER_NAME    : Apple Video Media Handler
>>                 VENDOR_ID       : appl
>>                 ENCODER         : Lavc61.3.100 cfhd
>>                 DURATION        : 00:01:11.240000000
>>
>>
>>         1)
>>         8-bit yuv420p hevc vaapi encoding using -vf
>>         'format=nv12,hwupload'
>>         ------------------------------------------------------------------
>>         ffmpeg -hide_banner -vaapi_device /dev/dri/renderD128 -i
>>         cfhd01.mkv -vf 'format=nv12,hwupload' -c:v av1_vaapi
>>         cfhd01_av1_vaapi_format_nv12.mp4
>>         ............
>>         frame= 1781 fps= 46 q=-0.0 Lsize=  104132KiB time=00:01:11.24
>>         bitrate=11974.3kbits/s speed=1.83x
>>
>>
>>         ffprobe -hide_banner cfhd01_av1_vaapi_format_nv12.mp4
>>         Input #0, mov,mp4,m4a,3gp,3g2,mj2, from
>>         'cfhd01_av1_vaapi_format_nv12.mp4':
>>           Metadata:
>>             major_brand     : isom
>>             minor_version   : 512
>>             compatible_brands: isomav01iso2mp41
>>             encoder         : Lavf61.7.100
>>           Duration: 00:01:11.24, start: 0.000000, bitrate: 11974 kb/s
>>           Stream #0:0[0x1](eng): Video: av1 (libdav1d) (Main) (av01 /
>>         0x31307661), yuv420p(tv, bt709, progressive), 1920x1080,
>>         11973 kb/s, SAR 1:1 DAR 16:9, 25 fps, 25 tbr, 12800 tbn (default)
>>               Metadata:
>>                 handler_name    : Apple Video Media Handler
>>                 vendor_id       : [0][0][0][0]
>>                 encoder         : Lavc61.19.100 av1_vaapi
>>
>>
>>         2)
>>         10-bit yuv420p10le hevc vaapi encoding using -vf
>>         'format=p010,hwupload'
>>         -----------------------------------------------------------------------
>>         ffmpeg -hide_banner -vaapi_device /dev/dri/renderD128 -i
>>         cfhd01.mkv -vf 'format=p010,hwupload' -c:v av1_vaapi
>>         cfhd01_av1_vaapi_format_p010.mp4
>>         .............
>>         frame= 1781 fps= 46 q=-0.0 Lsize=  111924KiB time=00:01:11.24
>>         bitrate=12870.3kbits/s speed=1.82x
>>
>>
>>         ffprobe -hide_banner cfhd01_av1_vaapi_format_p010.mp4
>>         Input #0, mov,mp4,m4a,3gp,3g2,mj2, from
>>         'cfhd01_av1_vaapi_format_p010.mp4':
>>           Metadata:
>>             major_brand     : isom
>>             minor_version   : 512
>>             compatible_brands: isomav01iso2mp41
>>             encoder         : Lavf61.7.100
>>           Duration: 00:01:11.24, start: 0.000000, bitrate: 12870 kb/s
>>           Stream #0:0[0x1](eng): Video: av1 (libdav1d) (Main) (av01 /
>>         0x31307661), yuv420p10le(tv, bt709, progressive), 1920x1080,
>>         12869 kb/s, SAR 1:1 DAR 16:9, 25 fps, 25 tbr, 12800 tbn (default)
>>               Metadata:
>>                 handler_name    : Apple Video Media Handler
>>                 vendor_id       : [0][0][0][0]
>>                 encoder         : Lavc61.19.100 av1_vaapi
>>
>>         3)
>>         10-bit yuv422p10le hevc_vaapi encoding using -vf
>>         'format=y210,hwupload'
>>         -----------------------------------------------------------------------
>>         ffmpeg -hide_banner -vaapi_device /dev/dri/renderD128 -i
>>         cfhd01.mkv -vf 'format=y210,hwupload' -c:v hevc_vaapi
>>         cfhd01_hevc_vaapi_format_y210.mp4
>>         frame= 1781 fps= 46 q=-0.0 Lsize=  105482KiB time=00:01:11.20
>>         bitrate=12136.3kbits/s speed=1.83x
>>
>>
>>         ffprobe -hide_banner cfhd01_hevc_vaapi_format_y210.mp4
>>         Input #0, mov,mp4,m4a,3gp,3g2,mj2, from
>>         'cfhd01_hevc_vaapi_format_y210.mp4':
>>           Metadata:
>>             major_brand     : isom
>>             minor_version   : 512
>>             compatible_brands: isomiso2mp41
>>             encoder         : Lavf61.7.100
>>           Duration: 00:01:11.24, start: 0.000000, bitrate: 12129 kb/s
>>           Stream #0:0[0x1](eng): Video: hevc (Rext) (hev1 /
>>         0x31766568), yuv422p10le(tv, bt709, progressive), 1920x1080
>>         [SAR 1:1 DAR 16:9], 12127 kb/s, 25 fps, 25 tbr, 12800 tbn
>>         (default)
>>               Metadata:
>>                 handler_name    : Apple Video Media Handler
>>                 vendor_id       : [0][0][0][0]
>>                 encoder         : Lavc61.19.100 hevc_vaapi
>>
>>
>
>
>     It was also interesting to standardize that the corresponding
>     ffmpeg syntax above works for both vaapi/qsv and hevc/av1:
>
>     - replace vaapi with qsv in 1) 2) and 3) above
>     - and if applicable: replace hevc with av1 in 1) and 2) above
>
>
>     The default bitrates used do vary a lot as seen on listed output
>     file sizes:
>
>         19M cfhd01_hevc_qsv_format_nv12.mp4
>         92M cfhd01_hevc_vaapi_format_nv12.mp4
>
>         224M cfhd01_hevc_qsv_format_p010.mp4
>         90M cfhd01_hevc_vaapi_format_p010.mp4
>
>         270M cfhd01_hevc_qsv_format_y210.mp4
>         104M cfhd01_hevc_vaapi_format_y210.mp4
>         ----------------
>
>         9,1M cfhd01_av1_qsv_format_nv12.mp4
>         102M cfhd01_av1_vaapi_format_nv12.mp4
>
>         9,1M cfhd01_av1_qsv_format_p010.mp4
>         110M cfhd01_av1_vaapi_format_p010.mp4
>
>
>
> yes, last four lines seem say that qsv and vaapi AV1 encoders use 
> *wildly* different defaults for bitrate ....
>

Yes, and it looks like especially av1_qsv is highly optimized, because 
it is not bad to look at. The 10x larger av1_vaapi is at bit sharper and 
smoother at pan/tilt movements (I used tripod for the original source 
camcording to a HDMI connected BD hyperdeck shuttle. Later I transcoded 
this test file to cfhd as intermediate format with ffmpeg).
Another thing I mentioned in my first post here, is that the encoding 
speed in all these cases independent of bitrate, looks to be about the 
same 45-46 fps

I add here the ffprobe outputs to compare for the two latter lines:

9,1M cfhd01_av1_qsv_format_p010.mp4
ffprobe -hide_banner cfhd01_av1_qsv_format_p010.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'cfhd01_av1_qsv_format_p010.mp4':
   Metadata:
     major_brand     : isom
     minor_version   : 512
     compatible_brands: isomav01iso2mp41
     encoder         : Lavf61.7.100
   Duration: 00:01:11.24, start: 0.000000, bitrate: 1062 kb/s
   Stream #0:0[0x1](eng): Video: av1 (libdav1d) (Main) (av01 / 
0x31307661), yuv420p10le(tv, bt709, progressive), 1920x1080, 1061 kb/s, 
SAR 1:1 DAR 16:9, 25 fps, 25 tbr, 12800 tbn (default)
       Metadata:
         handler_name    : Apple Video Media Handler
         vendor_id       : [0][0][0][0]
         encoder         : Lavc61.19.100 av1_qsv
-----------------

110M   cfhd01_av1_vaapi_format_p010.mp4
ffprobe -hide_banner cfhd01_av1_vaapi_format_p010.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'cfhd01_av1_vaapi_format_p010.mp4':
   Metadata:
     major_brand     : isom
     minor_version   : 512
     compatible_brands: isomav01iso2mp41
     encoder         : Lavf61.7.100
   Duration: 00:01:11.24, start: 0.000000, bitrate: 12870 kb/s
   Stream #0:0[0x1](eng): Video: av1 (libdav1d) (Main) (av01 / 
0x31307661), yuv420p10le(tv, bt709, progressive), 1920x1080, 12869 kb/s, 
SAR 1:1 DAR 16:9, 25 fps, 25 tbr, 12800 tbn (default)
       Metadata:
         handler_name    : Apple Video Media Handler
         vendor_id       : [0][0][0][0]
         encoder         : Lavc61.19.100 av1_vaapi



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cinelerra-gg.org/pipermail/cin/attachments/20241103/0a0876cb/attachment-0001.htm>


More information about the Cin mailing list