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. Sorry to say this but I wonder how the filter ever passed any test without this (or a similar) change. The OP of ticket #4990 claims that for his sample the first frames are correctly handled with avisynth. (I have no idea how to test this.) When looking at the frames visually, I can very, very easily distinguish between the four duplicates of the 20 frames and the other frames and I do not see any difference between the duplicates. FFmpeg's decimate filter does not detect any of the duplicates and therefore drops the first frame because it is a scene change, the other three duplicates are correctly dropped because they are "lowest" by a large margin but are not detected as duplicates. It works if blockx and blocky are set to 128 but I wonder why this should be necessary and why it isn't necessary for avisynth (if this is true). Perhaps somebody can test the fieldmatched.avi file in http://samples.ffmpeg.org/ffmpeg-bugs/trac/ticket4990/ with the Virtualdub filter to see if it really works correctly for the first frames and ideally add debug output to see its maxbdiff and dupthresh values. Thank you, Carl Eugen duppos: -1 lowest: 4, dm->queue[lowest].maxbdiff: 3333, dm->dupthresh: 2872 Last message repeated 11 times [Parsed_decimate_0 @ 0x362b160] 1/5 frame drop: [Parsed_decimate_0 @ 0x362b160] #1: totdiff=7fffffffffffffff maxbdiff=7fffffffffffffff sc [DROP] [Parsed_decimate_0 @ 0x362b160] #2: totdiff=00ca660c maxbdiff=000130d8 [Parsed_decimate_0 @ 0x362b160] #3: totdiff=015715f3 maxbdiff=00022e12 [Parsed_decimate_0 @ 0x362b160] #4: totdiff=00c6e459 maxbdiff=0001df5b [Parsed_decimate_0 @ 0x362b160] #5: totdiff=000d4fce maxbdiff=00000d05 lowest duppos: -1 lowest: 4, dm->queue[lowest].maxbdiff: 3947, dm->dupthresh: 2872 [Parsed_decimate_0 @ 0x362b160] 1/5 frame drop: [Parsed_decimate_0 @ 0x362b160] #1: totdiff=0093eda5 maxbdiff=0001b481 [Parsed_decimate_0 @ 0x362b160] #2: totdiff=0089d968 maxbdiff=00019ebc [Parsed_decimate_0 @ 0x362b160] #3: totdiff=0080a999 maxbdiff=00017223 [Parsed_decimate_0 @ 0x362b160] #4: totdiff=007c98d0 maxbdiff=00018261 [Parsed_decimate_0 @ 0x362b160] #5: totdiff=00099bf0 maxbdiff=00000f6b lowest [DROP] duppos: -1 lowest: 4, dm->queue[lowest].maxbdiff: 7578, dm->dupthresh: 2872 [Parsed_decimate_0 @ 0x362b160] 1/5 frame drop: [Parsed_decimate_0 @ 0x362b160] #1: totdiff=0079855c maxbdiff=0001ab54 [Parsed_decimate_0 @ 0x362b160] #2: totdiff=008401c0 maxbdiff=0001bf8e [Parsed_decimate_0 @ 0x362b160] #3: totdiff=007db8bb maxbdiff=0001ade7 [Parsed_decimate_0 @ 0x362b160] #4: totdiff=007f553c maxbdiff=0001806d [Parsed_decimate_0 @ 0x362b160] #5: totdiff=0010b14d maxbdiff=00001d9a lowest [DROP] duppos: -1 lowest: 4, dm->queue[lowest].maxbdiff: 5389, dm->dupthresh: 2872 [Parsed_decimate_0 @ 0x362b160] 1/5 frame drop: [Parsed_decimate_0 @ 0x362b160] #1: totdiff=007b5d19 maxbdiff=0001691f [Parsed_decimate_0 @ 0x362b160] #2: totdiff=0076c12d maxbdiff=00012a61 [Parsed_decimate_0 @ 0x362b160] #3: totdiff=006cc5ab maxbdiff=00014404 [Parsed_decimate_0 @ 0x362b160] #4: totdiff=005b2dca maxbdiff=0000e7ce [Parsed_decimate_0 @ 0x362b160] #5: totdiff=000fe7bc maxbdiff=0000150d lowest [DROP] Note the missing "dup" for the "lowest" frames. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel