[FFmpeg-devel] [PATCH]lavf/decimate: Fix total difference for the first frame

Carl Eugen Hoyos cehoyos at ag.or.at
Tue Jan 5 11:15:48 CET 2016


Carl Eugen Hoyos <cehoyos <at> ag.or.at> writes:

> Clément Bœsch <u <at> pkh.me> writes:
> 
> > +    if (cyclestart == 0) {
> > +        vdm->vmi[0].maxbdiff = vdm->vmi[1].maxbdiff;
> > +        vdm->vmi[0].totdiff = vdm->scthresh + 1;
> > +    }
> > +
> 
> > I suggest to "cherry-pick" this if it works.
> 
> Nicolas has already found a very similar solution 
> that only differs in rare cases (although the change 
> should be ported) and not for the file in question.

This should not be ported because Nicolas' approach 
is better:
The difference of above approach is that if the first 
five frames contain a scene change, the first frame 
after the scene change would be dropped if no 
duplicate was found. This is a rare case and it is 
not obvious why it's better to drop the first frame 
after the scene change instead of the very first 
frame (as currently with Nicolas' patch).
But the important and imo more typical case is when 
the first frame of the original telecined video was 
an interlaced frame that could not be matched by 
fieldmatch (because the missing field is not 
available): In this case, the first frame should be 
dropped if no duplicate was found (there will be no 
duplicate for the first five frames if the input 
stream was a clean telecined stream starting with an 
interlaced frame) and this is what currently happens 
in FFmpeg.

This does not explain the issue in ticket #4990:
I will not test with Avisynth / whatever, if nobody 
can test, the ticket will stay open.
The OP there claims that the original filter drops 
the correct frame, this does not happen with FFmpeg 
and the default options which are - afaict - 
identical for the original filter.

Carl Eugen


More information about the ffmpeg-devel mailing list