Log in

View Full Version : 23.976 to 29.97 via 3:2


speedyrazor
22nd January 2016, 00:10
Hi, I was using Avisynth to apply a 3:2 pulldown to a 23.976 source to achieve 29.97. How would I do this using VapourSynth please?

Kind regards.

Myrsloik
22nd January 2016, 00:19
core.std.DoubleWeave(clip, tff=False).std.SelectEvery(cycle=10, offsets=[0, 2, 5, 8])

Same way as in Avisynth

speedyrazor
22nd January 2016, 00:40
core.std.DoubleWeave(clip, tff=False).std.SelectEvery(cycle=10, offsets=[0, 2, 5, 8])

Same way as in Avisynth
Sorry, just getting my head around this.
Using this gives me 9.59fps.

ret = core.std.AssumeFPS(ret, fpsnum=24000, fpsden=1001)
ret = core.std.DoubleWeave(ret, tff=False).std.SelectEvery(cycle=10, offsets=[0, 2, 5, 8])

speedyrazor
22nd January 2016, 08:18
This is the one I was using in Avisynth:

ChangeFPS(60000,1001)
AssumeBFF()
SeparateFields().SelectEvery(4,0,3).Weave()

jackoneill
22nd January 2016, 10:04
Myrsloik's line does 29.97 to 23.976, maybe.

Is this what you're looking for?

#clip = 24 fps
clip = core.std.SeparateFields(clip, tff=False)
clip = core.std.DoubleWeave(clip, tff=False)
clip = core.std.SelectEvery(clip, cycle=8, offsets=[0,2,4,5,7])

Offsets 0, 2, 4, and 6 will give you the original frames, 1, 3, 5, and 7 will give you the ugly ones.

speedyrazor
22nd January 2016, 19:12
Myrsloik's line does 29.97 to 23.976, maybe.

Is this what you're looking for?

#clip = 24 fps
clip = core.std.SeparateFields(clip, tff=False)
clip = core.std.DoubleWeave(clip, tff=False)
clip = core.std.SelectEvery(clip, cycle=8, offsets=[0,2,4,5,7])

Offsets 0, 2, 4, and 6 will give you the original frames, 1, 3, 5, and 7 will give you the ugly ones.
Thats exactly what I was looking for, thanks.
What would be a reverse 3:2?

jackoneill
22nd January 2016, 21:05
Thats exactly what I was looking for, thanks.
What would be a reverse 3:2?


#clip = 30 fps
clip = core.std.SeparateFields(clip, tff=False)
clip = core.std.DoubleWeave(clip, tff=False)
clip = core.std.SelectEvery(clip, cycle=10, offsets=[0,2,4,5]) # or [0,2,4,7] ?

Something like that.

speedyrazor
23rd January 2016, 17:50
#clip = 30 fps
clip = core.std.SeparateFields(clip, tff=False)
clip = core.std.DoubleWeave(clip, tff=False)
clip = core.std.SelectEvery(clip, cycle=10, offsets=[0,2,4,5]) # or [0,2,4,7] ?

Something like that.
Trying both of those produces a 23.98 file which has some interlaced fields in it.

speedyrazor
23rd January 2016, 18:30
For a reverse 3:2 pulldown in Avisynth I was usiing:

DoubleWeave()
Pulldown(0,3)

jackoneill
23rd January 2016, 18:57
Well you can always look at the output of DoubleWeave and pick the numbers yourself.

speedyrazor
23rd January 2016, 20:41
Well you can always look at the output of DoubleWeave and pick the numbers yourself.
Thats a good idea, how do I look at the output of DoubleWeave please?

TheFluff
23rd January 2016, 20:58
like you would look at the result of any other vs script

or do you just encode files and never look at them?

speedyrazor
23rd January 2016, 21:03
like you would look at the result of any other vs script

or do you just encode files and never look at them?
Sorry, I misunderstood, I thought you meant look at some sdtout of DoubleWeave.

speedyrazor
25th January 2016, 08:00
Hmmm, I have tried all variations of the above suggestion, but cant get a reverse 3:2, inverse telecine, of the original suggestion.
So I take a 23.98 file and apply this:
clip = core.std.SeparateFields(clip, tff=False)
clip = core.std.DoubleWeave(clip, tff=False)
clip = core.std.SelectEvery(clip, cycle=8, offsets=[0,2,4,5,7])

And now I want to get back to 23.98 from the 29.97 file I just created, but can't find anything to achieve this?

jackoneill
25th January 2016, 13:21
#clip = 30fps
clip = core.std.SeparateFields(clip, tff=0)
clip = core.std.SelectEvery(clip, cycle=10, offsets=[0,1,2,3,4,5,6,9])
clip = core.std.DoubleWeave(clip, tff=0)
clip = core.std.SelectEvery(clip, cycle=2, offsets=0)

This time it's tested.

speedyrazor
25th January 2016, 14:58
#clip = 30fps
clip = core.std.SeparateFields(clip, tff=0)
clip = core.std.SelectEvery(clip, cycle=10, offsets=[0,1,2,3,4,5,6,9])
clip = core.std.DoubleWeave(clip, tff=0)
clip = core.std.SelectEvery(clip, cycle=2, offsets=0)

This time it's tested.

Bingo! Works a treat, thanks for your time jackoneill.