[FFmpeg-user] propagation of frames in a filter complex

Mark Filipak markfilipak.windows+ffmpeg at gmail.com
Fri Apr 17 12:01:43 EEST 2020


On 04/17/2020 04:25 AM, Ted Park wrote:
> Hey,
> 
>>>> What do you mean?
>>>>
>>>> split[A]    select='not(eq(mod(n+1\,5)\,3))'       [C]interleave
>>>>      [B]split[D]select='eq(mod(n+1\,5)\,2)'[F]blend[D]
>>>>              [E]select='eq(mod(n+1\,5)\,3)'[G]
>>>>
>>>> I created the filtergraph by hand. I don't know what folks expect, but since duplicating pads (e.g., "[A] [A]") just takes up space, I didn't duplicate them. I don't know whether that relates to "reuse filter pad labels". Could you put some 'meat' on your 'bones'?
>>> I meant using D twice.
>>
>> How would I use D twice? What do you have in mind? Can you draw a picture? I'm a picture-guy.
>>
>>> I thought it might create a cycle or something but since the first pair of [D] were linked to each other I guess that means you could use it again for blend's output pad.
>>
>> D already is 'blend's output pad.
> 
> I'm not really sure how else to put it, I think you might just be missing it because it's familiar to you. Anyway, it's not that important, but if you look at each pad in the diagram, D is used as the split filters' output pads before that, I was just commenting I didn't know you could connect an output pad, connect it to an input pad and then use the same label again later on.

Ooops! Well, Ted, you see [D] twice because I made a mistake -- I'm juggling several differing 
versions simultaneously. Sorry. Here's the actual sketch of the filtergraph:

split[A]    select='not(eq(mod(n+1\,5)\,3))'       [C]interleave
      [B]split[E]select='eq(mod(n+1\,5)\,2)'[G]blend[D]
              [F]select='eq(mod(n+1\,5)\,3)'[H]

(Note: I don't take this approach anymore.)

>>> For the actual filter though, should it look better on a 60Hz vertical refresh panel than 120Hz? I don't fully understand the rationale, but I was curious and tried it, on film material I can't tell the difference but animation looks horrible at 120Hz (like I'm dizzy, like a slow motion blur effect at regular speed?) but it's fine at 60Hz.
>>
>> A p24-to-p120 is a no brainer: 120/24 = 5, therefore, a simple 5x frame repeat. But what about folks who don't have 120Hz TVs?
>>
>> A p24-to-p60 is problematic: 60/24 = 2.5, therefore, a telecine.
>>
>> A p24-to-p30-to-p60 is a 23 pull-down telecine followed by 2x frame repeat. It's awful.
>>
>> A p24-to-p60 55 pull-down telecine is far superior, but players and TVs don't do that -- at least, MPV and/or my TV don't do it.
> 
> Yes, now I understand that it would reduce the stuttering you can get, I didn't know there were 60Hz display controllers that weren't capable of switching to 48Hz (and 96Hz for 120Hz displays) until recently.

A native 60Hz TV runs at 60Hz (or 60/1.001Hz).

> But I don't understand why the same 60fps result looks so much worse when the refresh rate is set to 120Hz. Maybe  it is because I am trying to view the filtered result in real time instead of writing to disk and playing.

A 120Hz TV will take a 60fps video and convert it to 120fps by simple 2x frame doubling.

P         P         P         P         -- p24
P P P P P P P P P P P P P P P P P P P P -- p24-to-p120

P         P         P         P         -- p24
P       P       C       C       P       -- p24-to-p30
P   P   P   P   C   C   C   C   P   P   -- p24-to-p30-to-p60
P P P P P P P P C C C C C C C C P P P P -- p24-to-p30-to-p60-to-p120

P         P         P         P         -- p24
P   P   P   P   C   C   P   P   P   P   -- p24-to-p60 (55 pull-down)
P P P P P P P P C C C C P P P P P P P P -- p60-to-p120

Compare:
P P P P P P P P P P P P P P P P P P P P -- p24-to-p120 <--best
P P P P P P P P C C C C C C C C P P P P -- p24-to-p30-to-p60-to-p120 <-- worst
P P P P P P P P C C C C P P P P P P P P -- p60-to-p120 <--okay

Does this explain why a p60, 55 telecine viewed on a 120Hz TV would look worse than p24 viewed on a 
120Hz TV?


More information about the ffmpeg-user mailing list