Den 28.09.2024 18:19, skrev Andrew Randrianasulu:


сб, 28 сент. 2024 г., 19:13 Terje J. Hanssen <[email protected]>:



    Den 28.09.2024 17:42, skrev Andrew Randrianasulu:


    сб, 28 сент. 2024 г., 18:35 Terje J. Hanssen
    <[email protected]>:



        Den 28.09.2024 01:22, skrev Andrew Randrianasulu:


        пт, 27 сент. 2024 г., 23:27 Terje J. Hanssen
        <[email protected]>:



            Den 27.09.2024 19:45, skrev Andrew Randrianasulu:


            пт, 27 сент. 2024 г., 18:55 Terje J. Hanssen
            <[email protected]>:



                Den 27.09.2024 12:44, skrev Andrew Randrianasulu:


                пт, 27 сент. 2024 г., 12:40 Terje J. Hanssen
                <[email protected]>:



                    Den 26.09.2024 01:18, skrev Andrew Randrianasulu:


                    On Thu, Sep 26, 2024 at 2:06 AM Terje J.
                    Hanssen <[email protected]> wrote:



                        Den 25.09.2024 23:22, skrev Andrew
                        Randrianasulu:


                        чт, 26 сент. 2024 г., 00:16 Terje J.
                        Hanssen <[email protected]>:



                            Den 25.09.2024 21:33, skrev Andrew
                            Randrianasulu:


                            ср, 25 сент. 2024 г., 18:25 Terje
                            J. Hanssen <[email protected]>:



                                Den 25.09.2024 00:27, skrev
                                Andrew Randrianasulu:
                                try this git patch, do not
                                forgot to make install again,
                                or put profiles in
                                bin/ffmpeg/video folder manually.

                                # cd /home/cinelerra/cinelerra-5.1
                                # mv
                                /home/terje/0001-Qsv-encoders-for-testing.patch
                                .

                                # git am
                                0001-Qsv-encoders-for-testing.patch
                                Applying: Qsv encoders for testing


                                make install > make_install.log 2&1



                            make install > make_install.log 2>&1 ?

                            Sorry. I should cleanup all ">" with
                            Find & Replace in my note, and
                            oversaw here should be two of them
                            in this  command ;(

                            Now make install went through
                            without faults as I could see, but
                            attach it by email again.

                            But unhappily, no success with
                            testing Cingg Qsv Rendering.
                            All attempts so far breaks with the
                            output below:

                                FFMPEG::open_encoder err:
                                Internal bug, should not have
                                happened
                                int FFMPEG::open_encoder(const
                                char*, const char*):

                            ----------
                            localhost:/home/cinelerra/cinelerra-5.1
                            # bin/cin
                            Cinelerra Infinity - built: Sep 23
                            2024 10:31:07
                            ----------
                            1)
                            Loaded hdv09_04.m2t
                            Render:
                            Output to file:
                            /Videoklipp/QSV/hdv09_04_h264_qsv.mp4
                            File format: FFMPEG-mp4
                            Compression: h264_qsv.mp4
                            Pixels: qsv

                            libva info: VA-API version 1.22.0
                            libva info: Trying to open
                            /usr/lib64/dri/iHD_drv_video.so
                            libva info: Found init function
                            __vaDriverInit_1_21
                            libva info: va_openDriver() returns 0
                            libva info: VA-API version 1.22.0
                            libva info: Trying to open
                            /usr/lib64/dri/iHD_drv_video.so
                            libva info: Found init function
                            __vaDriverInit_1_21
                            libva info: va_openDriver() returns 0

                            FFMPEG::open_encoder  err: Internal
                            bug, should not have happened
                            int FFMPEG::open_encoder(const
                            char*, const char*):
                            open failed
                            h264_qsv:/Videoklipp/QSV/hdv09_04_h264_qsv.mp4
                            Render::render_single: Session finished.
                            --------------
                            2a)
                            Loaded hdv09_04.m2t
                            Render:
                            Output to file:
                            /Videoklipp/QSV/hdv09_04_h265_qsv.mp4
                            File format: FFMPEG-mp4

                            Compression: h265_qsv.mp4
                            Pixels: qsv

                            [hevc_qsv encoder @ 0x7f44e0d0bd80]
                            [Eval @ 0x7f44e57eb6f0] Undefined
                            constant or missing '(' in 'high'
                            [hevc_qsv encoder @ 0x7f44e0d0bd80]
                            Unable to parse option value "high"
                            [hevc_qsv encoder @ 0x7f44e0d0bd80]
                            Error setting option profile to
                            value high.
                            FFMPEG::open_encoder  err: Invalid
                            argument
                            int FFMPEG::open_encoder(const
                            char*, const char*):
                            open failed
                            hevc_qsv:/Videoklipp/QSV/hdv09_04_h265_qsv.mp4
                            Render::render_single: Session finished.


                        # profile=high
                        Pixels: qsv (yuv420 isn't available)

                        Didn't render:
                        FFMPEG::open_encoder  err: Internal bug,
                        should not have happened
                        int FFMPEG::open_encoder(const char*,
                        const char*):
                        open failed
                        hevc_qsv:/Videoklipp/QSV/hdv09_04_h265_qsv.mp4
                        Render::render_single: Session finished.



                            ----------------
                            2b)
                            Compression: h265_qsv.mp4
                            Pixels: p010le

                            [hevc_qsv encoder @ 0x7f93dcdb3c00]
                            [Eval @ 0x7f93cbff06f0] Undefined
                            constant or missing '(' in 'high'
                            [hevc_qsv encoder @ 0x7f93dcdb3c00]
                            Unable to parse option value "high"
                            [hevc_qsv encoder @ 0x7f93dcdb3c00]
                            Error setting option profile to
                            value high.
                            FFMPEG::open_encoder  err: Invalid
                            argument
                            int FFMPEG::open_encoder(const
                            char*, const char*):
                            open failed
                            hevc_qsv:/Videoklipp/QSV/hdv09_04_h265_qsv.mp4
                            Render::render_single: Session finished.


                        Some progress:

                        # profile=high
                        Pixels: yuvy422 (yuv420 isn't available)
                        Settings>Appearance: BT.709/MPEG2

                        Rendered:
                        Render::render_single: Session finished.
                        ** rendered 5972 frames in 33.999 secs,
                        175.652 fps
                        audio0 pad 64 0 (64)

                        VLC playback OK

                        ffprobe -hide_banner hdv09_04_h265_qsv.mp4
                        Input #0, mov,mp4,m4a,3gp,3g2,mj2, from
                        'hdv09_04_h265_qsv.mp4':
                          Metadata:
                        major_brand : isom
                        minor_version : 512
                        compatible_brands: isomiso2mp41
                        encoder : Lavf61.1.100
                          Duration: 00:03:58.88, start: 0.000000,
                        bitrate: 3359 kb/s
                          Stream #0:0[0x1](und): Video: hevc
                        (Rext) (hev1 / 0x31766568), yuv422p(tv,
                        bt709/unknown/unknown, top coded first
                        (swapped)), 1440x1080 [SAR 4:3 DAR 16:9],
                        3223 kb/s, 25 fps, 25 tbr, 12800 tbn
                        (default)
                        Metadata:
                        handler_name : VideoHandler
                        vendor_id : [0][0][0][0]
                          Stream #0:1[0x2](und): Audio: aac (LC)
                        (mp4a / 0x6134706D), 48000 Hz, stereo,
                        fltp, 129 kb/s (default)
                        Metadata:
                        handler_name : SoundHandler
                        vendor_id : [0][0][0][0]



                    ah, so it need tv range .. try also with
                    Pixels nv12 (worked for me on mediacodec)

                    Not really.,
                    Also the default at first startup, appearance
                    BT.601-PAL/MJPEG, worked, and then ffprobe output
                    Stream #0:0[0x1](und): Video: hevc (Rext)
                    (hev1 / 0x31766568), yuv422p(pc,
                    bt470bg/unknown/unknown, top coded first
                    (swapped)), 1440x1080 [SAR 4:3 DAR 16:9], 3248
                    kb/s, 25 fps, 25 tbr, 12800 tbn (default)

                    I just changed it to BT.701/MPEG which is for
                    HD video, and I also remembed you also
                    suggested this in a previous thread.

                    Both yuv422 and nv12 work.

                    But why isn't also the usual yuv420p available
                    for h264 and h265?


                not sure, may be qsv library does not support this?

                at least I can't see it in source

                
https://git.ffmpeg.org/gitweb/ffmpeg.git/blob/HEAD:/libavcodec/qsvenc_hevc.c#l399



                    Possibly also rename h265 to hevc as ffmpeg use?


                ok, I'll rename it and add nv12 as default pix format.

                can you also see if h264 works with nv12?

                No, h264 doesn't work with nv12, neither with #
                profile=high

                I've extracted three ffmpeg QSV code lines below
                with qsv and yuv420p used from
                https://trac.ffmpeg.org/wiki/Hardware/QuickSync#FullExamples

                ffmpeg -hwaccel qsv -c:v h264_qsv -i input.mp4 -vf
                hwdownload,format=nv12 -pix_fmt yuv420p output.yuv
                ffmpeg -hwaccel qsv -c:v h264_qsv -i input.mp4 -vf
                hwdownload,format=nv12 -pix_fmt yuv420p -f sdl -
                ffmpeg -init_hw_device qsv=hw -filter_hw_device hw
                -f rawvideo -pix_fmt yuv420p -s:v 1920x1080 -i
                input.yuv -vf
                hwupload=extra_hw_frames=64,format=qsv -c:v
                h264_qsv -b:v 5M output.mp4


                On the other hand the following VAAPI section and
                code lines from
                'The encoders only accept input as VAAPI surfaces.
                If the input is in normal memory, it will need to
                be uploaded before giving the frames to the encoder
                - in the ffmpeg utility, the |hwupload| filter can
                be used for this. It will upload to a surface with
                the same layout as the software frame, so it may be
                necessary to add a |format| filter immediately
                before to get the input into the right format
                (hardware generally wants the |nv12| layout, but
                most software functions use the |yuv420p| layout).
                The |hwupload| filter also requires a device to
                upload to, which needs to be defined before the
                filter graph is created.'

                ffmpeg -vaapi_device /dev/dri/renderD128 -i
                input.mp4 -vf 'format=nv12,hwupload' -c:v
                h264_vaapi output.mp4


                and from my own ffmpeg test

                ffmpeg -hide_banner -hwaccel_output_format qsv -i
                hdv09_04.m2t hdv09_04_h264_qsv.mp4



            note that this line uses *software* x264 encoder, not qsv.

            Yeah, I was confused by the "-hwaccel_output_format qsv"
            See below for another attempt


            Does av1_qsv/vp9_qsv works? Can you also try with
            progressive (not interlaced) video?

            Sorry, none of av1_qsv nor vp9_qsv pixel formats work
            (interlaced hdv input)
            I was looking for a progressive video to download?


        you can try to add deinterlacing filter in cingg? Do not
        forgot to set format- > interlacing to progressive.


            But I tested "h284_qsv/nv12/profile high" rendering wiht
            SD-DV file (interlaced) and it worked

            FFStream::encode_frame: encode failed.
            file: /Videoklipp/QSV/dv01_07_h264_qsv.mp4
              err: Resource temporarily unavailable
            FFStream::flush failed
            :file:/Videoklipp/QSV/dv01_07_h264_qsv.mp4
              err: Operation not permitted
            Render::render_single: Session finished.
            ** rendered 2832 frames in 5.592 secs, 506.438 fps
            audio0 pad 32 0 (32)

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



        so, h264/5 qsv in cingg works, but vp9/av1 not?

        I'll add two more silly patches as attachment, they
        hopefully correct hevc/h264 profiles and add remark about
        how they only usable with ext. ffmpeg (for now).

        Sorry about such extended debugging. Thanks for patience
        (over the years!)


        I did a summary testing today with results before patching:

        1)
        dv_movie.mpg (progressive)
        dv01_07.dv (interlaced)

        av1_qsv/vp9_qsv rendering works with nv12 and p010le
        h264_qsv rendering works with nv12

        2)
        hdv09_04.m2t (interlaced)

        av1_qsv/vp9_qsv nv12/p010le error ...
        h264_qsv nv12 error ...
        hevc_qsv nv12/p010le does render #high profile

        hdv_movie_0.mpg (progressive)
        av1_qsv/vp9_qsv nv12/p010le error ...
        h264_qsv nv12 error ...
        hevc_qsv nv12/p010le does render #high profile

        3)
        hd01.mov (interlaced)

        av1_qsv/vp9_qsv nv12/p010le error ...
        h264_qsv nv12 error ...
        hevc_qsv nv12/p010le does render #high profile

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

        After adding the latest two patches and make install,  1)
        above doesn't work anymore.
        Tried also to comment out each of the two new options.
        Any idea why?


    no idea o.O

    To verify if my patch procedure was right (?) here is my procedure
    and output:

    # git am
    0001-Add-nv12-as-def.-pixformat-for-qsv-profiles-clarify-.patch
    Applying: Add nv12 as def. pixformat for qsv profiles, clarify
    when it work
    .git/rebase-apply/patch:18: new blank line at EOF.
    +
    warning: 1 line adds whitespace errors.
    localhost:/home/cinelerra/cinelerra-5.1

    # git am
    0002-Modify-remaining-_qsv-orofiles-to-use-nv12-fix-typo-.patch
    Applying: Modify remaining _qsv orofiles to use nv12, fix typo in
    hevc_qsv

    # make install > make_install.log 2>&1

    Attach make_install.log by email


    does "git reset --hard git-hash-before-you-added-patches" && make
    install restore 1) ?

    Could you explain or detqail this a bit more?


use git log, it will show long commit hash (bunch of numbers and letters). Note commit hash for commit just adding qsv profiles, two commits below from top.

try select it fully or first 8 (?) characters into clipboard

execute "git reset --hard "insert from clipboard"

verify with git log that two new commits are gone.

make install again



As I am quite unfamiliar and uncomfortable with this stuff, this might be over my head.
Maybe I better reconstruct the previous install instead?

I succeeded to still get the most robust method to work
h265_qsv rendering works with nv12 and p010le and #profile high

So I wonder if something may have happened with h264/av1/vp9-qsv
with default nv12 some new options, because they worked in 1) before patching.






    normal ffmpeg renders all three input files with qsv encoders, right?

    I think so, but can try afterwards.


there is another set of settings to try with av1 encode:

https://forum.level1techs.com/t/ffmpeg-av1-encoding-using-intel-arc-gpu-tips/205120/2





        I have not continued with 2) and 3) above so far.



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

Reply via email to