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
- 0 / tff - Assume the top field is first
- 1 / bff - Assume the bottom field is first
- -1 / auto - Enable automatic detection of field parity (default)
- If the interlacing is unknown or the decoder does not export this information, top field first will be assumed
- deint
- 0 / all - Deinterlace all frames (default)
- 1 / interlaced - Only deinterlace frames marked as interlaced
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.