Log in

View Full Version : ConvertFPS not behaving as I'd expect [2.5.6 broken, 2.5.7 fixed]


wonkey_monkey
28th January 2007, 01:47
I've just been experimenting with a 25fps progressive clip and using convertfps(50) to double the framerate. From an input sequence of:

A
B
C

I was hoping (and expecting, based on my reading of the documentation) for an output of:

A
(A+B)/2
B
(B+C)/2
C

or something similar - but instead I get

A
A
B
B
C
C

Can someone explain why it's behaving this way? What should I use to get what I'm after (for arbitrary frame rates, not just doubling)?

David

actionman133
28th January 2007, 02:32
I get a similar result... strange...

But this will get you the results you want. It inserts blended frames between your originals.

Interleave (last, Merge (last, DeleteFrame (0)))

Mug Funky
28th January 2007, 02:38
that's the desired behaviour IMHO...

if you want blends, use clouded's "blendfps" and set aperture to 2.

it's also a little faster than convertfps and behaves identically at aperture=1.

you'll need "motion.dll". use search :)

wonkey_monkey
28th January 2007, 03:05
that's the desired behaviour IMHO...

Not desired by me ;) Though I think I now see how it was intended to work. For a 200% increase, I was hoping for newframe 1 (frame 0.5 in the original stream) to be an equal blend of frame 0 and frame 1. Convertfps seems to looking at the span from frame 0.5-frame 0.999r, sees that both lie within frame 0, and so just copies the frame (it's hard to explain the pictures in my head sometimes!).

I'll check out blendfps. I was using search yesterday to try and find motion.dll, but the forum search doesn't recognise the .dll part, and the author's site is down. Someone had an otherwise unfindable link, though, but it doesn't seem to come with any documentation - what does aperture=2 do?

ETA: A quick test with blendfps shows it isn't quite doing what I want either - with aperture=2, it weighs too heavily on the earlier frame, so I'm getting:

A
(A+A+B)/3
B
(B+B+C)/3
C

I'm looking for the temporal equivalent of bilinear interpolation...

David

Alain2
28th January 2007, 12:08
a=trim(1,0)
b=merge(last,a)
interleave(a,b)
assumefps(50)

Should do the trick ? But like you I would expect convertfps to do it, and changefps to have the behaviour you showed in your first post

wonkey_monkey
28th January 2007, 13:51
Yup, that will double up in the way I'm after, but it won't work for arbitrary framerate changes.

As I said I can see the logic behind convertfps now (although it's not how I'd do it) but I'm not sure what's up with blendfps.

Anyone know of any other solutions? It's just occured to me that I could do some huge amounts of interleaving and merging to get a bilinearly interpolated clip of, say, 256x the length, and then changefps back down to my desired framerate, but it's not a very elegant solution!

David

Fizick
28th January 2007, 23:11
It is rather strange. What avisynth version do you use?
IMO, convertfps was broken in avisynth 2.5.6 and before.
I fixed it in some 2.5.7 beta.
It work as you say (blend 50 percent for double framerate).
May be I brake it other way?
Will try test.

IanB
29th January 2007, 09:43
Old News, Yes Fizick, you fixed it for 2.5.7

In 2.5.6 and prior, it behaved the same as ChangeFPS when Zoneing was not enabled i.e. As pupported in this thread.

It also only processed YUY2 pixel format. Tritical removed that restriction also for 2.5.7

wonkey_monkey
29th January 2007, 10:44
Great, thanks! I'll give 2.5.7 a try.

David

PS Is there any way to install Avisynth from the command line? If a computer already has 2.5.6, can I just replace avisynth.dll to upgrade?

IanB
29th January 2007, 11:15
Yes, but you would miss out on an upgraded DirectShowSource, TCPDeliver and documentation.