сб, 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 does "git reset --hard git-hash-before-you-added-patches" && make install restore 1) ? normal ffmpeg renders all three input files with qsv encoders, right? > I have not continued with 2) and 3) above so far. > > >
-- Cin mailing list [email protected] https://lists.cinelerra-gg.org/mailman/listinfo/cin

