Den 28.09.2024 17:35, skrev Terje J. Hanssen:


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?

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


Add some Cingg output:

FFMPEG::scan: codec open failed
FFMPEG::scan:file=/Videoklipp/QSV/dv_movie_0.mpg
audio0 pad 32 0 (32)
int FFMPEG::init_encoder(const char*):
mismatch audio/video file format: /Videoklipp/QSV/dv_movie_0_av1_qsv.mp4
Render::render_single: Session finished.
int FFMPEG::init_encoder(const char*):
mismatch audio/video file format: /Videoklipp/QSV/dv_movie_0_av1_qsv.mp4
Render::render_single: Session finished.
int FFMPEG::init_encoder(const char*):
mismatch audio/video file format: /Videoklipp/QSV/dv_movie_0_av1_qsv.mp4
Render::render_single: Session finished.
int FFMPEG::init_encoder(const char*):
mismatch audio/video file format: /Videoklipp/QSV/dv_movie_0_av1_qsv.mp4
Render::render_single: Session finished.
^C** intr at 0x7f7b3ea8f25e in pid 102978, tid 102978
writing debug data to /tmp/cinelerra_102978.dmp
lock_items: 19
lock_frees: 28
^C
localhost:/home/cinelerra/cinelerra-5.1 # bin/cin
Cinelerra Infinity - built: Sep 23 2024 10:31:07
git://git.cinelerra-gg.org/goodguy/cinelerra.git
(c) 2006-2019 Heroine Virtual Ltd. by Adam Williams
2007-2020 mods for Cinelerra-GG by W.P.Morrow aka goodguy
2003-2017 mods for Cinelerra-CV by CinelerraCV team
2015-2024 mods for Cinelerra-GG by Cinelerra-GG team

Libav version: Lavc61.3.100

Cinelerra is free software, covered by the GNU General Public License,
and you are welcome to change it and/or distribute copies of it under
certain conditions. There is absolutely no warranty for Cinelerra.

int FFMPEG::init_encoder(const char*):
mismatch audio/video file format: /Videoklipp/QSV/dv01_07_av1_qsv.mp4
Render::render_single: Session finished.
int FFMPEG::init_encoder(const char*):
mismatch audio/video file format: /Videoklipp/QSV/dv01_07_av1_qsv.mp4
Render::render_single: Session finished.
int FFMPEG::init_encoder(const char*):
mismatch audio/video file format: /Videoklipp/QSV/dv01_07_av1_qsv.mp4
Render::render_single: Session finished.
int FFMPEG::init_encoder(const char*):
mismatch audio/video file format: /Videoklipp/QSV/dv01_07_av1_qsv.mp4
Render::render_single: Session finished.
int FFMPEG::init_encoder(const char*):
mismatch audio/video file format: /Videoklipp/QSV/dv01_07_av1_qsv.mp4
Render::render_single: Session finished.
Total excess of backups: -50
Session time: 0:07:07
Cpu time: user: 0:00:07.647 sys: 0:00:04.063

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

Reply via email to