Den 21.12.2024 03:17, skrev Andrew Randrianasulu:


пт, 20 дек. 2024 г., 21:58 Terje J. Hanssen <[email protected]>:




    Den 20.12.2024 17:40, skrev Andrew Randrianasulu:


    пт, 20 дек. 2024 г., 19:20 Terje J. Hanssen via Cin
    <[email protected]>:

        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
        <[email protected]>:

            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.

Yeah, hevc_nvenc turns out to have just the same tff interlace issue as we experienced with qsv. At first I just tried to change Cingg Setting | Fomat Video to "Not interlaced" and the interlaced hdv file rendered OK.
Tested also that a deinterlaced (progressive) version also rendered ok.

Loaded also a bff interlaced SD.dv file that Cingg Setting recognized as "Unknown", did render ok without manual change.

Maybe also h265_nvenc preset at opportunity also better should be renamed to hevc_nvenc in accordance with ffmpeg's use.


















        ===================

        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
        [email protected]
        https://lists.cinelerra-gg.org/mailman/listinfo/cin


-- 
Cin mailing list
[email protected]
https://lists.cinelerra-gg.org/mailman/listinfo/cin

Reply via email to