Log in

View Full Version : Re-interlace


tObber166
5th February 2016, 19:04
Let's say i have a 25p clip, and my goal is to achieve 25i.

in AviSynth I have always used:

AssumeTFF().SeparateFields().SelectEvery(4, 0, 3).Weave()


In vapoursynth, is this the right equivalent syntax?

v = core.std.SeparateFields(v, tff=True)
v = core.std.DoubleWeave(v, tff=True)
v = core.std.SelectEvery(v, cycle=2, offsets=0)



From the look of the preview it looks fine, but I'm not sure if this is the right way to proceed?

//Thanks

feisty2
5th February 2016, 19:30
Just out of curiosity, why would anyone still want his vid to be interlaced (which is absolutely 100% evil, I f**king hate analog videos mostly for the interlacing feature, and who knows why the heck digital videos inherited this freaking obsolete thing as if anyone will ever watch a digital video on a CRT screen) in a world full of LCD screens?
Interlacing should just die with CRT screens and analog videos.

tObber166
5th February 2016, 20:02
Well, I can't talk for everyone.

But my goal with this is to merge some mobile clips, which is shoot at a range of 24p-30p to a Sony HD cam which records at 25i

And I want to avoid to reencode my Sony clips, and also keep the smoothness :p

Asmodian
5th February 2016, 20:08
It would be much better for (almost) everyone viewing it after you are done editing if you deinterlaced your 25i to 50p. You keep the smoothness and have progressive video which looks much better on everyone's progressive displays.

feisty2
5th February 2016, 20:09
I'd go VFR, the one and only perfect solution here

feisty2
5th February 2016, 20:18
1. Convert your 24/30 fps footage to 50p by adding duplicate frames
2. Bob 50i stuff to 50p
3. edit at 50p
4. Do a duplicate frame decimation and distribute the final master as a VFR video
Edit: typo

Asmodian
5th February 2016, 20:33
And you can even skip step 4 and still have watchable video, not as good as VFR but much better than anything else. :)

tObber166
5th February 2016, 20:42
Ok, I see.
Thanks for your suggestions guys, really appreciated. :D

Think i'm going for the Bob/VFR solution.


But if I may be a little stubborn, would the equivalent vapour syntax above still be right?

I'm moving everything I've used for avisynth to vapoursynth, so I'm trying to learn at the same time :p


/Thanks

splinter98
5th February 2016, 21:02
Ok, I see.
But if I may be a little stubborn, would the equivalent vapour syntax above still be right?


Untested but based off the documentation the equivalent in VapourSynth would be:


v = (v.std.SeparateFields(tff=True)
.std.SelectEvery(cycle=4, offsets=[0, 3])
.std.DoubleWeave(tff=True)
.std.SelectEvery(cycle=2, offsets=0))

foxyshadis
6th February 2016, 00:54
Untested but based off the documentation the equivalent in VapourSynth would be:


v = (v.std.SeparateFields(tff=True)
.std.SelectEvery(cycle=4, offsets=[0, 3])
.std.DoubleWeave(tff=True)
.std.SelectEvery(cycle=2, offsets=0))


That's 50p->50i (aka 25i). 25p->50i is a no-op, it's already ready to go, unless you want to do fancy frame-interpolation. (The first post's VS code is a complicated no-op.) You just have to treat it as interlaced.