• 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.