[Cin] Testing Nvidia Nvenc encoding

Andrew Randrianasulu randrianasulu at gmail.com
Sat Dec 21 03:17:30 CET 2024


пт, 20 дек. 2024 г., 21:58 Terje J. Hanssen <terjejhanssen at gmail.com>:

>
>
>
> Den 20.12.2024 17:40, skrev Andrew Randrianasulu:
>
>
>
> пт, 20 дек. 2024 г., 19:20 Terje J. Hanssen via Cin <
> cin at lists.cinelerra-gg.org>:
>
>> Continued and extracted from
>> [Cin] Video accelerators support, builds and use
>> https://lists.cinelerra-gg.org/pipermail/cin/2024-December/009226.html
>>
>> Den 12.12.2024 00:54, skrev Terje J. Hanssen:
>>
>>
>> Den 11.12.2024 23:56, skrev Andrew Randrianasulu:
>>
>>
>> чт, 12 дек. 2024 г., 00:43 Terje J. Hanssen via Cin <
>> cin at lists.cinelerra-gg.org>:
>>
>>> To clarify some pieces once again, I put up some basic statements or
>>> questions:
>>>
>>> ..........snip
>>
>>
>>>> So what happened when adding oneVPL (qsv) support to the build system;
>>>> dynamic linked to system or static added embedded into the build?
>>>>
>>>
>>> dynamic
>>>
>>> .....snip
>>>
>>> Could in principle similar methods be extended to include broader video
>>>> acceleration support for AMD/amf and NVIDIA/nvenc?
>>>>
>>>
>>> nvenc already supported, I think? At some point I tried it with GF710 on
>>> livedvd and it was working for me. try to test it if you have proprietary
>>> nvidia drivers.
>>>
>>
>> Apparently Cingg then should supports NVENC via some dynamic linked
>> external Nvidia lib, equivalent to what we did for for QSV via oneVPL
>> support.
>> While h264_nvenc.mp4 rendering works, h265_nvenc.mp4 fails with the
>> following errors, see detail below:
>>
>> [hevc_nvenc @ 0x7ff79c015640] No capable devices found
>> FFMPEG::open_encoder  err: Generic error in an external library
>>
>>
>>
>> Yes, seemingly:
>> Cin/bin/ffmpeg/video> ls *nvenc*
>> h264_nvenc.mp4  h264_nvenc.qt  h265_nvenc.mp4
>>
>>
>> NVENC Presets
>>
>> cat h264_nvenc.mp4
>> mp4 h264_nvenc
>> # encode for nvidia graphics hw only
>> preset medium
>> profile main
>>
>> cat h265_nvenc.mp4
>> mp4 hevc_nvenc
>> # encode for nvidia graphics hw only
>> preset medium
>> profile main
>>
>>
>> Maybe I can do an attempt later, if I get life in the old GeForce GTX 960
>> in my Skylake workstation.
>>
>>
>> Setup
>> ----------
>> Booted BIOS and checked that the integrated Intel gpu and multimonitor
>> setup were  enabled.
>> Installed the suse-prime package for nvidia/intel gpu selection (for
>> NVIDIA optimus laptops with bbswitch support) and could then run the command
>>
>> prime-select on-demand
>>
>> and verified that both the Intel and Nvidia drivers were available
>>
>> inxi -G
>> Graphics:
>>   Device-1: Intel HD Graphics 530 driver: i915 v: kernel
>>   Device-2: NVIDIA GM206 [GeForce GTX 960] driver: nvidia v: 550.135
>>   Display: wayland server: X.org v: 1.21.1.14 with: Xwayland v: 24.1.4
>>     compositor: gnome-shell v: 47.2 driver: X: loaded: modesetting,nvidia
>>     unloaded: fbdev,vesa dri: iris gpu: i915 resolution: 1920x1080~60Hz
>>   API: OpenGL v: 4.6 vendor: intel mesa v: 24.3.1 renderer: Mesa Intel HD
>>     Graphics 530 (SKL GT2)
>>   API: EGL Message: EGL data requires eglinfo. Check --recommends.
>>
>> ==============
>>
>>
>> Test h264_nvenc.mp4
>> -------------------
>> OK
>>
>> ./CinGG-20241120-x86_64.AppImage
>> Cinelerra Infinity - built: Nov 20 2024 22:06:05
>>
>> Loads hdv09_04.m27
>> Shift-R
>> mp4
>> h264_nvenc (video preset)
>> pixels: yuv420p (default)
>>
>> ** rendered 5972 frames in 27.391 secs, 218.028 fps
>>
>> ffprobe -hide_banner hdv09_04_h264_nvenc_yuv420p.mp4
>>   Stream #0:0[0x1](und): Video: h264 (Main) (avc1 / 0x31637661),
>> yuvj420p(pc, smpte170m/unknown/unknown), 1440x1080 [SAR 4:3 DAR 16:9], 2156
>> kb/s, 25 fps, 25 tbr, 12800 tbn (default)
>>
>> -------
>>
>> Tried also h264_nvenc with
>> pixels: nv12
>> which for slowed down to 45% speed !?
>>
>> Render::render_single: Session finished.
>> ** rendered 5972 frames in 60.368 secs, 98.927 fps
>>
>> ffprobe -hide_banner hdv09_04_h264_nvenc_nv12.mp4
>>   Stream #0:0[0x1](und): Video: h264 (Main) (avc1 / 0x31637661),
>> yuvj420p(pc, smpte170m/unknown/unknown), 1440x1080 [SAR 4:3 DAR 16:9], 2154
>> kb/s, 25 fps, 25 tbr, 12800 tbn (default)
>>
>
> ======
>
> for hevc nvenc test may be try to set mjpeg colorspace instead of jpeg?
>
>
> Tried the other option MPEG, and also BT.709, which both works for
> h264_nvenc, but has no effect with regards to the hevc errors.
>
> Tried also to comment out each and both of the h265_nvenc preset's
> preset medium
> profile main
>
> but with no effect.
>
> So far it looks for me that there is something wrong with Cingg's
> hevc_nvenc encoding.
>


most likely our nv headers drifted from that ffmpeg-7.0/proprietary driver
assumes at runtime.

you can try to install something like nv-codec-headers and then add

--disable-ffnvcodec

configure switch to cingg (disables our copy of nv headers from 2020) and
see if ffmpeg compilation picked up system's headers.

BUT you also can test progressive (not interlaced) file, like you did with
qsv.








>
>
>> ===================
>>
>> Test h265_nvenc.mp4
>> -------------------
>>
>> Did not render, neither with pixels yuv420p nor nv12:
>> FFMPEG::open_encoder  err: Generic error in an external library
>>
>> [hevc_nvenc @ 0x7ff79c015640] No capable devices found
>> FFMPEG::open_encoder  err: Generic error in an external library
>> int FFMPEG::open_encoder(const char*, const char*):
>> open failed
>> hevc_nvenc:/run/media/terje/video/hdv09_04_h265_nvenc_yuv420p.mp4
>> Render::render_single: Session finished.
>>
>> ===================
>>
>> GeForce GTX 960 (GM206) should be capable to manage NVENC h265/hevc YUV
>> 420 encoding
>> https://en.wikipedia.org/wiki/Nvidia_NVENC#Third_generation,_Maxwell_GM20x
>>
>> https://developer.nvidia.com/video-encode-and-decode-gpu-support-matrix-new
>>
>> Tested hevc_nvenc full transcoding with FFmpeg 7.1
>>
>> ffmpeg -hide_banner -hwaccel cuda -hwaccel_output_format cuda -i
>> hdv09_04.m2t -c:v hevc_nvenc hdv09_04_ff_hevc_nvenc.mp4
>>
>> frame= 5963 fps=270 q=34.0 Lsize=   64316KiB time=00:03:58.77
>> bitrate=2206.6kbits/s speed=10.8x
>> [aac @ 0x55a38d4c4d40] Qavg: 488.890
>>
>> ------------------
>>
>> ffprobe -hide_banner hdv09_04_ff_hevc_nvenc.mp4
>> Stream #0:0[0x1](und): Video: hevc (Main) (hev1 / 0x31766568),
>> yuv420p(tv, bt709, top coded first (swapped)), 1440x1080 [SAR 4:3 DAR
>> 16:9], 2074 kb/s, 24.99 fps, 25 tbr, 12800 tbn (default)
>>
>>
>>
>>
>>
>>
>> --
>> 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/20241221/bb61a979/attachment.htm>


More information about the Cin mailing list