This is an old revision of the document!
yadif
man ffmpeg-filters
- mode
- 0 / send_frame - Output one frame for each frame (default)
- 1 / send_field - Output one frame for each field (my preferred method)
- 2 / send_frame_nospatial - Like send_frame, but it skips the spatial interlacing check.
- 3 / send_field_nospatial - Like send_field, but it skips the spatial interlacing check.
parity The picture field parity assumed for the input interlaced video. It accepts one of the following values: 0, tff Assume the top field is first. 1, bff Assume the bottom field is first. -1, auto Enable automatic detection of field parity. The default value is auto. If the interlacing is unknown or the decoder does not export this information, top field first will be assumed. deint Specify which frames to deinterlace. Accept one of the following values: 0, all Deinterlace all frames. 1, interlaced Only deinterlace frames marked as interlaced. The default value is all.
The best description I've seen of the filter options is here: https://www.avidemux.org/admWiki/doku.php?id=using:video_filter_yadif
I use yadif
on DVDs that have interlacing, and detelecine filters are not cleaning it up – among my collection, it's pretty rare. Only two cartoon series, and three live action.
Command line for its default options:
ffmpeg ... -vf yadif=mode=send_frame:parity=auto:deint=all ...
Using BeyBlade as a source.
Default for mode
is send_frame
, which will output one frame for each frame; the output frame rate is constant at 30000/1001 (29.97, NTSC).
If I set it to create a frame for each field (mode=send_field
), it will come out at 60000/1001 constant instead (59.94).
Running defaults, or, just using -vf yadif
, the same frames in sequence:
I'm also not caring about video encoding quality right here, it's just default x265 settings.