[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