[Cin] FFmpeg supported QSV pixel formats and profiles

Terje J. Hanssen terjejhanssen at gmail.com
Sat Oct 26 18:31:46 CEST 2024




Den 26.10.2024 17:26, skrev Terje J. Hanssen:
>
>
>
> Den 26.10.2024 17:10, skrev Andrew Randrianasulu:
>>
>>
>> сб, 26 окт. 2024 г., 17:39 Terje J. Hanssen <terjejhanssen at gmail.com>:
>>
>>
>>
>>
>>     Den 26.10.2024 02:12, skrev Andrew Randrianasulu:
>>>
>>>
>>>     сб, 26 окт. 2024 г., 03:06 Terje J. Hanssen via Cin
>>>     <cin at lists.cinelerra-gg.org>:
>>>
>>>           An overview over the system FFmpeg 7.1 supported QSV pixel
>>>         formats and profiles:
>>>
>>>
>>>         ffmpeg -hide_banner -encoders | grep qsv
>>>          V..... av1_qsv              AV1 (Intel Quick Sync Video
>>>         acceleration) (codec av1)
>>>          V..... h264_qsv             H.264 / AVC / MPEG-4 AVC /
>>>         MPEG-4 part 10 (Intel Quick Sync Video acceleration) (codec
>>>         h264)
>>>          V..... hevc_qsv             HEVC (Intel Quick Sync Video
>>>         acceleration) (codec hevc)
>>>          V..... mjpeg_qsv            MJPEG (Intel Quick Sync Video
>>>         acceleration) (codec mjpeg)
>>>          V..... mpeg2_qsv            MPEG-2 video (Intel Quick Sync
>>>         Video acceleration) (codec mpeg2video)
>>>          V..... vp9_qsv              VP9 video (Intel Quick Sync
>>>         Video acceleration) (codec vp9)
>>>
>>>
>>>         ffmpeg -hide_banner -h encoder=av1_qsv | egrep
>>>         'Supported|profile|main|high|professional'
>>>             Supported hardware devices: qsv qsv qsv
>>>             Supported pixel formats: nv12 p010le qsv
>>>           -profile           <int> E..V....... (from 0 to INT_MAX)
>>>         (default unknown)
>>>              main            1 E..V.......
>>>
>>>
>>>         ffmpeg -hide_banner -h encoder=hevc_qsv | egrep
>>>         'Supported|profile|main|high|professional'
>>>             Supported hardware devices: qsv qsv qsv
>>>             Supported pixel formats: nv12 p010le p012le yuyv422
>>>         y210le qsv bgra x2rgb10le vuyx xv30le
>>>           -profile           <int> E..V....... (from 0 to INT_MAX)
>>>         (default unknown)
>>>              main            1 E..V.......
>>>              main10          2 E..V.......
>>>              mainsp          3 E..V.......
>>>           -tier              <int> E..V....... Set the encoding tier
>>>         (only level >= 4 can support high tier) (from 0 to 256)
>>>         (default high)
>>>              main            0 E..V.......
>>>              high            256 E..V.......
>>>
>>>
>>>         ffmpeg -hide_banner -h encoder=h264_qsv | egrep
>>>         'Supported|profile|main|high|professional'
>>>             Supported hardware devices: qsv qsv qsv
>>>             Supported pixel formats: nv12 qsv
>>>           -profile           <int> E..V....... (from 0 to INT_MAX)
>>>         (default unknown)
>>>              main            77 E..V.......
>>>              high            100 E..V.......
>>>
>>>
>>>
>>>     from this we can conclude av1/hevc should have 10bit option  ...
>>>
>>>     probably writing down numerical values for profiles (high,
>>>     main...) for each codec is also good idea.
>>>
>>
>>     A reference and overview table for QSV capabilties for each iGPU
>>     and dGPU generation is here
>>     https://en.wikipedia.org/wiki/Intel_Quick_Sync_Video#Hardware_decoding_and_encoding
>>
>>     And finally, after much trying and failing, I was able to prove
>>     that true 10bit 422 color depth hevc_qsv encoding is possible
>>     with my system ffmpeg 7.1
>>     .
>>     While pixel format p010le results in "just" 10bit yuv420p, the
>>     clue is to to use either (trying this for av1_qsv, auto- switch
>>     to 8bit nv12):
>>
>>         -pix_fmt y210le
>>         or
>>         -v format=yuv422p010le
>>
typo, should be
         -vf format=yuv422p10le

>>     Code example:
>>
>>     ffmpeg -hide_banner -hwaccel_output_format qsv -i cfhd01.mkv -c:v
>>     hevc_qsv -pix_fmt y210le cfhd01_hevc_qsv_pxfmt_y210le.mp4
>>
>>     Input file:
>>
>>     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
>>
>>     Output file:
>>
>>     ffprobe -hide_banner cfhd01_hevc_qsv_pxfmt_y210le.mp4
>>     Input #0, mov,mp4,m4a,3gp,3g2,mj2, from
>>     'cfhd01_hevc_qsv_pxfmt_y210le.mp4':
>>       Metadata:
>>         major_brand     : isom
>>         minor_version   : 512
>>         compatible_brands: isomiso2mp41
>>         encoder         : Lavf61.7.100
>>       Duration: 00:01:11.24, start: 0.000000, bitrate: 31770 kb/s
>>       Stream #0:0[0x1](eng): Video: hevc (Rext) (hev1 / 0x31766568),
>>     yuv422p10le(tv, bt709, progressive), 1920x1080 [SAR 1:1 DAR
>>     16:9], 31767 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_qsv
>>
>>
>>
>> Good to know.
>>
>> Hopefully if we on the right track with "just" 10bit yuv420 encoding 
>> we will find way to stuff more complex cases in there too ....
>>
>>
>> Does it work with vaapi encoder (system ffmpeg as cli application) too?
>
> I am testing similar now with vaapi and will report on that thread soon.
> The above i/o files and simple code line are video only, to avoid 
> confusing from 16ch audio in the prores_hq.mov
>>
>>
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cinelerra-gg.org/pipermail/cin/attachments/20241026/6719a911/attachment-0001.htm>


More information about the Cin mailing list