[FFmpeg-user] bwdif

Mark Filipak markfilipak.windows+ffmpeg at gmail.com
Tue May 12 01:45:52 EEST 2020


This is a 'straw man' documentation of the 'bwdif' filter. Since it is a 'straw man', do not 
consider it to be correct. Kindly correct and post back. Pending possible further clarification, I 
will consider your corrections to be authoritative.

Best Regards,
Mark Filipak.

'bwdif': Generate an Output stream of picture frames from an Input stream containing a mix of 
picture frames (if any) & interlace frames (if any).
'bwdif' default: 'bwdif=mode=send_field:parity=auto:deint=all'.

Variables (ffprobe):
"IF" ('interlaced_frame=1') identifies an Input interlace frame.
"TFF" (IF+'top_field_first=1') identifies an IF with the top half-picture in the 1st field.
"BFF" (IF+'top_field_first=0') identifies an IF with the bottom half-picture in the 1st field.
"PF" ('interlaced_frame=0') identifies an Input picture frame.

Processes:
"TFF-process" means copy the IF's 1st field to the Output's top half-picture and its 2nd field to 
the bottom half-picture.
"BFF-process" means copy the IF's 1st field to the Output's bottom half-picture and its 2nd field to 
the top half-picture.
"PF-process" means copy the PF's top lines to the Output's top half-picture and its bottom lines to 
the bottom half-picture.

Process directives:
'bwdif=deint=all':
   If TFF (or BFF), apply TFF-process (or BFF-process).
   If PF, apply PF-process.
'bwdif=deint=interlaced':
   If TFF (or BFF), apply TFF-process (or BFF-process).
   If PF, pass the Input frame (assumed to be PF) unchanged to the Output.

Input directives:
'parity=auto':
   If TFF (or BFF), apply TFF-process (or BFF-process).
   If PF, do nothing.
   If Input frame interlace is unknown, force TFF.
'parity=tff':
   If IF, force TFF.
   If PF, do nothing.
   If Input frame interlace is unknown, force TFF.
'parity=bff':
   If IF, force BFF.
   If PF, do nothing.
   If Input frame interlace is unknown, force TFF.

Output directives: Generates 1 or 2 frames per input frame depending on 'mode'.
'mode=send_field':
   Package the 2 Output half-pictures in 2 separate Output picture frames.
'mode=send_frame':
   Package the 2 Output half-pictures in a single Output picture frame.

Question: Does 'bwdif=deint=interlaced' mean that the Output will be variable frame rate? 
Output_FPS=Input_FPS+Input_FPS*#IF/#total?

Confusing: "If the interlacing is unknown or the decoder does not export this information...", then 
how does the filter know it's an IF?

Confusing: "The picture field parity assumed for the input interlaced video" is confusing because 
interlaced frames (as defined by MPEG) do not contain pictures (as defined by MPEG).

-- 
COVID-19 perspective (May 11, 2020):
The U.S. is 4% of world population, 33% of cases, 28% of deaths, accelerating.
The U.S. & S.Korea reported 1st cases on the same day, 22 Jan 2020.
In March, week 2, S.Korea (pop: 52 million) did 10,000 tests/day, 4 hour results.
In March, week 2, the U.S. (pop: 328 million) did 400 tests/day, 7 day results.


More information about the ffmpeg-user mailing list