Question about -noauto_conversion_filters

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

Question about -noauto_conversion_filters

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?

Michael

_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: Question about -noauto_conversion_filters

Michael Koch
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

_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: Question about -noauto_conversion_filters

Gyan Doshi-2


On 14-09-2020 02:47 pm, Michael Koch wrote:
> 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

Format conversion is carried out by libswscale and auto conversion
inserts the scale filter.

So,

     ffmpeg -v verbose -f lavfi -i
testsrc2=s=svga:d=5,format=yuv422p10le -vf
scale,format=rgb48le,lut3d="VLog_to_V709.cube",scale
-noauto_conversion_filters -pix_fmt yuv422p10le -c:v h264 -y out.mov

The final format filter is redundant with -pix_fmt, so I removed one of
them.

Gyan
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: Question about -noauto_conversion_filters

Michael Koch
Am 14.09.2020 um 11:26 schrieb Gyan Doshi:

>
>
> On 14-09-2020 02:47 pm, Michael Koch wrote:
>> 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
>
> Format conversion is carried out by libswscale and auto conversion
> inserts the scale filter.
>
> So,
>
>     ffmpeg -v verbose -f lavfi -i
> testsrc2=s=svga:d=5,format=yuv422p10le -vf
> scale,format=rgb48le,lut3d="VLog_to_V709.cube",scale
> -noauto_conversion_filters -pix_fmt yuv422p10le -c:v h264 -y out.mov
>
> The final format filter is redundant with -pix_fmt, so I removed one
> of them.

Thank you, with "scale" it works fine. Although it's hard to understand
what "scale" (without any options) is actually doing.

I have another question. Is this the correct and easiest way to make a
10-bit test video?
-f lavfi -i testsrc2=s=svga:d=5,format=yuv422p10le

In the documentation is written
"The |testsrc2|source is similar to testsrc, but supports more pixel
formats instead of just |rgb24|. This allows using it as an input for
other tests without requiring a format conversion."
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

But in my above command, I think "format=yuv422p10le" is a format
conversion.

Michael

_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: Question about -noauto_conversion_filters

Gyan Doshi-2


On 14-09-2020 03:41 pm, Michael Koch wrote:

> Am 14.09.2020 um 11:26 schrieb Gyan Doshi:
>>
>>
>> On 14-09-2020 02:47 pm, Michael Koch wrote:
>>> 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
>>
>> Format conversion is carried out by libswscale and auto conversion
>> inserts the scale filter.
>>
>> So,
>>
>>     ffmpeg -v verbose -f lavfi -i
>> testsrc2=s=svga:d=5,format=yuv422p10le -vf
>> scale,format=rgb48le,lut3d="VLog_to_V709.cube",scale
>> -noauto_conversion_filters -pix_fmt yuv422p10le -c:v h264 -y out.mov
>>
>> The final format filter is redundant with -pix_fmt, so I removed one
>> of them.
>
> Thank you, with "scale" it works fine. Although it's hard to
> understand what "scale" (without any options) is actually doing.
>
> I have another question. Is this the correct and easiest way to make a
> 10-bit test video?
> -f lavfi -i testsrc2=s=svga:d=5,format=yuv422p10le
>
> In the documentation is written
> "The |testsrc2|source is similar to testsrc, but supports more pixel
> formats instead of just |rgb24|. This allows using it as an input for
> other tests without requiring a format conversion."
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>
> But in my above command, I think "format=yuv422p10le" is a format
> conversion.

Each filter presents a list of input formats they can work with and a
list of output formats they can directly generate. The framework
inspects adjacent filters and sets a compatible common format for the
outputs and inputs when possible. If not, it sets one of the available
output formats for the preceding filter and one from input formats for
the following filter and inserts a scale filter to convert  between
those. This process is format negotiation. The format filter doesn't
carry out the conversion itself - it inserts scale which in turn invokes
libswscale. scale without any args defaults to the source W and H. But
for pixel formats, its output format is constrained by the following
format filter. That triggers a format conversion by libswscale.

Gyan

Gyan
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: Question about -noauto_conversion_filters

Michael Koch
Am 14.09.2020 um 13:24 schrieb Gyan Doshi:

>
>
> On 14-09-2020 03:41 pm, Michael Koch wrote:
>> Am 14.09.2020 um 11:26 schrieb Gyan Doshi:
>>>
>>>
>>> On 14-09-2020 02:47 pm, Michael Koch wrote:
>>>> 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
>>>
>>> Format conversion is carried out by libswscale and auto conversion
>>> inserts the scale filter.
>>>
>>> So,
>>>
>>>     ffmpeg -v verbose -f lavfi -i
>>> testsrc2=s=svga:d=5,format=yuv422p10le -vf
>>> scale,format=rgb48le,lut3d="VLog_to_V709.cube",scale
>>> -noauto_conversion_filters -pix_fmt yuv422p10le -c:v h264 -y out.mov
>>>
>>> The final format filter is redundant with -pix_fmt, so I removed one
>>> of them.
>>
>> Thank you, with "scale" it works fine. Although it's hard to
>> understand what "scale" (without any options) is actually doing.
>>
>> I have another question. Is this the correct and easiest way to make
>> a 10-bit test video?
>> -f lavfi -i testsrc2=s=svga:d=5,format=yuv422p10le
>>
>> In the documentation is written
>> "The |testsrc2|source is similar to testsrc, but supports more pixel
>> formats instead of just |rgb24|. This allows using it as an input for
>> other tests without requiring a format conversion."
>> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>
>> But in my above command, I think "format=yuv422p10le" is a format
>> conversion.
>
> Each filter presents a list of input formats they can work with and a
> list of output formats they can directly generate. The framework
> inspects adjacent filters and sets a compatible common format for the
> outputs and inputs when possible. If not, it sets one of the available
> output formats for the preceding filter and one from input formats for
> the following filter and inserts a scale filter to convert  between
> those. This process is format negotiation. The format filter doesn't
> carry out the conversion itself - it inserts scale which in turn
> invokes libswscale. scale without any args defaults to the source W
> and H. But for pixel formats, its output format is constrained by the
> following format filter. That triggers a format conversion by libswscale.

Thanks for good explanation!

Michael

_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: Question about -noauto_conversion_filters

Gyan Doshi-2
In reply to this post by Gyan Doshi-2


On 14-09-2020 04:54 pm, Gyan Doshi wrote:

>
>
> On 14-09-2020 03:41 pm, Michael Koch wrote:
>> Am 14.09.2020 um 11:26 schrieb Gyan Doshi:
>>>
>>>
>>> On 14-09-2020 02:47 pm, Michael Koch wrote:
>>>> 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
>>>
>>> Format conversion is carried out by libswscale and auto conversion
>>> inserts the scale filter.
>>>
>>> So,
>>>
>>>     ffmpeg -v verbose -f lavfi -i
>>> testsrc2=s=svga:d=5,format=yuv422p10le -vf
>>> scale,format=rgb48le,lut3d="VLog_to_V709.cube",scale
>>> -noauto_conversion_filters -pix_fmt yuv422p10le -c:v h264 -y out.mov
>>>
>>> The final format filter is redundant with -pix_fmt, so I removed one
>>> of them.
>>
>> Thank you, with "scale" it works fine. Although it's hard to
>> understand what "scale" (without any options) is actually doing.
>>
>> I have another question. Is this the correct and easiest way to make
>> a 10-bit test video?
>> -f lavfi -i testsrc2=s=svga:d=5,format=yuv422p10le
>>
>> In the documentation is written
>> "The |testsrc2|source is similar to testsrc, but supports more pixel
>> formats instead of just |rgb24|. This allows using it as an input for
>> other tests without requiring a format conversion."
>> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>
>> But in my above command, I think "format=yuv422p10le" is a format
>> conversion.
>
> Each filter presents a list of input formats they can work with and a
> list of output formats they can directly generate. The framework
> inspects adjacent filters and sets a compatible common format for the
> outputs and inputs when possible. If not, it sets one of the available
> output formats for the preceding filter and one from input formats for
> the following filter and inserts a scale filter to convert  between
> those. This process is format negotiation. The format filter doesn't
> carry out the conversion itself - it inserts scale which in turn
> invokes libswscale. scale without any args defaults to the source W
> and H. But for pixel formats, its output format is constrained by the
> following format filter. That triggers a format conversion by libswscale.

In case of testsrc2, no conversion is required since the filter can
generate output in yuv422p10le.
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: Question about -noauto_conversion_filters

Carl Zwanzig
In reply to this post by Michael Koch
On 9/14/2020 4:57 AM, Michael Koch wrote:
> On 14-09-2020 04:54 pm, Gyan Doshi wrote: >> Each filter presents a list of input formats they can work with and a list
>> of output formats they can directly generate. [...]

> Thanks for good explanation!

Yes, that makes sense. Could that be included in the filters docs? :)

The likely spots seem to be-
ffmpeg-filters.html section 2
ffmpeg-all.html as a new section 3.2.3
https://trac.ffmpeg.org/wiki/FilteringGuide (I don't have a wiki login so I
can't include that into the filtering guide; maybe later, busy week ahead)

Later,

z!
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".