Avisynth Script for doubling video frame rates - Page 25 - AVS Forum
Forum Jump: 
Reply
 
Thread Tools
post #721 of 1968 Old 12-03-2010, 03:22 PM
Senior Member
 
widezu69's Avatar
 
Join Date: Feb 2010
Posts: 319
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
Quote:
Originally Posted by HolyWu View Post

For people who don't know, the official build of AviSynth 2.6.0 Alpha 2 still not include MT yet. Here is the MT version dll for 2.6.

Thanks previous post edited.
widezu69 is offline  
Sponsored Links
Advertisement
 
post #722 of 1968 Old 12-04-2010, 03:10 AM
Member
 
HolyWu's Avatar
 
Join Date: Nov 2010
Posts: 21
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
For people who want to apply different setting for 480p, 720p and 1080p video on real-time playback(just like me), here is my script to share with you guys(adapted from widezu69, neograniceni and SubJunk's awesome script ).

SetMemoryMax(512)
SetMTMode(2, 12)
ffdshow_source()
FrameRate(last) <= 30 && Height(last) <= 480 ? Eval("""
super = MSuper(hpad=0, vpad=0, rfilter=4)
backward_vec = MAnalyse(super, blksize=16, search=3, searchparam=0, isb=true, plevel=0, badrange=-24)
forward_vec = MAnalyse(super, blksize=16, search=3, searchparam=0, isb=false, plevel=0, badrange=-24)
backward_re1 = MRecalculate(super, backward_vec, blksize=8, search=3, searchparam=0)
forward_re1 = MRecalculate(super, forward_vec, blksize=8, search=3, searchparam=0)
backward_re2 = MRecalculate(super, backward_re1, blksize=4, search=3, searchparam=0)
forward_re2 = MRecalculate(super, forward_re1, blksize=4, search=3, searchparam=0)
MFlowFps(super, backward_re2, forward_re2, num=60000, den=1001, ml=10000)
""") : FrameRate(last) <= 30 && Height(last) <= 720 ? Eval("""
super = MSuper(hpad=0, vpad=0, rfilter=4)
backward_vec = MAnalyse(super, blksize=16, search=3, searchparam=0, isb=true, plevel=0, badrange=-24)
forward_vec = MAnalyse(super, blksize=16, search=3, searchparam=0, isb=false, plevel=0, badrange=-24)
backward_re1 = MRecalculate(super, backward_vec, blksize=8, search=3, searchparam=0)
forward_re1 = MRecalculate(super, forward_vec, blksize=8, search=3, searchparam=0)
backward_re2 = MRecalculate(super, backward_re1, blksize=4, search=3, searchparam=0)
forward_re2 = MRecalculate(super, forward_re1, blksize=4, search=3, searchparam=0)
MFlowFps(super, backward_re2, forward_re2, num=FrameRateNumerator(last)*2, den=FrameRateDenominator(last), ml=10000)
""") : FrameRate(last) <= 30 ? Eval("""
super = MSuper(hpad=0, vpad=0, pel=1, rfilter=4)
backward_vec = MAnalyse(super, blksize=16, search=3, searchparam=0, isb=true, plevel=0, badrange=-24)
forward_vec = MAnalyse(super, blksize=16, search=3, searchparam=0, isb=false, plevel=0, badrange=-24)
backward_re = MRecalculate(super, backward_vec, blksize=8, search=3, searchparam=0)
forward_re = MRecalculate(super, forward_vec, blksize=8, search=3, searchparam=0)
MFlowFps(super, backward_re, forward_re, num=FrameRateNumerator(last)*2, den=FrameRateDenominator(last), mask=0, ml=10000)
""") : last
SetMTMode(1)
GetMTMode(false) > 0 ? distributor() : last
HolyWu is offline  
post #723 of 1968 Old 12-04-2010, 03:22 AM
Member
 
HolyWu's Avatar
 
Join Date: Nov 2010
Posts: 21
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
Quote:
Originally Posted by widezu69 View Post

Thanks previous post edited.

My pleasure. Can you play smoothly with the last script you posted on 720p or even 1080p video? Even with CUDA's acceleration, using three pairs and mask=2 for 1080p is very hard on my pc.
HolyWu is offline  
post #724 of 1968 Old 12-04-2010, 03:49 AM
Senior Member
 
widezu69's Avatar
 
Join Date: Feb 2010
Posts: 319
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
Yeah I only play 720p video, the madvr upsampling does a good job and it looks almost like 1080p anyways.
widezu69 is offline  
post #725 of 1968 Old 12-04-2010, 12:28 PM
Senior Member
 
SubJunk's Avatar
 
Join Date: May 2010
Posts: 327
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
Quote:
Originally Posted by HolyWu View Post
For people who want to apply different setting for 480p, 720p and 1080p video on real-time playback(just like me), here is my script to share with you guys(adapted from widezu69, neograniceni and SubJunk's awesome script ).

SetMemoryMax(1024)
SetMTMode(1, 9)
ffdshow_source()
SetMTMode(2)
Height(last) <= 480 ? Eval("""
super = MSuper(hpad=0, vpad=0, pel=2, rfilter=4)
backward = MAnalyse(super, blksize=16, search=3, searchparam=0, isb=true, plevel=0, badrange=-24)
forward = MAnalyse(super, blksize=16, search=3, searchparam=0, isb=false, plevel=0, badrange=-24)
backward_re1 = MRecalculate(super, backward, blksize=8, search=3, searchparam=0)
forward_re1 = MRecalculate(super, forward, blksize=8, search=3, searchparam=0)
backward_re2 = MRecalculate(super, backward_re1, blksize=4, search=3, searchparam=0)
forward_re2 = MRecalculate(super, forward_re1, blksize=4, search=3, searchparam=0)
MFlowFps(super, backward_re2, forward_re2, num=FrameRateNumerator(last)*2, den=FrameRateDenominator(last), mask=2, ml=10000)
""") : Height(last) <= 720 ? Eval("""
super = MSuper(hpad=0, vpad=0, pel=2, rfilter=4)
backward = MAnalyse(super, blksize=16, search=3, searchparam=0, isb=true, chroma=false, plevel=0, badrange=-24)
forward = MAnalyse(super, blksize=16, search=3, searchparam=0, isb=false, chroma=false, plevel=0, badrange=-24)
backward_re1 = MRecalculate(super, backward, blksize=8, search=3, searchparam=0, chroma=false)
forward_re1 = MRecalculate(super, forward, blksize=8, search=3, searchparam=0, chroma=false)
backward_re2 = MRecalculate(super, backward_re1, blksize=4, search=3, searchparam=0, chroma=false)
forward_re2 = MRecalculate(super, forward_re1, blksize=4, search=3, searchparam=0, chroma=false)
MFlowFps(super, backward_re2, forward_re2, num=FrameRateNumerator(last)*2, den=FrameRateDenominator(last), mask=2, ml=10000)
""") : Eval("""
super = MSuper(hpad=0, vpad=0, pel=1, chroma=false, rfilter=4)
backward = MAnalyse(super, blksize=16, search=3, searchparam=0, isb=true, chroma=false, plevel=0, badrange=-24)
forward = MAnalyse(super, blksize=16, search=3, searchparam=0, isb=false, chroma=false, plevel=0, badrange=-24)
backward_re = MRecalculate(super, backward, blksize=8, search=3, searchparam=0, chroma=false)
forward_re = MRecalculate(super, forward, blksize=8, search=3, searchparam=0, chroma=false)
MFlowFps(super, backward_re, forward_re, num=FrameRateNumerator(last)*2, den=FrameRateDenominator(last), mask=0, ml=10000)
""")
SetMTMode(1)
GetMTMode(false) > 0 ? distributor() : last
Nice script


To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
(
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
) -
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
SubJunk is offline  
post #726 of 1968 Old 12-05-2010, 04:53 AM
Member
 
mark007's Avatar
 
Join Date: Dec 2006
Posts: 196
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
Using your script Holy Wu, but using the highest quality script for anything below 720p and actually can't use your lower quality one for anything thats 1080p... on core i7 920 @ 3.6 Does your lower quality section work for you smoothly for 1080p?

Anyways while I'm modifying it for myself I found I want to update it to only convert frame rate to my desired output rate of 50fps IF the frame rate of the original is say below or equal to 30, but my conditional statements don't seem to pick up / utilize "Framerate" all. The script always converts to 50hz even when I have a high frame rate clip, is there something wrong with this type of conditional below to check if framerate is less than or equal to 30.

Quote:


SetMemoryMax(1024)
SetMTMode(1, 16)
ffdshow_source()
SetMTMode(2)
Framerate(last) <= 30 && Height(last) <= 720 ? Eval("""

This always runs even for 60fps clips. I tried all combinations of brackets around the conditional but no luck yet. And I also have one more question for you guys if anyone knows,

Is there a major advantage in converting to exactly double the original frame rate, ie are all of the original frames used in this case, with one extra frame generated between these originals. I am imagining while I'm trying to convert say 24fps clips to 50hz, means none of the originals can be used at all (and 50 new ones need to be generated) as none of the originals would have timestamps close enough to the frames needed for a 50fps rate clip...?
mark007 is offline  
post #727 of 1968 Old 12-05-2010, 06:53 AM
Member
 
HolyWu's Avatar
 
Join Date: Nov 2010
Posts: 21
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
Quote:
Originally Posted by mark007 View Post

Using your script Holy Wu, but using the highest quality script for anything below 720p and actually can't use your lower quality one for anything thats 1080p... on core i7 920 @ 3.6 Does your lower quality section work for you smoothly for 1080p?

Yes, the third section's script play smoothly for me for 1080p. Mine is X6 1090T @ 3.2 GHz and GTX 460. I think i7 920 @ 3.6 GHz is far better than mine, there is no way you can't play it smoothly.

Anyway, I provide two variations for you to try. The CPU usage is a bit lower than the original, but I haven't compared the video quality.

super = MSuper(hpad=0, vpad=0, pel=1, chroma=false, rfilter=4)
backward = MAnalyse(super, blksize=16, search=3, searchparam=0, isb=true, chroma=false, plevel=0, badrange=-24)
forward = MAnalyse(super, blksize=16, search=3, searchparam=0, isb=false, chroma=false, plevel=0, badrange=-24)
MFlowFps(super, backward, forward, num=FrameRateNumerator(last)*2, den=FrameRateDenominator(last), mask=0, ml=10000)

or

super = MSuper(hpad=0, vpad=0, pel=1, rfilter=4)
backward = MAnalyse(super, blksize=16, search=3, searchparam=0, isb=true, plevel=0, badrange=-24)
forward = MAnalyse(super, blksize=16, search=3, searchparam=0, isb=false, plevel=0, badrange=-24)
backward_re = MRecalculate(super, backward, blksize=8, search=3, searchparam=0)
forward_re = MRecalculate(super, forward, blksize=8, search=3, searchparam=0)
MBlockFps(super, backward_re, forward_re, num=FrameRateNumerator(last)*2, den=FrameRateDenominator(last), mode=2)


Quote:
Originally Posted by mark007 View Post

Anyways while I'm modifying it for myself I found I want to update it to only convert frame rate to my desired output rate of 50fps IF the frame rate of the original is say below or equal to 30, but my conditional statements don't seem to pick up / utilize "Framerate" all. The script always converts to 50hz even when I have a high frame rate clip, is there something wrong with this type of conditional below to check if framerate is less than or equal to 30.

Did you add "Framerate(last) <= 30" in the 1080p's conditional statement too? It's better to post your entire script for debugging.


Quote:


Is there a major advantage in converting to exactly double the original frame rate, ie are all of the original frames used in this case, with one extra frame generated between these originals. I am imagining while I'm trying to convert say 24fps clips to 50hz, means none of the originals can be used at all (and 50 new ones need to be generated) as none of the originals would have timestamps close enough to the frames needed for a 50fps rate clip...?

I am not really sure about this. I think the original frame will get used in some ratio. So there will be 12 original frames in every 25 frames for 24->50 fps conversion.
HolyWu is offline  
post #728 of 1968 Old 12-05-2010, 08:25 AM
Member
 
mark007's Avatar
 
Join Date: Dec 2006
Posts: 196
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
Quote:
Originally Posted by HolyWu View Post

Yes, the third section's script play smoothly for me for 1080p. Mine is X6 1090T @ 3.2 GHz and GTX 460. I think i7 920 @ 3.6 GHz is far better than mine, there is no way you can't play it smoothly.

Anyway, I provide two variations for you to try. The CPU usage is a bit lower than the original, but I haven't compared the video quality.

super = MSuper(hpad=0, vpad=0, pel=1, chroma=false, rfilter=4)
backward = MAnalyse(super, blksize=16, search=3, searchparam=0, isb=true, chroma=false, plevel=0, badrange=-24)
forward = MAnalyse(super, blksize=16, search=3, searchparam=0, isb=false, chroma=false, plevel=0, badrange=-24)
MFlowFps(super, backward, forward, num=FrameRateNumerator(last)*2, den=FrameRateDenominator(last), mask=0, ml=10000)

or

super = MSuper(hpad=0, vpad=0, pel=1, rfilter=4)
backward = MAnalyse(super, blksize=16, search=3, searchparam=0, isb=true, plevel=0, badrange=-24)
forward = MAnalyse(super, blksize=16, search=3, searchparam=0, isb=false, plevel=0, badrange=-24)
backward_re = MRecalculate(super, backward, blksize=8, search=3, searchparam=0)
forward_re = MRecalculate(super, forward, blksize=8, search=3, searchparam=0)
MBlockFps(super, backward_re, forward_re, num=FrameRateNumerator(last)*2, den=FrameRateDenominator(last), mode=2)




Did you add "Framerate(last) <= 30" in the 1080p's conditional statement too? It's better to post your entire script for debugging.




I am not really sure about this. I think the original frame will get used in some ratio. So there will be 12 original frames in every 25 frames for 24->50 fps conversion.

Thanks alot for the input. Yeah maybe my ffdshow settings are wrong meaning im unable to do the 1080p script, I have back / forward buffers set to 5, 3:2 pulldown set to smooth timestamps, input colorspaces yv12 only. Saying that, madVR doesn't seem to show any frames being delayed or dropped in 1080p, so perhaps its MFlowFps just doing a bad / choppy job of the interpolation. But its very bad, unwatchably bad although no dropped frames.. ie 23.976 -> 50 @1080p

Here is my script (basically yours minus the middle / medium quality part, plus the attempt to make both parts of the script run only if frame rate <= 30.

Code:
SetMTMode(1, 16)
ffdshow_source()
SetMTMode(2)
Framerate <=30 && Height(last) <= 720 ? Eval("""
super = MSuper(pel=2, hpad=0, vpad=0, rfilter=4)
backward_1 = MAnalyse(super, isb=true, blksize=16, searchparam=3, plevel=0, search=3, badrange=(-24))
forward_1 = MAnalyse(super, isb=false, blksize=16, searchparam=3, plevel=0, search=3, badrange=(-24))
backward_2 = MRecalculate(super, backward_1, blksize=8, searchparam=1, search=3)
forward_2 = MRecalculate(super, forward_1, blksize=8, searchparam=1, search=3)
backward_3 = MRecalculate(super, backward_2, blksize=4, searchparam=0, search=3)
forward_3 = MRecalculate(super, forward_2, blksize=4, searchparam=0, search=3)
MFlowFps(super, backward_3, forward_3, num=50, den=1, ml=10000)
""") : Framerate <=30 && Height(last) > 720 Eval("""
super = MSuper(hpad=0, vpad=0, pel=1, chroma=false, rfilter=4)
backward = MAnalyse(super, blksize=16, search=3, searchparam=0, isb=true, chroma=false, plevel=0, badrange=-24)
forward = MAnalyse(super, blksize=16, search=3, searchparam=0, isb=false, chroma=false, plevel=0, badrange=-24)
backward_re = MRecalculate(super, backward, blksize=8, search=3, searchparam=0, chroma=false)
forward_re = MRecalculate(super, forward, blksize=8, search=3, searchparam=0, chroma=false)
MFlowFps(super, backward_re, forward_re, num=50, den=1, mask=0, ml=10000)
""")
SetMTMode(1)
GetMTMode(false) > 0 ? distributor() : last
EDIT: It was actually the latest nvidia drivers causing the 1080p slowdown problem, the nvidia control panel says display is at 50hz, when my screen was actually at 60hz..... ugh, had to set to 50hz using the windows monitor settings... just the issue with the Framerate variable checking now...
mark007 is offline  
post #729 of 1968 Old 12-05-2010, 10:42 AM
Senior Member
 
widezu69's Avatar
 
Join Date: Feb 2010
Posts: 319
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
Well interpolating 23.98 to 50 is bad because as you said no real frames are used, each second has a set of new frames. What I would recommend is using the frame doubling line which doubles your frames to 48 giving you a 1:1 ratio between real and fake frames then use reclock to speed your video up a small bit to 50hz. Much easier on the cpu and still in sync with your monitor.
Try this script:

SetMemoryMax(1536)
SetMTMode(1,16)
V = ffdshow_source()
SetMTMode(2)
S = V.MSuper(pel=2, hpad=0, vpad=0, rfilter=4)
A = S.MAnalyse(isb=true, blksize=16, search=3, plevel=0, searchparam=3, badrange=(-24))
B = S.MAnalyse(isb=false, blksize=16, search=3, plevel=0, searchparam=3, badrange=(-24))
C = S.MRecalculate(A, blksize=8, search=3, searchparam=1)
D = S.MRecalculate(B, blksize=8, search=3, searchparam=1)
V.MFlowFps(S, C, D, num=FramerateNumerator(V)*2, den=FramerateDenominator(V)*1, mask=2, ml=10000)
SetMTMode(1)
GetMTMode(false) > 0 ? distributor() : last

I'm assuming you have a quad (not i7)
widezu69 is offline  
post #730 of 1968 Old 12-05-2010, 01:44 PM
Member
 
mark007's Avatar
 
Join Date: Dec 2006
Posts: 196
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
Cheers, I'll try that, yes using core i7 920. Will post any scripts I come up with. Framerate variable not workig still of course.
mark007 is offline  
post #731 of 1968 Old 12-05-2010, 03:57 PM
Senior Member
 
widezu69's Avatar
 
Join Date: Feb 2010
Posts: 319
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
Quote:
Originally Posted by mark007 View Post

Cheers, I'll try that, yes using core i7 920. Will post any scripts I come up with. Framerate variable not workig still of course.

Previous post edited to reflect i7. Make sure you have reclock set as your default audio renderer and you have your display at 50hz
widezu69 is offline  
post #732 of 1968 Old 12-06-2010, 05:45 AM
Member
 
HolyWu's Avatar
 
Join Date: Nov 2010
Posts: 21
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
Quote:
Originally Posted by mark007 View Post

Framerate variable not workig still of course.

Insert Info() below ffdshow_source() line to see what FPS AviSynth reports for your 60p video.
HolyWu is offline  
post #733 of 1968 Old 12-06-2010, 08:20 AM
Member
 
mark007's Avatar
 
Join Date: Dec 2006
Posts: 196
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
Quote:
Originally Posted by HolyWu View Post

Insert Info() below ffdshow_source() line to see what FPS AviSynth reports for your 60p video.

Yeah alot of them are reported as 59.869 or 59.93 or similar. Is this the reason my logic in my script eg Framerate < 30 doesn't work, because its not an integer?

And yes using fixed frame rates like 50 or 60 has a MASSIVE impact on speed, using FrameRateNumerator * 2 obviously must mean alot less work for avisynth so my script is improved alot now. Do any of you guys that work with these alot know which of the arguments to each command like MSuper, MRecalculate, MAnalyse, MFlowFps has the largest impact on quality in order. I'm trying to decide on which of the arguments I can sacrifice in order to achieve a smooth framerate.

eg what I imagine is the order of importance to final quality roughly.
MSuper - pel=2 / pel=1
MFlowFps - mask=2 / mask=1 / mask=0
MAnalyse / MRecalculate - blksize and search params..
MAnalyse / MRecalculate - chroma=true / chroma=false

Just if anyone could put their thoughts on an (rough of course) order of what they feel has the largest impact on quality. My 1080p script atm for my core i7 is as follows, ie using mask=0 and chroma=false yet keeping pel=2 to allow framerate to reach 48 but still seeing some small hiccups every few seconds on busy scenes so not sure where to turn next. Quality not too bad so far. If I had a greater idea of what arguments should be retained for high quality, I could fiddle more with the lesser ones to maximize quality / minimize hiccups.

Quote:


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)
MFlowFps(super, backward_3, forward_3, num=FrameRateNumerator*2,mask=0, den=FrameRateDenominator, ml=10000)

mark007 is offline  
post #734 of 1968 Old 12-06-2010, 09:38 AM
Member
 
HolyWu's Avatar
 
Join Date: Nov 2010
Posts: 21
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
Quote:
Originally Posted by mark007 View Post

Yeah alot of them are reported as 59.869 or 59.93 or similar. Is this the reason my logic in my script eg Framerate < 30 doesn't work, because its not an integer?

No. I just find that your conditional statements were incorrect you posted in #748.

Correct statements should be:

Code:
Framerate <= 30 && Height(last) <= 720 ? Eval("""
x
x
x
""") : Framerate <= 30 && Height(last) > 720 ? Eval("""
x
x
x
""") : last
It's weird AviSynth didn't show any error message to you.
HolyWu is offline  
post #735 of 1968 Old 12-09-2010, 02:20 PM
Member
 
mark007's Avatar
 
Join Date: Dec 2006
Posts: 196
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
Hi guys,

-- Is higher quality possible?
Without trying to get the Framerate variable working in my script, I attempted today to achieve the best possible quality for my < 1080p movies (and work on 1080p+ script seperately at another time). I am using the highest quality code from

http://www.spirton.com/convert-videos-to-60fps/

to do this, and find that I can even multiply most of my medium resolution movies by 5 / 10x their original speeds without any massive impact on my cpu, so that leads me again to see if I can achieve higher quality than the above script when doubling the framerate.

I have been watching the first two minutes or so of Goldeneye, where Bond jumps off the Dam. Even with the highest quality script above, Bonds hand looks like a fluttering butterfly as he is moving down the dam. My question is, is this the absolutely hightest quality possible? I have tried myself changing some of the variables based on the mvtools page http://avisynth.org.ru/mvtools/mvtools2.html but can't seem to stop Bonds hand from fluttering. I assume because the dam behind him is moving so fast, yet I would have thought because his arm is such a contrasting color, that the motion detection would figure it out. I even tried pel=4 but nothing improves the situation.

Any input guys, SubJunk any possible improvements to quality in your script or is this as good as it gets?

For my 1080p script, no matter what 1080p script I use I can't achieve high enough quality for my liking that'll stay smooth for some scenes that seem to stress it out like the 20th Century Fox at the beginning of Avatar. The moment I achieve something that appears to be beautiful quality, some scenes like this bring my machine to a crawl.

-- Problems I am encountering so far apart from the above are.

1) When seeking, I often find it takes a few seconds for new frames to get generated, ie I begin to see really old frames for a few seconds. Is this an ffdshow bug? Is it display frames from the buffer rather than clearing it on seek?
2) My script below which has no actual manipulation code for 1080p content yet, adds a horrible video delay.... like over half a second delay. Is there anywhere to officially report avisynth problems like this. Are the timestamps on the frames changed or something, even though no actual manipulation should be performed (nor is it) for 1080p content with script below.

Quote:


SetMTMode(1, 16)
ffdshow_source()
SetMTMode(2)
Height(last) < 1080 ? Eval("""
super = MSuper(pel=2, hpad=0, vpad=0, rfilter=4)
backward_1 = MAnalyse(super, isb=true, blksize=16, searchparam=3, plevel=0, search=3, badrange=(-24))
forward_1 = MAnalyse(super, isb=false, blksize=16, searchparam=3, plevel=0, search=3, badrange=(-24))
backward_2 = MRecalculate(super, backward_1, blksize=8, searchparam=1, search=3)
forward_2 = MRecalculate(super, forward_1, blksize=8, searchparam=1, search=3)
backward_3 = MRecalculate(super, backward_2, blksize=4, searchparam=0, search=3)
forward_3 = MRecalculate(super, forward_2, blksize=4, searchparam=0, search=3)
MFlowFps(super, backward_1, forward_1, num=FrameRateNumerator(last)*2, den=FrameRateDenominator(last), ml=10000)
""") : Eval("""
""")
SetMTMode(1)
GetMTMode(false) > 0 ? distributor() : last

mark007 is offline  
post #736 of 1968 Old 12-10-2010, 03:14 AM
Senior Member
 
widezu69's Avatar
 
Join Date: Feb 2010
Posts: 319
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
@mark007, you can adjust the delay of sound in mpc to re-align the with the video in the playback using options -> audio switcher. The flickering of old frames is a common flaw with this as it has to 'burn up' the pre rendered frames before making new ones.
The object flickering artefact is just the way the script works. The back ground is moving way too fast for the foreground object to be estimated correctly. Remember it is still a 2d image and mvtools or any other script is not clever enough to know the depth of view.
Try this script as it only estimates luma values, should work better for 1080p without much compromise on visual quality.

SetMemoryMax(1536)
SetMTMode(1,16)
V = ffdshow_source()
SetMTMode(2)
S = V.MSuper(pel=2, hpad=0, vpad=0, rfilter=4)
A = S.MAnalyse(isb=true, chroma=false, blksize=16, search=3, plevel=0, searchparam=3, badrange=(-24))
B = S.MAnalyse(isb=false, chroma=false, blksize=16, search=3, plevel=0, searchparam=3, badrange=(-24))
C = S.MRecalculate(A, chroma=false, blksize=8, search=3, searchparam=1)
D = S.MRecalculate(B, chroma=false, blksize=8, search=3, searchparam=1)
E = S.MRecalculate(C, chroma=false, blksize=4, search=3, searchparam=0)
F = S.MRecalculate(D, chroma=false, blksize=4, search=3, searchparam=0)
V.MFlowFps(S, E, F, num=FramerateNumerator(V)*2, den=FramerateDenominator(V)*1, mask=2, ml=10000)
SetMTMode(1)
GetMTMode(false) > 0 ? distributor() : last
widezu69 is offline  
post #737 of 1968 Old 12-10-2010, 03:24 AM
Member
 
mark007's Avatar
 
Join Date: Dec 2006
Posts: 196
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
Quote:
Originally Posted by widezu69 View Post
@mark007, you can adjust the delay of sound in mpc to re-align the with the video in the playback using options -> audio switcher. The flickering of old frames is a common flaw with this as it has to 'burn up' the pre rendered frames before making new ones.
The object flickering artefact is just the way the script works. The back ground is moving way too fast for the foreground object to be estimated correctly. Remember it is still a 2d image and mvtools or any other script is not clever enough to know the depth of view.
Try this script as it only estimates luma values, should work better for 1080p without much compromise on visual quality.

SetMemoryMax(1536)
SetMTMode(1,16)
V = ffdshow_source()
SetMTMode(2)
S = V.MSuper(pel=2, hpad=0, vpad=0, rfilter=4)
A = S.MAnalyse(isb=true, chroma=false, blksize=16, search=3, plevel=0, searchparam=3, badrange=(-24))
B = S.MAnalyse(isb=false, chroma=false, blksize=16, search=3, plevel=0, searchparam=3, badrange=(-24))
C = S.MRecalculate(A, chroma=false, blksize=8, search=3, searchparam=1)
D = S.MRecalculate(B, chroma=false, blksize=8, search=3, searchparam=1)
E = S.MRecalculate(C, chroma=false, blksize=4, search=3, searchparam=0)
F = S.MRecalculate(D, chroma=false, blksize=4, search=3, searchparam=0)
V.MFlowFps(S, E, F, num=FramerateNumerator(V)*2, den=FramerateDenominator(V)*1, mask=2, ml=10000)
SetMTMode(1)
GetMTMode(false) > 0 ? distributor() : last
Thanks alot, nah my core i7 @ 3.6ghz isn't able for your 1080p script, getting 3fps watching Avatar blu-ray with it so need 16X core i7 @ 3.6ghz to get to 48fps..... with that script

Using 10 back and forward buffers. I get no audio delay in normal circumstances, just when I have no content within my script for certain resolutions. I think thats a bug. I have ffdshow audio delay set to 60ms which is perfect for my Samsung screen so only this particular avisynth scenario adds another 500~ms video delay.

Regarding the Samsungs own motion compensation, I have to admit, although the Samsung Series 9 does a worse job of interpolation of frames than mvtools does in many cases, the Bond scene thats giving me trouble looks gorgeous on the Samsung with motion set to Low Medium or High even, no artifacts at all, it seems to have no issues with the fast moving background. Still alot of room for improvement I think with mvtools, is it still being developed to improve on things like this? Would much prefer a software solution though instead of enabling / disabling the TV's own techniques when going back to normal desktop work.

Cheers guys.
mark007 is offline  
post #738 of 1968 Old 12-10-2010, 11:48 AM
Member
 
mark007's Avatar
 
Join Date: Dec 2006
Posts: 196
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
Quote:
Originally Posted by 8:13 View Post

Try this code, Mark.

Code:
setmtmode(2, 8)
ffdshow_source()
Width <= 1400 ? Eval("""
setmtmode(2)
superclip=MSuper(pel=2, hpad=8, vpad=8, rfilter=4)
One=MAnalyse(superclip, isb=true, blksize=16, search=2, searchparam=6, badrange=(-28))
Two=MRecalculate(superclip, One, chroma=false, blksize=16, blksizev=16, search=2, searchparam=6)
three=MAnalyse(superclip, isb=true, blksize=16, search=2, searchparam=7, badrange=(-18))
four=MRecalculate(superclip, three, chroma=false, blksize=16, blksizev=16, search=2, searchparam=7)
Framerate == 90 ||Framerate <= 28 ? MBlockFps(superclip,One, Three, num=90, den=1, mode=1) : last 
(Framerate > 28 && Framerate <=30) || Framerate == 60 ? MBlockFps(superclip, One, Three, num=60, den=1, mode=1) : last 
distributor()
"""): last 
Width > 1400 ? Eval("""
superclip=MSuper(pel=2, hpad=8, vpad=8, rfilter=4)
One=MAnalyse(superclip, isb=true, blksize=16, search=2, searchparam=6, badrange=(-28))
Two=MRecalculate(superclip, One, chroma=false, blksize=16, blksizev=16, search=2, searchparam=6)
three=MAnalyse(superclip, isb=true, blksize=16, search=2, searchparam=7, badrange=(-18))
four=MRecalculate(superclip, three, chroma=false, blksize=16, blksizev=16, search=2, searchparam=7)
Framerate == 60 ||Framerate <= 28 ? MBlockFps(superclip, One, Three, num=60, den=1, mode=1) : last 
(Framerate > 28 && Framerate <=30) || Framerate == 60 ? MBlockFps(superclip, One, Three, num=60, den=1, mode=1) : last 
distributor()
"""): last

Thanks again, unfortunately I get bad blockyness in some of the scenes I'm using to test with. I have found that using MBlockFps got rid of all of the uglyness in the super high quality script I was using for <1080p, and its faster aswell. Bonds hand no longer flickers like a butterfly moving down along the dam, and the railings don't look like they are bending when the camera passes by them like it did with MFlowfps. Here is my script now, looking very good for < 1080p (using max quality script except using mblockfps instead of mflowfps) and fairly good with only a few hiccups (bit of tweaking still needed) on 1080p.

Is there a reason most are using MFlowFps. I find it today to be very cpu intensive and in some of scenes I am testing with, produces horrible results compared to MBlockFps to be honest. I'm convinced MBlockFps is the way to go for me anyways, better quality results and faster too....

Code:
SetMTMode(1, 16)
ffdshow_source()
SetMTMode(2)
Height(last) < 1080 ? Eval("""
super = MSuper(pel=2, hpad=0, vpad=0, rfilter=4)
backward_1 = MAnalyse(super, isb=true, blksize=16, searchparam=3, plevel=0, search=3, badrange=(-24))
forward_1 = MAnalyse(super, isb=false, blksize=16, searchparam=3, plevel=0, search=3, badrange=(-24))
backward_2 = MRecalculate(super, backward_1, blksize=8, searchparam=1, search=3)
forward_2 = MRecalculate(super, forward_1, blksize=8, searchparam=1, search=3)
backward_3 = MRecalculate(super, backward_2, blksize=4, searchparam=0, search=3)
forward_3 = MRecalculate(super, forward_2, blksize=4, searchparam=0, search=3)
#MFlowFps(super, backward_3, forward_3, num=FrameRateNumerator(last)*2, den=FrameRateDenominator(last), ml=10000)
MBlockFps(super, backward_3, forward_3, num=FrameRateNumerator(last)*2, den=FrameRateDenominator(last), mode=2)
""") : Eval("""
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)
#MFlowFps(super, backward_3, forward_3, num=FrameRateNumerator(last)*2, den=FrameRateDenominator(last), ml=10000)
MBlockFps(super, backward_2, forward_2, num=FrameRateNumerator(last)*2, den=FrameRateDenominator(last), mode=2)
""")
SetMTMode(1)
GetMTMode(false) > 0 ? distributor() : last
mark007 is offline  
post #739 of 1968 Old 12-10-2010, 09:53 PM
Member
 
Join Date: Feb 2006
Posts: 79
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
Quote:
Originally Posted by mark007 View Post

Is there a reason most are using MFlowFps. I find it today to be very cpu intensive and in some of scenes I am testing with, produces horrible results compared to MBlockFps to be honest. I'm convinced MBlockFps is the way to go for me anyways, better quality results and faster too....[/code]

This is why i said "Heavier CPU load is not necessary to mean you will have fewer artifacts and get better quality." before.

In fact, many things of mvtools have been discussed long time ago. I follow this thread since it started in 2008, and found there is no major improvement (sometimes even worse) after "Domas4" final result at post #245. I would recommend all new comers to read his guide, that has clearer statements, proper followed the official documentation at:

http://www.avsforum.com/avs-vb/showt...4#post18220364

or search "Domas4" in this thread for deeper study.
PetitDragon is offline  
post #740 of 1968 Old 12-10-2010, 11:48 PM
Senior Member
 
SubJunk's Avatar
 
Join Date: May 2010
Posts: 327
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
Firstly I'd like to share some cool video samples I just made. HDNet has been broadcasting big events at 60fps progressive for a couple of months now and I've been really enjoying it, and I decided to get a 60fps video from there and change the framerate to 30fps then reconvert to 60fps to see how well our scripts are doing.
The results are here:
Real 60FPS video
Converted 60FPS video


Secondly, PetitDragon, there has been so much improvement since Domas4's scripts that they aren't even comparable anymore.
I'm happy to upload video samples to show it, so please let me know if you would like them.


Thirdly, to answer your question from a few posts ago Mark, no I'm not aware of any possible increases in quality. I convert all my videos and as such speed is of no concern to me; I will always update that blog with the highest quality regardless of speed.

With regards to using mblockfps or mflowfps, mblock produces a lot more artefacts than mflow.
It might produce great results in specific scenes - and in fact it is possible to get amazing results if you make a script for one particular scene - but when we test a lot of different types of scenes from different movies and shows we see that mblock is lower quality.
If you want, I would be happy to upload samples so you can see the differences side by side.


To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
(
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
) -
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
SubJunk is offline  
post #741 of 1968 Old 12-11-2010, 05:44 AM
Senior Member
 
mad_arab's Avatar
 
Join Date: Jan 2003
Posts: 498
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
A question for those with i7 cpus and HyperThreading. How is cpu load distributed? I am considering upgrading and I'm wondering how this script will behave, will it be fooled into thinking it has 8 cores (and possible performance loss) or will it figure out that it has 4 actual cores?
mad_arab is offline  
post #742 of 1968 Old 12-11-2010, 09:14 AM
Senior Member
 
widezu69's Avatar
 
Join Date: Feb 2010
Posts: 319
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
I have mine on the settings that are for 8 threads and it seems to distribute them evenly across them according to task manager.
widezu69 is offline  
post #743 of 1968 Old 12-13-2010, 03:31 AM
Newbie
 
SomeoneSomewhere's Avatar
 
Join Date: Jul 2010
Posts: 5
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
hi guys, i just did a reformat on my rig and reinstalled everything, avisynth, mpchc, etc
now i keep getting "there is no function named 'SetMTMode' (*) where * = the line depending on which script i used, ive used different scripts now and i kept getting the same error. any suggestions?

and also, can anyone here suggest a good script for my rig?
my rig consists of:
Core i7 860
2gb ddr3 ram
ATI Radeon 4870 1gb gddr5
SomeoneSomewhere is offline  
post #744 of 1968 Old 12-13-2010, 06:09 AM
Member
 
mark007's Avatar
 
Join Date: Dec 2006
Posts: 196
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
You must use the multithreaded version of avisynth, and don't forget to add the mt dll files into your avisynth folder also, many posts in this thread describe whats needed.
mark007 is offline  
post #745 of 1968 Old 12-13-2010, 08:25 AM
Member
 
mark007's Avatar
 
Join Date: Dec 2006
Posts: 196
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
Quote:
Originally Posted by widezu69 View Post

I have mine on the settings that are for 8 threads and it seems to distribute them evenly across them according to task manager.

Didn't someone suggest in earlier threads to use double the number of threads available, ie 16 in the case of a core i7 920 for example. Can anyone confirm this is the recommended setup? Here is my script now. Decided to stick with MFlowfps and just get as much quality as possible in 1080p one which gives 0 frame drops in some scenes that have caused me alot of drops in the past.

I figured out my issues with framerate variable. Basically when i have a 29.97fps clip that needs de-interlacing, its framerate is detected as 29.97 initially in reclock / mpc-hc. After I de-interlace with yadif and double framerate they detect it as 59.94 but avisynth doesn't, it still seems to think its <30 and my double framerate kicks in even though i don't want it to. Is this an avisynth or ffshow bug?

My TV works great at 50hz so my aim in my script below was to set framerate to 50 where the speed of my machine allowed, otherwise just double framerate where speed didn't allow. Still not at all happy with my 1080p script quality wise and no scripts posted here look good enough aswell as perform well enough...

If I can get my Framerate variable issue with deinterlaced content sorted, I'm almost happy with script below. To use it on my "production" HTPC I would have to wait until avisynth / mvtools is more stable as it causes alot of hangs / flickering images on seeking....

Quote:
SetMemoryMax(1536)
SetMTMode(1, 8)
ffdshow_source()
(Framerate >=23 && Framerate <= 30 && Height(last) < 1080) ? Eval("""
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, backward_1, blksize=8, searchparam=1, search=3)
forward_2 = MRecalculate(super, forward_1, blksize=8, searchparam=1, search=3)
backward_3 = MRecalculate(super, backward_2, blksize=4, searchparam=0, search=3)
forward_3 = MRecalculate(super, forward_2, blksize=4, searchparam=0, search=3)
Height(last) < 720 && Framerate >=23 && Framerate <= 24 ? MFlowFps(super, backward_3, forward_3, num=50, den=1, ml=10000) : last
Height(last) >= 720 && Framerate >=23 && Framerate <= 24 ? MFlowFps(super, backward_3, forward_3, num=FrameRateNumerator(last)*2, den=FrameRateDenominator(last), ml=10000) : last
Framerate > 24 && Framerate <= 30 ? MFlowFps(super, backward_3, forward_3, num=FrameRateNumerator(last)*2, den=FrameRateDenominator(last), ml=10000) : last
#MBlockFps(super, backward_3, forward_3, num=FrameRateNumerator(last)*2, den=FrameRateDenominator(last), mode=2)
SetMTMode(1)
GetMTMode(false) > 0 ? distributor() : last
""") : (Framerate >=23 && Framerate <= 30 && Height(last) >= 1080) ? Eval("""
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=4, searchparam=0, search=3)
#forward_3 = MRecalculate(super,chroma=false, forward_2, blksize=4, searchparam=0, search=3)
Framerate >=23 && Framerate <= 30 ? MFlowFps(super, backward_2, forward_2, num=FrameRateNumerator(last)*2, den=FrameRateDenominator(last), ml=10000,mask=1) : last
#MBlockFps(super, backward_2, forward_2, num=FrameRateNumerator(last)*2, den=FrameRateDenominator(last), mode=2)
SetMTMode(1)
GetMTMode(false) > 0 ? distributor() : last
""") : last

mark007 is offline  
post #746 of 1968 Old 12-14-2010, 02:44 PM
Senior Member
 
widezu69's Avatar
 
Join Date: Feb 2010
Posts: 319
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
I indeed have setmtmode to 16 as 8 doesn't seem to work very well. I also have i7 quad. Another thing to reduce slow downs in fast scenes is to use a larger buffer ahead value. I have mine set now to 50 which means if a the cpu is getting pegged on a fast scene, it naturally slows down processing however as it is already 50 frames ahead of playback by the time the renderer catches up to the fast scene hopefully the cpu will have pulled ahead again because the scene has changed. Just a thought, it worked for me.
widezu69 is offline  
post #747 of 1968 Old 12-16-2010, 03:44 AM
Member
 
mark007's Avatar
 
Join Date: Dec 2006
Posts: 196
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
Thanks I took your suggestion but still some scenes stress out my script as it is. I'm going to try to see if using large buffer ahead like 50, ASWELL as output frame queing from ffdshow allows avisynth to really buffer and work ahead when not stressed, so that in stressfull scenes, itll have less of a hard time keeping up with realtime playback.

Will report back after work. Anyone know if this queued output should improve things?

Let all of my scripts go for an hour yesterday, and when I came back, madVR was showing I had a significant number of frame drops so my intention will be to use the output queue to try to reduce this number, maybe even might allow for higher quality settings if it works...
mark007 is offline  
post #748 of 1968 Old 12-16-2010, 08:50 AM
Senior Member
 
widezu69's Avatar
 
Join Date: Feb 2010
Posts: 319
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
You can set the buffer ahead to a massive number and see the result. Remember 50 is only 2 seconds. Set it to something like 120 and it will buffer 5 seconds etc.
widezu69 is offline  
post #749 of 1968 Old 12-16-2010, 08:52 AM
Member
 
mark007's Avatar
 
Join Date: Dec 2006
Posts: 196
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
I would imagine buffering ahead, doesn't allow avisynth to process ahead, as that would require an output queue.

I just found out that madVR doesn't support the ffdshow output queue and has its own internal queue of size 8. So for me with madVR, I don't think even 10000 as a buffer ahead will have any effect. Its not processing 10000 frames ahead, its just buffering them as input I assume, not buffering them and processing them into an output queue....

The most buffer ahead in terms of processing ahead, is 8... Maybe someone knows the exact meaning of the avisynth buffer ahead..?
mark007 is offline  
post #750 of 1968 Old 12-16-2010, 12:57 PM
Senior Member
 
widezu69's Avatar
 
Join Date: Feb 2010
Posts: 319
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
The avisynth buffer ahead is how many frames ahead of the video ffdshow will feed into avisynth for it to process. The processed frames are then probably stored in the RAM, the madvr buffers are just how many frames it gets before it plays and shouldn't have any effect on the avisynth. Maybe get rid of setmemorymax.
widezu69 is offline  
Reply Home Theater Computers

User Tag List

Thread Tools
Show Printable Version Show Printable Version
Email this Page Email this Page


Forum Jump: 

Posting Rules  
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are Off
Refbacks are Off