Log in

View Full Version : howto double fps in mvtools wihtout any pc processing ?


thomaz909
5th October 2012, 23:07
when i do changefps(50) on a 25fps file in ffdshow it needs 10-50 firefox startups and then a/v is totally out of sync.

mvtools motion stuff stays in sync but it does processing and due to this high cpu usage.

is it possible to do a simple changefps with mvtools without any picture processing and high cpu usage (my tv has 100hz motion plus) ?

or is it possible with a normal avisynth script and that a/v stays in sync ?

is it also possible to have an automatic frame detection of the source ? something like "changefps(2*)" ? so 25 converts to 50 and 23.976 converts to 47.952 automatic ?

pls help.

edit: sorry i confused convert with changefps. i meant changefps !

Asmodian
5th October 2012, 23:14
You want ChangeFPS (http://avisynth.org/mediawiki/FPS#ChangeFPS) instead of ConvertFPS.

Edit: you could use ChangeFPS(clip, clip.FrameRate * 2)

Edit2: wait what does mvtools have to do with this?

thomaz909
5th October 2012, 23:33
mvtools stays in sync (with the script below) but a simple changefps avisynth script not in ffdshow when other apps do stuff on the machine. especially firefox. for example when i start and close firefox 10-50 times video is late for 1-2 seconds.


SetMemoryMax(64)
SetMTMode(5,4)
ffdShow_source()
SetMTMode(2)
super=MSuper(pel=1, hpad=0, vpad=0)
backward_1=MAnalyse(super, chroma=false, isb=true, blksize=16, blksizev=16, searchparam=3, plevel=0, search=3, badrange=(-24))
forward_1=MAnalyse(super, chroma=false, isb=false, blksize=16, blksizev=16, searchparam=3, plevel=0, search=3, badrange=(-24))
backward_2 = MRecalculate(super, chroma=false, backward_1, blksize=8, blksizev=8, searchparam=0, search=3)
forward_2 = MRecalculate(super, chroma=false, forward_1, blksize=8, blksizev=8, searchparam=0, search=3)
MBlockFps(super, backward_2, forward_2, num=FramerateNumerator(last)*2, den=FramerateDenominator(last)*1, mode=0)
SetMTMode(1)
GetMTMode(false) > 0 ? distributor() : last


ChangeFPS(clip, clip.FrameRate * 2) doesnt work.
do i have to exchange clip with something other for ffdshow video source ?

Didée
5th October 2012, 23:49
Since you're using a TV with motion plus, why do you want to do motion interpolation with the PC? Let the TV do it instead! (Except when it's a Samsung 5xxx - the "motion plus" of series 5 is a mis-naming. The real motion plus starts only with series 6xxx and above.)

If you do it via MVTools and have performance issues, use a more simple script. Use easier search settings. And ditch the recalculate alltogether.

Asmodian
5th October 2012, 23:57
While Didée's suggestions are preferred if you want to use the simple frame doubling you can use the implicit last variable.

ChangeFPS(last, last.FrameRate * 2)

or set clip to ffdShow_source() as:

clip=ffdShow_source()
ChangeFPS(clip, clip.FrameRate * 2)

thomaz909
6th October 2012, 00:02
ChangeFPS(framerate*2) did the job but i think it'll get async again. must do some testing.

i want changefps to get rid of some xp ati driver problems (nv12 video output @ vmr7 windowed.) with single rates.

Didée
6th October 2012, 00:06
For life playback, framerate doubling via ChangeFps is exactly pointless, anyway.

Edit - Oh, driver problems. What about using a different renderer, and/or different colorspace?

thomaz909
6th October 2012, 01:04
its ok.

the async problem is ffdshow.

ffdshow with its own decoder = async
ffdshow raw filter with for example mainconcept h264 decoder = sync

i do crazy stuff like this to test if video gets async. :)

:end
%programfiles%\firefox\firefox.exe
ping 1.1.1.1 -n 1 -w 5000
TASKKILL /F /IM firefox.exe
TASKKILL /F /IM plugin-container.exe
ping 1.1.1.1 -n 1 -w 5000
goto end


other question.

is it possible to make the script so that it does "changefps" for source fps lower than 25 fps and doesnt do "changefps" for source fps bigger than 25 fps ?

ffdshow automatic preset loading also does stupid things. *cry* :(