[FFmpeg-devel] [PATCH] Port tinterlace filter from MPlayer.

Ivan Kalvachev ikalvachev at gmail.com
Tue Jun 28 12:08:23 CEST 2011

On 6/28/11, Stefano Sabatini <stefano.sabatini-lala at poste.it> wrote:
> On date Monday 2011-06-27 23:49:09 +0200, Stefano Sabatini encoded:
>> On date Sunday 2010-09-26 20:32:48 +0200, Michael Niedermayer wrote:
> [...]
>> Updated based on the tinterlace port from FFmbc, with some
>> simplifications.
> Updated again, with a request_frame() implementation.
> Some questions:
> 1) what do we want to do with the limpcodecs wrapper as they are
> ported to native filters? (I suppose the right answer is "drop them"
> => less code to maintain, in this case mpcodecs/tinterlace is broken
> and in general fixing those filters - with no previous knowledge of
> libmpcodecs - requires more time than porting them).

IMHO, once the native is working fine, remove the other.

> 2) Regarding mode 3:
> |Expand each frame to full height, but pad alternate lines with
> |black; framerate unchanged and double height.
> the padded lines are always the even lines, if I'm not wrong real
> television devices alternate even and odd lines scanning, which in
> this case generate a very fastidious flickering effect (which
> theoretically should not be not be perceived at high framerates).
> I can add another mode (would be "5" for retaining MPlayer
> compatibility), for implementing this behavior, I'd like to hear some
> interlace "experts" opinion regarding this.

Mode 3 of this filter is working as advertised, at least in mplayer.
I have no idea why it doesn't work for you, as the source code is
looking quite straight forward:
  (pseudo code;)
  case 3: if(vf->priv->frame&1 ==0) {copy_pic(plane,stride*2) } else
{copypic(plane+stride, stride*2); }; output(); break;

If you want to make mode 5, you can make it like mode 3 but double the
  take 1 frame,
  output top_field of the frame and black the other.
  output bottom_field of the frame and black the other.

Best Regards.

More information about the ffmpeg-devel mailing list