Log in

View Full Version : speeding up mvbob


drevel
3rd March 2007, 08:33
hi , I've been lurking for some months and trying avisynth, I'm using mvbob to deinterlace HD video in 1080i, very good results but very slow, about 0.2 fps on a X2 3800+, thats about 5 days per hour of video, unpractical

is there any way to improve speed?, I'm using also fft3GPU and the speed increase is amazing from cpu version

wonder if can be done a mvbobGPU version!

Pookie
3rd March 2007, 10:09
Hi drevel, welcome to the forums. If there were any signficant ways to speed up Mvbob, they would have been implemented long ago. Put SetMemoryMax(512) as the first line in your script; sometimes it can make a big difference.

My favorite deinterlacing for 1080i is pretty simple, but very nice looking. It bobs to 59.94 fps - not DVD player compatible, but who cares? Just try it on a 5 minute stretch of video.

tdeint(mode=1)
Crop(8,8,-8,-8)
Lanczos4Resize(640,352)

If you must have 29.97 again, you can try

tdeint(mode=2)
Crop(8,8,-8,-8)
Lanczos4Resize(640,352)

See if the results are acceptable to you. It is always a trade-off between performance and quality, but my eyes like the end product (especially the 59.94 bobbed one)

Blue_MiSfit
3rd March 2007, 12:53
I find that TDeint is a great choice for working on projects where time is an even remotely important vaue :)

MVBob is amazing, but TDeint is IMHO 90% as good, and runs so much faster! I get 1-2 fps for SD material with MVBob, and 10-20fps with TDeint.

R3Z
5th March 2007, 05:25
I guess it really depends on the source ? I usually try tdient and skip through every 1000 or so frames to make sure there are no nasties (that i can see anyway). If it doesnt work as planned i go and try securebob then mvbob or mcbob.

Pookie
5th March 2007, 08:11
Absolutely. The source dictates the method to fix it. Still, I wish we all had Crays to do motion compensated deinterlacing of 1080i sources:D But usually, 1080i doesn't need such intricate processing, and most deinterlacing artifacts are masked when reducing the image size anyway.

Mug Funky
5th March 2007, 08:35
i suppose some accuracy could be sacrificed for speed if mvanalyse/compensate were replaced with clouded's motion.dll.

but for HD stuff it's probably not worth it - tdeint should be adequate (especially on HDV which is balls anyway).

drevel
6th March 2007, 05:55
thanks, my test with mvbob were amazing, will do some tests comparing mvbob and tdint , will try also the clouded motion.dll

Terka
6th March 2007, 14:15
how to do:
"mvanalyse/compensate were replaced with clouded's motion.dll"?
how big speedup coud it gain?

Mug Funky
6th March 2007, 14:36
@ terka:

i don't know atm. there's analogous functions to mvtools in motion.dll, but i'm not sure about the mask making capabilities (mvtools has loads of them).

i'm not too interested in developing something for it myself - i got a new job that doesn't involve interlace as much as the old one (instead it's 2k film scans :))

[edit]

feel free to have a shot yourself though. it'll be a good way to learn - it's not rocket science :)

drevel
7th March 2007, 11:33
using the "clouded's motion.dll" I get an improvement but no so much, about from 0.17 fps to 0.22 fps

I did not analize the results yet but it seems about the same quality

Terka
7th March 2007, 12:47
it is not so bad, about 30% speedup
drevel, please check the quality;
paste your results and script

Fizick
8th March 2007, 10:30
you can try blksize=16

Eshkhmed
15th March 2007, 19:11
...if somebody around have a documentation to motion.dll and latest build of it... pls can u paste a link for it in this thread or explain what parameters can to be used with it...because the default link to developer page is "forbidden" fo me...

Wilbert
15th March 2007, 22:47
http://forum.doom9.org/showthread.php?t=118430

drevel
15th March 2007, 23:01
I simply changed the functions without parameters, anyway the results are lot worse in a couple of videos, in motion areas of course,

I'm comparing it now with tdeint and anothers

AKarpo
2nd May 2008, 23:40
Great method, just one question. If my original source is 30fps and I use this to go 60fps, what is the proper way to adjust my audio stream? (If I need to at all)

Sorry, I'm still new to all of this, but I really enjoy learning new methods.

Southstorm
3rd May 2008, 00:35
No need to adjust the audio. The deinterlacer doubles the framecount, it doesn't speed up the video.

Adub
3rd May 2008, 01:53
The reason is because it plays the same amount of time. Sure there are twice as many frames, but if you play it twice as fast, then you length stays the same. See?

Terka
3rd May 2008, 09:46
try mvbobmod too

LaTo
12th May 2008, 20:04
You can also try this :
### "Light" MvBob (Speed Up) by LaTo
###
### Need: Motion.dll, Corrector.dll, EEDI2.dll, Vinverse.dll, Medianblur.dll
###
### Use: MvBobFaster()


function MvBobFaster(clip Input)
{
# Input
Order = ( Input.GetParity == True ) ? 1 : 0
Input = ( order == 1 ) ? Input.AssumeTFF() : Input.AssumeBFF()

# Bobbed
Bobbed = Input.Separatefields().EEDI2(field=-2)
Bobbed = ( Order == 1 ) ? Bobbed.AssumeTFF() : Bobbed.AssumeBFF()

# Motion Vectors
MoCompFWD = Bobbed.Compensate(source = previous)
MoCompBWD = Bobbed.Compensate(source = next)

# Mismatch Detection
AnalyseBobCurr = Bobbed.BicubicResize(Input.Width * 2, Input.Height).MedianBlur().BicubicResize(Input.Width, Input.Height)
AnalyseCompFWD = MoCompFWD.BicubicResize(Input.Width * 2, Input.Height).MedianBlur().BicubicResize(Input.Width, Input.Height)
AnalyseCompBWD = MoCompBWD.BicubicResize(Input.Width * 2, Input.Height).MedianBlur().BicubicResize(Input.Width, Input.Height)
MoCompCorrected = Corrector(AnalyseBobCurr, Bobbed, AnalyseCompFWD, AnalyseCompBWD, MoCompFWD, MoCompBWD, Mode = 0, Th = 10)

# Interpolated Fields
Compensated_Even = MoCompCorrected.SelectEven().SeparateFields().SelectOdd()
Compensated_Odd = MoCompCorrected.SelectOdd().SeparateFields().SelectEven()

# Original Fields
Original_Even = Input.SeparateFields().SelectEven()
Original_Odd = Input.SeparateFields().SelectOdd()

# Merge
Output_Even = Interleave(Original_Even, Compensated_Even).Weave()
Output_Odd = Interleave(Original_Odd, Compensated_Odd).Weave()
Output = Interleave(Output_Even, Output_Odd)

# Output
Output = Output.Vinverse()
Output = ( Order == 1 ) ? Output.AssumeTFF() : Output.AssumeBFF()

Return Output
}

Dlls Here (http://latoninf.free.fr/div/MvBobFaster/)

Adub
12th May 2008, 20:55
Is that thing even close to MVbob's quality? I haven't tried it, but it is like 1/8th the length of the original mvbob.

LaTo
13th May 2008, 17:39
Yes it's a "light" mvbob... and the quality is less too :p

Didée
14th May 2008, 11:57
... and the quality is less too :p
Compairing to a "high anchor":

http://www.mediafire.com/?yrcez3nxmfm (4 MB, 15 frames)

It is fast, and it's pretty much useless. There's no need to abuse motion compensation to get such a result. You'll get the same result with standard smart deinterlacers, perhaps even better.

LaTo
14th May 2008, 13:35
Yes, I know, it's just a old script for testing "motion.dll" motion compensation...