[FFmpeg-user] Decombing via screening - 'tblend' bug (?)

Mark Filipak markfilipak.windows+ffmpeg at gmail.com
Wed Apr 15 11:50:39 EEST 2020


On 04/15/2020 04:25 AM, Paul B Mahol wrote:
> On 4/15/20, Mark Filipak <markfilipak.windows+ffmpeg at gmail.com> wrote:
>> Request for bug confirmation is included.
>>
>> Correction: I had datascope in #2 just 1 time. I don't know how it got into
>> the original post twice.
>> Sorry. - M.
>>
>> On 04/14/2020 10:24 AM, Paul B Mahol wrote:
>>> On 4/14/20, Mark Filipak <markfilipak.windows+ffmpeg at gmail.com> wrote:
>>>> In the command line below,
>>>>                   I will eventually insert a screen maker --+
>>>>                                                             ¦
>>>> separatefields,scale=height=2*in_h:sws_flags=neighbor,--HERE--,tblend=normal[D]
>>>>
>>>> but first, I need to persuade 'tblend' to accept the 2 frames made by
>>>> 'separatefields' (and scaled
>>>> by 'scale').
>>>> But as you can see in the next section (extracted from the log), though
>>>> the
>>>> 'height=2*in_h'
>>>> directive works (i.e., the 1920x540 frames from 'separatefields' are
>>>> scaled
>>>> to 1920x1080), ffmpeg is
>>>> not happy. Is it because the SARs don't match? How can I overcome that?
>>>> Thanks!
>>>
>>> Insert setsar=1 after scale?
>>
>> Thank you, Paul. It works. I apologize for not finding that solution on my
>> own ...how embarrassing.
>>
>> Next problem: 'tblend' appears to be malfunctioning.
>>
>> "The tblend (time blend) filter takes two consecutive frames from one single
>> stream, and outputs the
>> result obtained by blending the new frame on top of the old frame."
>>
>> #1 - This works as expected:
>> ffmpeg -i IN -filter_complex "telecine=pattern=5, split[A][B],
>> [A]select='not(eq(mod(n+1\,5)\,3))'[C], [B]select='eq(mod(n+1\,5)\,3)',
>> datascope=size=1920x1080:x=45:y=340:mode=color2[D], [C][D]interleave" OUT
>>
>> #2 - This malfunctions:
>> ffmpeg -i IN -filter_complex "telecine=pattern=5, split[A][B],
>> [A]select='not(eq(mod(n+1\,5)\,3))'[C], [B]select='eq(mod(n+1\,5)\,3)',
>> separatefields,
>> scale=height=2*in_h:sws_flags=neighbor, setsar=1, tblend,
>> datascope=size=1920x1080:x=45:y=340:mode=color2, [C][D]interleave" OUT
>>
>> #1 brings up datascope in frames (n, zero-based): 2 7 12 17 etc., as
>> expected.
>> #2 brings up datascope in frames (n, zero-based): 4 7 10 13 etc.
>>
>> Another clue is:
>> #1 OUT has 598 frames.
>> #2 OUT has 716 frames.
>>
>> Would someone who has the latest nightly build kindly confirm this. I can
>> supply the test video --
>> contact me off-list.
> 
> You still can not read documentation? Why?
> 
> interleave filter simply picks frames from several streams.
> This is obviously explained in documentation.
> tblend filter blend successive frames, this is obviously different
> from interlace filter as that will not drop any frame like interlace
> does.

Look at my command lines again. Here, I'll give you filtergraphs:

#1
telecine -> split -> select (n+1%5!=3) ----------------------------> interleave
                   -> select (n+1%5==3) ---------------------------->
598 frames (correct)

#2
telecine -> split -> select (n+1%5!=3) ----------------------------> interleave
                   -> select (n+1%5==3) -> separatefields...tblend ->
716 frames (malfunction)

598*4/5 = 478 frames (upper 'select')
598*1/5 = 119 frames (lower 'select')
119*2 = 238 frames (output of 'separatefields')
238/2 = 119 frames (what output of 'tblend' is supposed to be)
238 frames (what output of 'tblend' actually is)
478+238 = 716 frames (output of 'interleave' showing that 'tblend' malfunctions)



More information about the ffmpeg-user mailing list