[FFmpeg-user] Question about -noauto_conversion_filters

Michael Koch astroelectronic at t-online.de
Sun Sep 13 21:18:39 EEST 2020


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?

Michael



More information about the ffmpeg-user mailing list