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?


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

I think so, but can try afterwards.



    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