[Cin] cingg hevc_vaapi rendering on Arc A750 gpu

Terje J. Hanssen terjejhanssen at gmail.com
Sun Sep 15 17:55:44 CEST 2024



On 15.09.2024 14:45, Andrew Randrianasulu wrote:
>
>
> вс, 15 сент. 2024 г., 15:30 Terje J. Hanssen <terjejhanssen at gmail.com>:
>
>
>     Den 15.09.2024 04:23, skrev Andrew Randrianasulu:
>>
>>
>>     сб, 14 сент. 2024 г., 22:42 Terje J. Hanssen via Cin
>>     <cin at lists.cinelerra-gg.org>:
>>
>>         Two simple tests I got working Cinelerra Infinity - built:
>>         Sep  8 2024 10:37:25 (rpm installation)
>>         on Leap 15.6 on i7-12700KF + Arc A750 gpu
>>
>>         As seen below, quite fast rendering:
>>
>>           * 207 fps for hdv.m2t  (yuv420p) input -> yuvj420p
>>           * 125 fps for proreshq.mov (yuv422p10le) -> yuvj420p
>>             (10-bit  to 8-bit color depth)
>>
>>
>>         1)
>>         hdv.m2t
>>
>>         Stream #0:0[0x810]: Video: mpeg2video (Main) ([2][0][0][0] /
>>         0x0002), yuv420p(tv, bt709, top first), 1440x1080 [SAR 4:3
>>         DAR 16:9], 25000 kb/s, 25 fps, 25 tbr, 90k tbn
>>               Side data:
>>                 cpb: bitrate max/min/avg: 25000000/0/0 buffer size:
>>         7340032 vbv_delay: N/A
>>           Stream #0:1[0x814]: Audio: mp2 (mp3float) ([3][0][0][0] /
>>         0x0003), 48000 Hz, stereo, fltp, 384 kb/s
>>
>>         -> hevc_vaapi.mp4
>>
>>         ** rendered 5972 frames in 28.721 secs, 207.931 fps
>>         audio0 pad 64 0 (64)
>>
>>         tream #0:0[0x1](und): Video: hevc (Main) (hev1 / 0x31766568),
>>         yuvj420p(pc, bt709/unknown/unknown, top coded first
>>         (swapped)), 1440x1080 [SAR 4:3 DAR 16:9], 11716 kb/s, 25 fps,
>>         25 tbr, 12800 tbn (default)
>>               Metadata:
>>                 handler_name    : VideoHandler
>>                 vendor_id       : [0][0][0][0]
>>           Stream #0:1[0x2](eng): Audio: aac (LC) (mp4a / 0x6134706D),
>>         48000 Hz, stereo, fltp, 129 kb/s (default)
>>
>>
>>         2)
>>         hd.mov
>>         Stream #0:0[0x1](eng): Video: prores (HQ) (apch /
>>         0x68637061), yuv422p10le(bt709, top coded first (swapped)),
>>         1920x1080, 182130 kb/s, SAR 1:1 DAR 16:9, 25 fps, 25 tbr,
>>         2500 tbn (default)
>>               Metadata:
>>                 creation_time   : 2016-02-23T23:49:21.000000Z
>>                 handler_name    : Apple Video Media Handler
>>                 vendor_id       : appl
>>                 encoder         : Apple ProRes 422 (HQ)
>>           Stream #0:1[0x2](eng): Audio: pcm_s24le (lpcm /
>>         0x6D63706C), 48000 Hz, 16 channels, s32 (24 bit), 18432 kb/s
>>         (default)
>>
>>         -> hevc_vaapi.mp4
>>
>>         ** rendered 1781 frames in 14.188 secs, 125.529 fps
>>         audio0 pad 128 0 (128)
>>
>>         Stream #0:0[0x1](und): Video: hevc (Main) (hev1 /
>>         0x31766568), yuvj420p(pc, bt709/unknown/unknown, top coded
>>         first (swapped)), 1920x1080 [SAR 1:1 DAR 16:9], 11427 kb/s,
>>         25 fps, 25 tbr, 12800 tbn (default)
>>               Metadata:
>>                 handler_name    : VideoHandler
>>                 vendor_id       : [0][0][0][0]
>>           Stream #0:1[0x2](eng): Audio: aac (LC) (mp4a / 0x6134706D),
>>         48000 Hz, 16 channels, fltp, 378 kb/s (default)
>>
>>
>>
>>     I think due to some strangeness with full (pc, jpeg) data levels
>>     currently under investigation  you better to retry with color
>>     range set to MPEG?
>
>
>     Yeah, thanks. I changed Settings>Prefs>Appearance Color Range to
>     MPEG, and the ffprobe output color range looks more in accordance
>     with the input: yuv420p(tv, bt709 ....)
>
>     2)
>     ffprobe -hide_banner hd01_hevc_vaapi.mp4
>     Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'hd01_hevc_vaapi.mp4':
>       Metadata:
>         major_brand     : isom
>         minor_version   : 512
>         compatible_brands: isomiso2mp41
>         encoder         : Lavf61.1.100
>       Duration: 00:01:11.28, start: 0.000000, bitrate: 11603 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], 11225 kb/s, 25 fps, 25 tbr, 12800
>     tbn (default)
>           Metadata:
>             handler_name    : VideoHandler
>             vendor_id       : [0][0][0][0]
>       Stream #0:1[0x2](eng): Audio: aac (LC) (mp4a / 0x6134706D),
>     48000 Hz, 16 channels, fltp, 378 kb/s (default)
>           Metadata:
>             handler_name    : SoundHandler
>             vendor_id       : [0][0][0][0]
>
>
>     But still  yuv422p10le input is changed automatic to yuv420p output.
>     Actually in Cingg there is only one single preset "hevc_vaapi.mp4"
>     available to select.
>
>
> yeah, if my understanding of our code is correct vaapi encoding (and 
> may be decoding, too?) limited to yuv420p. I'll look at OBS source to 
> see if this can be easily fixed, but again, I have in HW to test .....

I can test on my HW, if Andrey can make the rpm package ...


To sum up my current hevc_vaapi with MPEG color range encoding
on cingg built: Sep  8 2024 10:37:25 so far:

* on i7-12700KF + Arc A750 gpu (DG2):

1) HDV.m2t -> hevc_vaapi.mp4
** rendered 5972 frames in 24.442 secs, 244.334 fps

2) HD.mov -> hevc_vaapi.mp4
** rendered 1781 frames in 18.760 secs, 94.936 fps


vainfo | grep 10
libva info: VA-API version 1.20.0
libva info: Trying to open /usr/lib64/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_20
libva info: va_openDriver() returns 0
       VAProfileHEVCMain10             :    VAEntrypointVLD
       VAProfileHEVCMain10             :    VAEntrypointEncSliceLP
       VAProfileHEVCMain422_10         :    VAEntrypointVLD
       VAProfileHEVCMain422_10         :    VAEntrypointEncSliceLP
       VAProfileHEVCMain444_10         :    VAEntrypointVLD
       VAProfileHEVCMain444_10         :    VAEntrypointEncSliceLP
       VAProfileHEVCSccMain10          :    VAEntrypointVLD
       VAProfileHEVCSccMain10          :    VAEntrypointEncSliceLP
       VAProfileHEVCSccMain444_10      :    VAEntrypointVLD
       VAProfileHEVCSccMain444_10      :    VAEntrypointEncSliceLP

--------------------

or 3.3x - 2.1x faster than a comparable Vaapi test

* on KabyLake i7-8550U/UHD 620 iGPU

1) HDV.m2t -> hevc_vaapi.mp4
** rendered 5971 frames in 80.860 secs, 73.844 fps

2) HD.mov -> hevc_vaapi.mp4
** rendered 1781 frames in 39.723 secs, 44.835 fps


vainfo | grep 10
libva info: VA-API version 1.20.0
libva info: Trying to open /usr/lib64/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_20
libva info: va_openDriver() returns 0
       VAProfileHEVCMain10             :    VAEntrypointVLD
       VAProfileHEVCMain10             :    VAEntrypointEncSlice


>
> For now for hevc10 hw encode I can only suggest to create fifo file 
> with mkfifo and point ffmpeg/y4m renderer to it (select supported 
> pixformat from dropbox there). From second terminal run system's 
> ffmpeg set up for hevc10 encode (via any method available).
>
> You can start with 1 sec long test sequences in y4m as normal files 
> just for initial finding of right ffmpeg command line.
>
> You also in theory can setup something like v408 mov (qt) with pcm 
> audio and faststart flag, and use this as on the fly lossless 
> transport between cingg and ffmpeg, but I personally not tested that.
>
>
>
>
>
>     By showing information from the VA-API driver:
>
>       * VLD means the card is capable to decode this format
>       * Enc means it can encode this format.
>
>     vainfo
>     Trying display: wayland
>     Trying display: x11
>     libva info: VA-API version 1.20.0
>     libva info: Trying to open /usr/lib64/dri/iHD_drv_video.so
>     libva info: Found init function __vaDriverInit_1_20
>     libva info: va_openDriver() returns 0
>     vainfo: VA-API version: 1.20 (libva 2.20.1)
>     vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics
>     - 24.1.3 ()
>     vainfo: Supported profile and entrypoints
>           VAProfileNone                   : VAEntrypointVideoProc
>           VAProfileNone                   : VAEntrypointStats
>           VAProfileMPEG2Simple            : VAEntrypointVLD
>           VAProfileMPEG2Main              : VAEntrypointVLD
>           VAProfileH264Main               : VAEntrypointVLD
>           VAProfileH264Main               : VAEntrypointEncSliceLP
>           VAProfileH264High               : VAEntrypointVLD
>           VAProfileH264High               : VAEntrypointEncSliceLP
>           VAProfileJPEGBaseline           : VAEntrypointVLD
>           VAProfileJPEGBaseline           : VAEntrypointEncPicture
>           VAProfileH264ConstrainedBaseline: VAEntrypointVLD
>           VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
>           VAProfileHEVCMain               : VAEntrypointVLD
>           VAProfileHEVCMain               : VAEntrypointEncSliceLP
>           VAProfileHEVCMain10             : VAEntrypointVLD
>           VAProfileHEVCMain10             : VAEntrypointEncSliceLP
>           VAProfileVP9Profile0            : VAEntrypointVLD
>           VAProfileVP9Profile0            : VAEntrypointEncSliceLP
>           VAProfileVP9Profile1            : VAEntrypointVLD
>           VAProfileVP9Profile1            : VAEntrypointEncSliceLP
>           VAProfileVP9Profile2            : VAEntrypointVLD
>           VAProfileVP9Profile2            : VAEntrypointEncSliceLP
>           VAProfileVP9Profile3            : VAEntrypointVLD
>           VAProfileVP9Profile3            : VAEntrypointEncSliceLP
>           VAProfileHEVCMain12             : VAEntrypointVLD
>           VAProfileHEVCMain422_10         : VAEntrypointVLD
>           VAProfileHEVCMain422_10         : VAEntrypointEncSliceLP
>           VAProfileHEVCMain422_12         : VAEntrypointVLD
>           VAProfileHEVCMain444            : VAEntrypointVLD
>           VAProfileHEVCMain444            : VAEntrypointEncSliceLP
>           VAProfileHEVCMain444_10         : VAEntrypointVLD
>           VAProfileHEVCMain444_10         : VAEntrypointEncSliceLP
>           VAProfileHEVCMain444_12         : VAEntrypointVLD
>           VAProfileHEVCSccMain            : VAEntrypointVLD
>           VAProfileHEVCSccMain            : VAEntrypointEncSliceLP
>           VAProfileHEVCSccMain10          : VAEntrypointVLD
>           VAProfileHEVCSccMain10          : VAEntrypointEncSliceLP
>           VAProfileHEVCSccMain444         : VAEntrypointVLD
>           VAProfileHEVCSccMain444         : VAEntrypointEncSliceLP
>           VAProfileAV1Profile0            : VAEntrypointVLD
>           VAProfileAV1Profile0            : VAEntrypointEncSliceLP
>           VAProfileHEVCSccMain444_10      : VAEntrypointVLD
>           VAProfileHEVCSccMain444_10      : VAEntrypointEncSliceLP
>
>     -----------------
>
>     I also did a short attempt with the Cingg Appimage, but as I think
>     has been said before: HWA want work there.
>
>     Cinelerra Infinity - built: Aug 25 2024 13:42:19
>
>     [AVHWDeviceContext @ 0x7f3a982eebc0] libva:
>     /usr/lib64/dri/iHD_drv_video.so has no function __vaDriverInit_1_0
>     [AVHWDeviceContext @ 0x7f3a982eebc0] libva:
>     /usr/lib64/dri/i965_drv_video.so has no function __vaDriverInit_1_0
>     [AVHWDeviceContext @ 0x7f3a982eebc0] Failed to initialise VAAPI
>     connection: -1 (unknown libva error).
>     Failed to create a HW device.
>      err: Inn/ut-feil
>     [hevc_vaapi @ 0x7f3a9859df00] A hardware frames reference is
>     required to associate the encoding device.
>     FFMPEG::open_encoder err: Ugyldig argument
>     int FFMPEG::open_encoder(const char*, const char*):
>     Åpne mislyktes
>     hevc_vaapi:/home/terje/Applications/hdv09_04_hevc_vaapi+aac.mp4
>     Render::render_single: Session finished.
>
>
>>
>>
>>
>>         -- 
>>         Cin mailing list
>>         Cin at lists.cinelerra-gg.org
>>         https://lists.cinelerra-gg.org/mailman/listinfo/cin
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cinelerra-gg.org/pipermail/cin/attachments/20240915/74aeab1b/attachment-0001.htm>


More information about the Cin mailing list