[FFmpeg-user] setfield and display order and storage order

dave at dericed.com dave at dericed.com
Tue Nov 29 16:23:22 EET 2016


> On Nov 28, 2016, at 2:48 PM, dave at dericed.com wrote:
> 
> Hi all,
> I'm trying to use the setfield filter to get an output that is stored and display as top field first. However the output of setfield with bff and tff always seems to have a conflict between storage and display.
> 
> For examples, using mandelbrot, tinterlace, and setfield to make a tff output.
> 
> ffmpeg -f lavfi -i  mandelbrot=s=720x288:r=50/1 -vf tinterlace=merge,setfield=tff -t 1 -c:v v210 -y interlaced.mov
> ffmpeg version N-43913-g801b5c1 Copyright (c) 2000-2016 the FFmpeg developers
>  built with Apple LLVM version 8.0.0 (clang-800.0.42.1)
>  configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD-801b5c1 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-libfreetype --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-opencl --disable-lzma --enable-vda
>  libavutil      55. 41.101 / 55. 41.101
>  libavcodec     57. 66.108 / 57. 66.108
>  libavformat    57. 58.101 / 57. 58.101
>  libavdevice    57.  2.100 / 57.  2.100
>  libavfilter     6. 67.100 /  6. 67.100
>  libavresample   3.  2.  0 /  3.  2.  0
>  libswscale      4.  3.101 /  4.  3.101
>  libswresample   2.  4.100 /  2.  4.100
>  libpostproc    54.  2.100 / 54.  2.100
> Input #0, lavfi, from 'mandelbrot=s=720x288:r=50/1':
>  Duration: N/A, start: 0.000000, bitrate: N/A
>    Stream #0:0: Video: rawvideo (RGB[0] / 0x424752), rgb0, 720x288 [SAR 1:1 DAR 5:2], 50 tbr, 50 tbn, 50 tbc
> Output #0, mov, to 'interlaced.mov':
>  Metadata:
>    encoder         : Lavf57.58.101
>    Stream #0:0: Video: v210 (v210 / 0x30313276), yuv422p, 720x576 [SAR 2:1 DAR 5:2], q=2-31, 200 kb/s, 25 fps, 12800 tbn, 25 tbc
>    Metadata:
>      encoder         : Lavc57.66.108 v210
> Stream mapping:
>  Stream #0:0 -> #0:0 (rawvideo (native) -> v210 (native))
> Press [q] to stop, [?] for help
> frame=   25 fps=0.0 q=-0.0 Lsize=   27001kB time=00:00:00.96 bitrate=230388.8kbits/s speed=2.49x    
> video:27000kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.003277%
> 
> But the output is:
> 
> ffmpeg -i interlaced.mov 
> ffmpeg version N-43913-g801b5c1 Copyright (c) 2000-2016 the FFmpeg developers
>  built with Apple LLVM version 8.0.0 (clang-800.0.42.1)
>  configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD-801b5c1 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-libfreetype --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-opencl --disable-lzma --enable-vda
>  libavutil      55. 41.101 / 55. 41.101
>  libavcodec     57. 66.108 / 57. 66.108
>  libavformat    57. 58.101 / 57. 58.101
>  libavdevice    57.  2.100 / 57.  2.100
>  libavfilter     6. 67.100 /  6. 67.100
>  libavresample   3.  2.  0 /  3.  2.  0
>  libswscale      4.  3.101 /  4.  3.101
>  libswresample   2.  4.100 /  2.  4.100
>  libpostproc    54.  2.100 / 54.  2.100
> Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'interlaced.mov':
>  Metadata:
>    major_brand     : qt  
>    minor_version   : 512
>    compatible_brands: qt  
>    encoder         : Lavf57.58.101
>  Duration: 00:00:01.00, start: 0.000000, bitrate: 221191 kb/s
>    Stream #0:0(eng): Video: v210 (v210 / 0x30313276), yuv422p10le(top coded first (swapped)), 720x576, 221184 kb/s, SAR 2:1 DAR 5:2, 25 fps, 25 tbr, 12800 tbn, 12800 tbc (default)
>    Metadata:
>      handler_name    : DataHandler
>      encoder         : Lavc57.66.108 v210
> At least one output file must be specified
> 
> So the result is "top coded first (swapped)" aka "AV_FIELD_TB". Is this expected and is it possible to use the setfield filter (or another filter or argument) to get an output with AV_FIELD_TT? I get the same issue with mkv.

I found that if I add '-field_order tt', then I can force a 'top first' output with mov, but an mkv output with '-field_order tt' stays as 'top coded first (swapped)'.
Dave




More information about the ffmpeg-user mailing list