[FFmpeg-user] Question about -noauto_conversion_filters

Michael Koch astroelectronic at t-online.de
Mon Sep 14 12:17:01 EEST 2020


Am 13.09.2020 um 20:18 schrieb Michael Koch:
> Hello all,
>
> I'm just testing the new -noauto_conversion_filters option.
>
> As the first step, I'm running this command line (without the new 
> option):
>
> ffmpeg -v verbose -f lavfi -i testsrc2=s=svga:d=5,format=yuv422p10le 
> -vf lut3d="VLog_to_V709.cube" -pix_fmt yuv422p10le -c:v h264 -y out.mov
>
> This is running fine and here is the console output:
>
> C:\Users\astro\Desktop\Format_Test>c:\ffmpeg2\ffmpeg -v verbose -f 
> lavfi -i testsrc2=s=svga:d=5,format=yuv422p10le -vf 
> lut3d="VLog_to_V709.cube" -pix_fmt yuv422p10le -c:v h264 -y out.mov
> ffmpeg version N-99135-gaa8935b395-2020-09-13-gyan-beta2 Copyright (c) 
> 2000-2020 the FFmpeg developers
>   built with gcc 10.2.0 (Rev1, Built by MSYS2 project)
>   configuration: --enable-gpl --enable-version3 --enable-sdl2 
> --enable-fontconfig --enable-gnutls --enable-iconv --enable-libdav1d 
> --enable-libbluray --enable-libfreetype --enable-libmp3lame 
> --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb 
> --enable-libopenjpeg --enable-libopus --enable-libshine 
> --enable-libsnappy --enable-libsoxr --enable-libsrt --enable-libtheora 
> --enable-libtwolame --enable-libvpx --enable-libwavpack 
> --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 
> --enable-libzimg --enable-lzma --enable-zlib --enable-gmp 
> --enable-libvidstab --enable-libvmaf --enable-libvorbis 
> --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex 
> --enable-libxvid --enable-libaom --enable-libgsm --enable-librav1e 
> --enable-libsvtav1 --enable-avisynth --enable-libopenmpt 
> --enable-chromaprint --enable-frei0r --enable-libbs2b --enable-libcaca 
> --enable-libcdio --enable-libflite --enable-libfribidi --enable-libgme 
> --enable-libilbc --enable-libmodplug --enable-librubberband 
> --enable-libssh --enable-libzmq --enable-libzvbi --enable-ladspa 
> --enable-libglslang --enable-vulkan --disable-w32threads 
> --disable-autodetect --enable-libmfx --enable-ffnvcodec 
> --enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc 
> --enable-nvdec --enable-dxva2 --enable-amf --enable-static
>   libavutil      56. 58.100 / 56. 58.100
>   libavcodec     58.106.100 / 58.106.100
>   libavformat    58. 54.100 / 58. 54.100
>   libavdevice    58. 11.101 / 58. 11.101
>   libavfilter     7. 87.100 /  7. 87.100
>   libswscale      5.  8.100 /  5.  8.100
>   libswresample   3.  8.100 /  3.  8.100
>   libpostproc    55.  8.100 / 55.  8.100
> [Parsed_testsrc2_0 @ 0000017dee1d1e80] size:800x600 rate:25/1 
> duration:5.000000 sar:1/1
> Input #0, lavfi, from 'testsrc2=s=svga:d=5,format=yuv422p10le':
>   Duration: N/A, start: 0.000000, bitrate: N/A
>     Stream #0:0: Video: rawvideo, 1 reference frame (Y3[10][10] / 
> 0xA0A3359), yuv422p10le, 800x600 [SAR 1:1 DAR 4:3], 25 tbr, 25 tbn, 25 
> tbc
> Matched encoder 'libx264' for codec 'h264'.
> Stream mapping:
>   Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))
> Press [q] to stop, [?] for help
> [graph 0 input from stream 0:0 @ 0000017df0369580] w:800 h:600 
> pixfmt:yuv422p10le tb:1/25 fr:25/1 sar:1/1
> [auto_scaler_0 @ 0000017dee220180] w:iw h:ih flags:'bicubic' interl:0
> [Parsed_lut3d_0 @ 0000017dee2a7540] auto-inserting filter 
> 'auto_scaler_0' between the filter 'graph 0 input from stream 0:0' and 
> the filter 'Parsed_lut3d_0'
> [auto_scaler_1 @ 0000017dee220280] w:iw h:ih flags:'bicubic' interl:0
> [format @ 0000017dee21f880] auto-inserting filter 'auto_scaler_1' 
> between the filter 'Parsed_lut3d_0' and the filter 'format'
> [auto_scaler_0 @ 0000017dee220180] w:800 h:600 fmt:yuv422p10le sar:1/1 
> -> w:800 h:600 fmt:rgb48le sar:1/1 flags:0x4
> [auto_scaler_1 @ 0000017dee220280] w:800 h:600 fmt:rgb48le sar:1/1 -> 
> w:800 h:600 fmt:yuv422p10le sar:1/1 flags:0x4
> [libx264 @ 0000017dee1d8300] using SAR=1/1
> [libx264 @ 0000017dee1d8300] using cpu capabilities: MMX2 SSE2Fast 
> SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
> [libx264 @ 0000017dee1d8300] profile High 4:2:2, level 3.1, 4:2:2, 10-bit
> [libx264 @ 0000017dee1d8300] 264 - core 161 r3018 db0d417 - 
> H.264/MPEG-4 AVC codec - Copyleft 2003-2020 - 
> 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=12 
> lookahead_threads=2 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=81 qpstep=4 ip_ratio=1.40 
> aq=1:1.00
> Output #0, mov, to 'out.mov':
>   Metadata:
>     encoder         : Lavf58.54.100
>     Stream #0:0: Video: h264 (libx264), 1 reference frame (avc1 / 
> 0x31637661), yuv422p10le, 800x600 [SAR 1:1 DAR 4:3], q=-1--1, 25 fps, 
> 12800 tbn, 25 tbc
>     Metadata:
>       encoder         : Lavc58.106.100 libx264
>     Side data:
>       cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
> No more output streams to write to, finishing.e=00:00:01.72 
> bitrate=2438.6kbits/s speed=1.12x
> Not writing 'clli' atom. No content light level info.
> Not writing 'mdcv' atom. Missing mastering metadata.
> frame=  125 fps= 61 q=-1.0 Lsize=    1407kB time=00:00:04.88 
> bitrate=2362.4kbits/s speed=2.38x
> video:1405kB audio:0kB subtitle:0kB other streams:0kB global 
> headers:0kB muxing overhead: 0.155475%
> Input file #0 (testsrc2=s=svga:d=5,format=yuv422p10le):
>   Input stream #0:0 (video): 125 packets read (240000000 bytes); 125 
> frames decoded;
>   Total: 125 packets (240000000 bytes) demuxed
> Output file #0 (out.mov):
>   Output stream #0:0 (video): 125 frames encoded; 125 packets muxed 
> (1438821 bytes);
>   Total: 125 packets (1438821 bytes) muxed
> [AVIOContext @ 0000017dee21b500] Statistics: 2 seeks, 9 writeouts
> [libx264 @ 0000017dee1d8300] frame I:1     Avg QP:26.70  size: 19889
> [libx264 @ 0000017dee1d8300] frame P:39    Avg QP:37.26  size: 14092
> [libx264 @ 0000017dee1d8300] frame B:85    Avg QP:41.24  size: 10220
> [libx264 @ 0000017dee1d8300] consecutive B-frames:  2.4% 11.2% 28.8% 
> 57.6%
> [libx264 @ 0000017dee1d8300] mb I  I16..4: 45.0% 43.1% 11.9%
> [libx264 @ 0000017dee1d8300] mb P  I16..4:  1.3%  6.5%  1.9% P16..4:  
> 8.4%  3.3%  3.2%  0.0%  0.0%    skip:75.4%
> [libx264 @ 0000017dee1d8300] mb B  I16..4:  0.2%  0.1%  0.4% B16..8: 
> 11.8%  3.2%  1.8%  direct: 1.3%  skip:81.2%  L0:47.7% L1:36.9% BI:15.4%
> [libx264 @ 0000017dee1d8300] 8x8 transform intra:57.3% inter:8.5%
> [libx264 @ 0000017dee1d8300] coded y,uvDC,uvAC intra: 14.9% 29.3% 
> 27.6% inter: 4.9% 8.4% 7.4%
> [libx264 @ 0000017dee1d8300] i16 v,h,dc,p: 79% 19%  2%  0%
> [libx264 @ 0000017dee1d8300] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 14% 9% 
> 75%  0%  0%  0%  1%  0%  1%
> [libx264 @ 0000017dee1d8300] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 25% 14% 
> 46%  2%  1%  1%  5%  1%  5%
> [libx264 @ 0000017dee1d8300] i8c dc,h,v,p: 72% 10% 16%  2%
> [libx264 @ 0000017dee1d8300] Weighted P-Frames: Y:0.0% UV:0.0%
> [libx264 @ 0000017dee1d8300] ref P L0: 51.7% 25.6% 22.7%
> [libx264 @ 0000017dee1d8300] ref B L0: 72.2% 22.2%  5.7%
> [libx264 @ 0000017dee1d8300] ref B L1: 93.9%  6.1%
> [libx264 @ 0000017dee1d8300] kb/s:2301.01
>
>
> It seems that ffmpeg did auto-insert two format conversions:
> Before the lut3d filter from yuv422p10le to rgb48le,
> and after the lut3d filter from rgb48le to yuv422p10le.
>
> Now I want to use the -noauto_conversion_filters option and insert the 
> two format conversions manually in the filter chain:
>
> ffmpeg -v verbose -f lavfi -i testsrc2=s=svga:d=5,format=yuv422p10le 
> -vf format=rgb48le,lut3d="VLog_to_V709.cube",format=yuv422p10le 
> -noauto_conversion_filters -pix_fmt yuv422p10le -c:v h264 -y out.mov
>
> But this doesn't work. It seems there is a mismatch between the input 
> format (yuv422p10le) and the input format of the first filter. Here is 
> the console output:
>
> C:\Users\astro\Desktop\Format_Test>c:\ffmpeg2\ffmpeg -v verbose -f 
> lavfi -i testsrc2=s=svga:d=5,format=yuv422p10le -vf 
> format=rgb48le,lut3d="VLog_to_V709.cube",format=yuv422p10le 
> -noauto_conversion_filters -pix_fmt yuv422p10le -c:v h264 -y out.mov
> ffmpeg version N-99135-gaa8935b395-2020-09-13-gyan-beta2 Copyright (c) 
> 2000-2020 the FFmpeg developers
>   built with gcc 10.2.0 (Rev1, Built by MSYS2 project)
>   configuration: --enable-gpl --enable-version3 --enable-sdl2 
> --enable-fontconfig --enable-gnutls --enable-iconv --enable-libdav1d 
> --enable-libbluray --enable-libfreetype --enable-libmp3lame 
> --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb 
> --enable-libopenjpeg --enable-libopus --enable-libshine 
> --enable-libsnappy --enable-libsoxr --enable-libsrt --enable-libtheora 
> --enable-libtwolame --enable-libvpx --enable-libwavpack 
> --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 
> --enable-libzimg --enable-lzma --enable-zlib --enable-gmp 
> --enable-libvidstab --enable-libvmaf --enable-libvorbis 
> --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex 
> --enable-libxvid --enable-libaom --enable-libgsm --enable-librav1e 
> --enable-libsvtav1 --enable-avisynth --enable-libopenmpt 
> --enable-chromaprint --enable-frei0r --enable-libbs2b --enable-libcaca 
> --enable-libcdio --enable-libflite --enable-libfribidi --enable-libgme 
> --enable-libilbc --enable-libmodplug --enable-librubberband 
> --enable-libssh --enable-libzmq --enable-libzvbi --enable-ladspa 
> --enable-libglslang --enable-vulkan --disable-w32threads 
> --disable-autodetect --enable-libmfx --enable-ffnvcodec 
> --enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc 
> --enable-nvdec --enable-dxva2 --enable-amf --enable-static
>   libavutil      56. 58.100 / 56. 58.100
>   libavcodec     58.106.100 / 58.106.100
>   libavformat    58. 54.100 / 58. 54.100
>   libavdevice    58. 11.101 / 58. 11.101
>   libavfilter     7. 87.100 /  7. 87.100
>   libswscale      5.  8.100 /  5.  8.100
>   libswresample   3.  8.100 /  3.  8.100
>   libpostproc    55.  8.100 / 55.  8.100
> [Parsed_testsrc2_0 @ 00000246e3d11cc0] size:800x600 rate:25/1 
> duration:5.000000 sar:1/1
> Input #0, lavfi, from 'testsrc2=s=svga:d=5,format=yuv422p10le':
>   Duration: N/A, start: 0.000000, bitrate: N/A
>     Stream #0:0: Video: rawvideo, 1 reference frame (Y3[10][10] / 
> 0xA0A3359), yuv422p10le, 800x600 [SAR 1:1 DAR 4:3], 25 tbr, 25 tbn, 25 
> tbc
> Matched encoder 'libx264' for codec 'h264'.
> Stream mapping:
>   Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))
> Press [q] to stop, [?] for help
> [graph 0 input from stream 0:0 @ 00000246e3d60a40] w:800 h:600 
> pixfmt:yuv422p10le tb:1/25 fr:25/1 sar:1/1
> The filters 'graph 0 input from stream 0:0' and 'Parsed_format_0' do 
> not have a common format and automatic conversion is disabled.
> Error reinitializing filters!
> Failed to inject frame into filter network: Invalid argument
> Error while processing the decoded data for stream #0:0
> [AVIOContext @ 00000246e3d166c0] Statistics: 0 seeks, 0 writeouts
> Conversion failed!
>
> What's wrong with my command line?

Does anybody have a working example with -noauto_conversion_filters and 
a manually inserted format conversion at the beginning of the filter chain?

Michael



More information about the ffmpeg-user mailing list