Playing video in 60 FPS instead of 23.975 / 30

So you had played games on your PC on 60 FPS, your eyes had been used to it and you are sick of the console frame rate that capped on 30 FPS. And on top of it, you got yourself a 60 Hz capable monitor yet you are playing your HD video collection on the native NTSC (23.976) or PAL (25.000) frame rate. However, not all of us are financial capable enough to purchase a 120Hz HDTV. If you ever had question on whether it is possible to play those HD videos that you treasured so much on your beloved 60 Hz monitor, ask no further as it is possible, provided that you have a decent processor (Core 2 Duo and above).

* Warning: After viewing those movies in 60 FPS you won't be able to get back to 23.975/25 FPS. Be advised *

The following guides had been compiled for general audience.

Step 1: Download and install

1. Download and install K-Lite Mega Codec Pack 6.5.0.

2. Download and install Avisynth 2.5.8.

3. Download the Avisynth MT (Multi-threating pack)


This will allow multi-threading. Extract the archive and put the archive.dll in your C:\Windows\system32 folder or SysWOW64 (for 64-bit OS). You should be prompted to replace the existing file if you had placed it in the correct folder.

4. Download the system.dll to prevent ffdshow from crashing.

Placed them in the same folder that you placed the avisynth.dll in step 3.

5. Download the MvTools2 (frame doubling plugin).

The link is at the bottom of the page. Place it in your AviSynth plugin directory, e.g: C:\Program Files\AviSynth 2.5\plugins or C:\Program Files (x86)\AviSynth 2.5\plugins (for 64 bit OS).

Step 2: Customizing ffdshow Avisynth plugin

a) Go to ffdshow video decoder configuration window (Start > Program Files > K-Lite Codec Pack > Configuration)

b) Under the Codec tab on the left column and then the Decoder column, make sure AviSynth format is using 'AviSynth' (default is disabled) and Raw video is set as 'all supported'.

c) Next go to AviSynth tab and ONLY tick the following settings:

- AviSynth
- 3:2 Pulldown: Ignore pulldown
- Input colorspaces: YV12
- Buffer back/ahead: 0 10

d) Go to the Output tab and verify that 'High quality YV12 to RGB conversion' is ticked. Verify the same setting also in the RGB conversion tab just below the Output tab.

Step 3: Placing AviSynth script

Go to the AviSynth tab page in ffdshow video decoder setting and copy and paste ONE of the following script to play back your videos in 60 FPS fluid smooth motion.

Script 1: Standard script.


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

Personal Note: CPU Usage is below 20% when playing 720p video and 30% when playing 1080p .mkv. Tested under Core i7 950 @ 3.0 Ghz.

Script 2: Optimized for reasonably powerful processor with decent Core 2 Duo, i5 or lower i7.


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


Script 3: Only for the ultimate processor :-D

SetMTMode(1,0)
ffdShow_source()
SetMTMode(2)
super=MSuper(pel=2, hpad=0, vpad=0, rfilter=4)
backward_1=MAnalyse(super, chroma=false, isb=true, blksize=8, searchparam=3, plevel=0, search=3, badrange=(-24))
forward_1=MAnalyse(super, chroma=false, isb=false, blksize=8, searchparam=3, plevel=0, search=3, badrange=(-24))
backward_2 = MRecalculate(super, chroma=false, backward_1, blksize=4, searchparam=1, search=3)
forward_2 = MRecalculate(super, chroma=false, forward_1, blksize=4, searchparam=1, search=3)
backward_3 = MRecalculate(super, chroma=false, backward_2, blksize=4, searchparam=0, search=3)
forward_3 = MRecalculate(super, chroma=false, forward_2, blksize=4, searchparam=0, search=3)
MBlockFps(super, backward_3, forward_3, num=60, den=1, mode=0)
SetMTMode(1)
GetMTMode(false) > 0 ? distributor() : last
From the script you can change SetMtmode(2,16) to 2,8 for 8 threads if you have a dual-core.

The pel=x number dictates the accuracy of the estimation values being 1, 2 and 4. If you have less than 60% cpu usage but are still unable to move up to the next script, increase the pel value. Vice versa for freeing up some cpu without changing scripts. Overall, cpu usage should not go over 80~85% otherwise frames will get dropped.
The num=xx value is the outputed framerate. For most people, 60 is the best, some people have different monitors so always set it to a multiple of your monitors refresh rate.



Script 4: Use this only if you found that your processor usage is high when playing the movie.


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

Script 5: Use this script only if all else fail.


setMTMode(2,8)
source=ffdshow_source()
super = source.MSuper(pel=1,hpad=16,vpad=16)
backward_vec = MAnalyse(super, blksize=16, isb =true, chroma=false, searchparam=1)
forward_vec = MAnalyse(super, blksize=16, isb =false, chroma=false, searchparam=1)
source.MFlowFps(super, backward_vec, forward_vec, num=2*FramerateNumerator(source), \
den=FramerateDenominator(source), mask=0, ml=53)
distributor()
Step 5: Verify that the video is playing @ 60 FPS.

a) Go to View > Statistic under Media Player Classic and verify that the Frame Rate is 60 (1x).

Now you can sit back, relax, and re-watch your video again in 60 FPS!!

If you are not feeling comfortable with AviSynth (e.g. high processor work load), you can try out the following alternative solution that will do the similar job.

Alternative solution 1: using the framedouble plugin (48 FPS instead of 60 FPS)

1) Go to ffdshow video encoder configuration page and then navigate to Deinterlacing tab.

2) On the right pane window, tick 'Deinterlacing', 'Process whole image', and 'Process frames tagged as progressive'. Under the 'Method' drop down menu, select Framerate double (no brainer xD).

3) Hit Apply and OK.

Alternative solution 2: use Splash Pro media player.

You can try out this media player that uses their own proprietary technique to render the smooth image. The PRO version is trial though.


The guide is compiled from the following source. All credits goes to the author: