пт, 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. Does av1_qsv/vp9_qsv works? Can you also try with progressive (not interlaced) video? > [mpeg2video @ 0x5575e097b4c0] Invalid frame dimensions 0x0. > Last message repeated 3 times > [mpegts @ 0x5575e0975e00] PES packet size mismatch > [mpegts @ 0x5575e0975e00] Packet corrupt (stream = 1, dts = 258142320). > [mpegts @ 0x5575e0975e00] Could not find codec parameters for stream 2 > (Unknown: none ([160][0][0][0] / 0x00A0)): unknown codec > Consider increasing the value for the 'analyzeduration' (0) and > 'probesize' (5000000) options > [mpegts @ 0x5575e0975e00] Could not find codec parameters for stream 3 > (Unknown: none ([161][0][0][0] / 0x00A1)): unknown codec > Consider increasing the value for the 'analyzeduration' (0) and > 'probesize' (5000000) options > Input #0, mpegts, from 'hdv09_04.m2t': > Duration: 00:03:59.06, start: 2629.496000, bitrate: 26110 kb/s > Program 100 > Stream #0:0[0x810]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), > yuv420p(tv, bt709, top first), 1440x1080 [SAR 4:3 DAR 16:9], 25000 kb/s, 25 > fps, 25 tbr, 90k tbn > Side data: > cpb: bitrate max/min/avg: 25000000/0/0 buffer size: 7340032 > vbv_delay: N/A > Stream #0:1[0x814]: Audio: mp2 (mp3float) ([3][0][0][0] / 0x0003), 48000 > Hz, stereo, fltp, 384 kb/s > Stream #0:2[0x815]: Unknown: none ([160][0][0][0] / 0x00A0) > Stream #0:3[0x811]: Unknown: none ([161][0][0][0] / 0x00A1) > File 'hdv09_04_h264_qsv.mp4' already exists. Overwrite? [y/N] y > Stream mapping: > Stream #0:0 -> #0:0 (mpeg2video (native) -> h264 (libx264)) > Stream #0:1 -> #0:1 (mp2 (native) -> aac (native)) > Press [q] to stop, [?] for help > [libx264 @ 0x5575e097d5c0] using SAR=4/3 > [libx264 @ 0x5575e097d5c0] using cpu capabilities: MMX2 SSE2Fast SSSE3 > SSE4.2 AVX FMA3 BMI2 AVX2 > [libx264 @ 0x5575e097d5c0] profile High, level 4.0, 4:2:0, 8-bit > [libx264 @ 0x5575e097d5c0] 264 - core 164 - H.264/MPEG-4 AVC codec - > Copyleft 2003-2023 - http://www.videolan.org/x264.html - options: cabac=1 > ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 > mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 > fast_pskip=1 chroma_qp_offset=-2 threads=30 lookahead_threads=5 > sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 > constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 > weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 > intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 > qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00 > Output #0, mp4, to 'hdv09_04_h264_qsv.mp4': > Metadata: > encoder : Lavf61.1.100 > Stream #0:0: Video: h264 (avc1 / 0x31637661), yuv420p(tv, bt709, top > coded first (swapped)), 1440x1080 [SAR 4:3 DAR 16:9], q=2-31, 25 fps, 12800 > tbn > Metadata: > encoder : Lavc61.3.100 libx264 > Side data: > cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A > Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, > fltp, 128 kb/s > Metadata: > encoder : Lavc61.3.100 aac > [mpegts @ 0x5575e0975e00] PES packet size mismatch0:03:51.80 > bitrate=8956.8kbits/s dup=12 drop=0 speed=6.35x > [mpegts @ 0x5575e0975e00] Packet corrupt (stream = 1, dts = 258142320). > [mpeg2video @ 0x5575e09a6b80] ac-tex damaged at 10 61 > [mpeg2video @ 0x5575e09a6b80] Warning MVs not available > [mpeg2video @ 0x5575e09a6b80] concealing 630 DC, 630 AC, 630 MV errors in > P frame > [vist#0:0/mpeg2video @ 0x5575e097de80] [dec:mpeg2video @ 0x5575e0a8c0c0] > corrupt decoded frame=0 speed=6.36x > [out#0/mp4 @ 0x5575e09ad380] video:255836KiB audio:3774KiB subtitle:0KiB > other streams:0KiB global headers:0KiB muxing overhead: 0.068494% > frame= 5977 fps=160 q=-1.0 Lsize= 259787KiB time=00:03:58.77 > bitrate=8912.9kbits/s dup=14 drop=0 speed=6.37x > [libx264 @ 0x5575e097d5c0] frame I:54 Avg QP:22.80 size:193221 > [libx264 @ 0x5575e097d5c0] frame P:1658 Avg QP:25.06 size: 92898 > [libx264 @ 0x5575e097d5c0] frame B:4265 Avg QP:27.85 size: 22864 > [libx264 @ 0x5575e097d5c0] consecutive B-frames: 3.6% 2.4% 4.0% 89.9% > [libx264 @ 0x5575e097d5c0] mb I I16..4: 4.9% 87.3% 7.7% > [libx264 @ 0x5575e097d5c0] mb P I16..4: 1.2% 13.2% 1.0% P16..4: 41.6% > 21.2% 13.9% 0.0% 0.0% skip: 7.8% > [libx264 @ 0x5575e097d5c0] mb B I16..4: 0.2% 1.2% 0.1% B16..8: 45.7% > 5.9% 1.8% direct: 7.2% skip:37.9% L0:43.2% L1:43.3% BI:13.5% > [libx264 @ 0x5575e097d5c0] 8x8 transform intra:85.8% inter:80.8% > [libx264 @ 0x5575e097d5c0] coded y,uvDC,uvAC intra: 79.9% 63.7% 20.4% > inter: 33.1% 18.6% 1.6% > [libx264 @ 0x5575e097d5c0] i16 v,h,dc,p: 16% 52% 15% 17% > [libx264 @ 0x5575e097d5c0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 19% 16% 36% 4% > 5% 5% 5% 5% 7% > [libx264 @ 0x5575e097d5c0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 12% 57% 9% 3% > 4% 4% 4% 3% 4% > [libx264 @ 0x5575e097d5c0] i8c dc,h,v,p: 57% 19% 20% 4% > [libx264 @ 0x5575e097d5c0] Weighted P-Frames: Y:15.3% UV:6.2% > [libx264 @ 0x5575e097d5c0] ref P L0: 47.1% 15.9% 26.2% 9.9% 0.8% > [libx264 @ 0x5575e097d5c0] ref B L0: 82.8% 14.6% 2.6% > [libx264 @ 0x5575e097d5c0] ref B L1: 93.4% 6.6% > [libx264 @ 0x5575e097d5c0] kb/s:8766.10 > [aac @ 0x5575e09abd80] Qavg: 488.617 > > > > > >> >> >> >> >>> >>> ---------------- >>>> 3a) >>>> Loaded hdv09_04.m2t >>>> Render: >>>> Output to file: /Videoklipp/QSV/hdv09_04_av1_qsv.mp4 >>>> File format: FFMPEG-mp4 >>>> >>>> Compression: av1_qsv.mp4 >>>> Pixels: qsv >>>> >>>> FFMPEG::open_encoder err: Internal bug, should not have happened >>>> int FFMPEG::open_encoder(const char*, const char*): >>>> open failed av1_qsv:/Videoklipp/QSV/hdv09_04_av1_qsv.mp4 >>>> Render::render_single: Session finished. >>>> -------------- >>>> 3b) >>>> Compression: av1_qsv.mp4 >>>> Pixels: p010le >>>> >>>> [av1_qsv @ 0x7f1c302e7080] Current picture structure is unsupported >>>> [av1_qsv @ 0x7f1c302e7080] some encoding parameters are not supported >>>> by the QSV runtime. Please double check the input parameters. >>>> FFMPEG::open_encoder err: Function not implemented >>>> int FFMPEG::open_encoder(const char*, const char*): >>>> open failed av1_qsv:/Videoklipp/QSV/hdv09_04_av1_qsv.mp4 >>>> Render::render_single: Session finished. >>>> ----------------- >>>> 4a) >>>> Loaded hd01.mov >>>> Render: >>>> Output to file: /Videoklipp/QSV/hdv09_04_h265_qsv.mp4 >>>> File format: FFMPEG-mp4 >>>> >>>> Compression: h265_qsv.mp4 >>>> Pixels: qsv >>>> >>>> [hevc_qsv encoder @ 0x7f4b8d6f9ac0] [Eval @ 0x7f4b62ff66f0] Undefined >>>> constant or missing '(' in 'high' >>>> [hevc_qsv encoder @ 0x7f4b8d6f9ac0] Unable to parse option value "high" >>>> [hevc_qsv encoder @ 0x7f4b8d6f9ac0] 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/MOV/hd01_qsv.mp4 >>>> Render::render_single: Session finished. >>>> >>> >>> I think you can try to comment out (with #) line with >>> profile=high. in h265_qsv.mp4 >>> >>> >>> # 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/MOV/hd01_qsv.mp4 >>> Render::render_single: Session finished. >>> >>> >>> >>> You also probably can stick to yuv420p (if available) because qsv >>> implies image already in hw-specifuc format and ffmpeg does not do this >>> conversion for us >>> >>> >>> -------------------- >>>> 4b) >>>> Compression: h265_qsv.mp4 >>>> Pixels: yuyv422 >>>> >>>> [hevc_qsv encoder @ 0x7f4ba4070f00] [Eval @ 0x7f4b5bff86f0] Undefined >>>> constant or missing '(' in 'high' >>>> [hevc_qsv encoder @ 0x7f4ba4070f00] Unable to parse option value "high" >>>> [hevc_qsv encoder @ 0x7f4ba4070f00] 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/MOV/hd01_qsv.mp4 >>>> Render::render_single: Session finished. >>>> >>> >>> Some progress: >>> >>> # profile=high >>> Pixels: yuyv422 (yuv420 isn't available) >>> Settings>Appearance: BT.709/MPEG2 >>> >>> Rendered: >>> FFStream::encode_frame: encode failed. >>> file: /Videoklipp/MOV/hd01_qsv.mp4 >>> err: Resource temporarily unavailable >>> FFStream::flush failed >>> :file:/Videoklipp/MOV/hd01_qsv.mp4 >>> err: Operation not permitted >>> Render::render_single: Session finished. >>> ** rendered 1781 frames in 14.617 secs, 121.844 fps >>> audio0 pad 128 0 (128) >>> >>> VLC playback OK >>> >>> ffprobe -hide_banner hd01_qsv.mp4 >>> Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'hd01_qsv.mp4': >>> Metadata: >>> major_brand : isom >>> minor_version : 512 >>> compatible_brands: isomiso2mp41 >>> encoder : Lavf61.1.100 >>> Duration: 00:01:11.28, start: 0.000000, bitrate: 2744 kb/s >>> Stream #0:0[0x1](und): Video: hevc (Rext) (hev1 / 0x31766568), >>> yuv422p(tv, bt709/unknown/unknown, top coded first (swapped)), 1920x1080 >>> [SAR 1:1 DAR 16:9], 2377 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, >>> 16 channels, fltp, 378 kb/s (default) >>> Metadata: >>> handler_name : SoundHandler >>> vendor_id : [0][0][0][0] >>> >>> >>> >>> >>> >>> >>>> >>>> >>>> >>> >> >
-- Cin mailing list [email protected] https://lists.cinelerra-gg.org/mailman/listinfo/cin

