hydra3333
4th December 2011, 09:39
Deinterlacing is great as a precursor for denoising and motion stabilising, re-interlacing gives back "motion fluidity".
Neuron2's NV plugin software uses an nvidia GPU to deliver double-framerate deinterlaced material from .mpgs ... nvidia deinterlacing whichever method it has.
I have long DV camcorder captures - PAL 720x576 16:9 DV type 2 BFF .avi, which I need to delinterlace / motion-stabilize / clean / hdragc / sharpen / reinterlace as input to HC for encoding to DVD.
QTGMC deinterlaces wonderfully with denoising and sharpening, however even with setmtmode(2) I get encodes only at 1.3 fps with QTGMC-delinterlace (preset=Slow) / hdragc / reinterlace (ie even without motion stabilize) :(
PC is Q9450-quad, 8Gb mem, 2x7200-sata2-disks, win7-64 home, nvidia 8800GT.
I naively assume GPU deinterlacing will be a lot quicker (if lesser quality) hence the overall task will be quicker.
So is there a way to do GPU double-framerate deinterlacing ?
(in-GPU denoising "at-the-same-time" would also be handy)
Current script:
SetMTmode(mode=5,threads=4) # start with mode=5 forAVIsource http://forum.doom9.org/showthread.php?p=1067216#post1067216
SetMemoryMax(512)
AviSource("G:\DV\nodeshake\capt.11-12-04_12-04.00.avi", audio=false)
AssumeFPS(25)
AssumeBFF()
SetMTmode(mode=2,threads=4) # mode=2 for temporal multi-threading (interleaved frames)
QTGMC( Preset="Slow", EZDenoise=3, NoisePreset="Slow", Sharpness=1.2, SLMode=1) #double framerate output
#blksize=8 # 4, 8 or 16 ( default is 8 ). Larger blocks are less sensitive to noise, are faster, but also less accurate.
#overlap=4 # overlap value (0 to 4 for blksize=8) Must be even and less than block size
#dct=0 # use dct=1 for clip with light flicker
#super0 = MSuper(pel=2,chroma=true,sharp=2)
#vect0 = MAnalyse(super0,isb=false, blksize=blksize, overlap=overlap, dct=dct, chroma=true)
### DEPANESTIMATE is the OLD superseded call !!!
#globalmotion = MDepan(vect0, pixaspect=1.094, thSCD1=400, zoom=true, rot=true, range=2) #1.094 for standard PAL
#DepanStabilize(data=globalmotion, rotmax=5, cutoff=0.5, mirror=15, pixaspect=1.094, dxmax=20, dymax=20, method=1) # lower vibration frequency cutoff
#DepanStabilize(data=globalmotion, rotmax=5, cutoff=0.5, prev=3, next=3, pixaspect=1.094, dxmax=20, dymax=20, method=1) # lower vibration frequency cutoff
########
#--progressive-only MSUPER/MDegrain2 for use with SetMTMode(2)
#blksize=8 # 4, 8 or 16 ( default is 8 ). Larger blocks are less sensitive to noise, are faster, but also less accurate.
#overlap=4 # overlap value (0 to 4 for blksize=8) Must be even and less than block size
#dct=0 # use dct=1 for clip with light flicker
#super = MSuper(pel=2,chroma=true,sharp=2)
#backward_vec2 = MAnalyse(super, isb = true, delta = 2, blksize=blksize, overlap=overlap, dct=dct, chroma=true)
#backward_vec1 = MAnalyse(super, isb = true, delta = 1, blksize=blksize, overlap=overlap, dct=dct, chroma=true)
#forward_vec1 = MAnalyse(super, isb = false, delta = 1, blksize=blksize, overlap=overlap, dct=dct, chroma=true)
#forward_vec2 = MAnalyse(super, isb = false, delta = 2, blksize=blksize, overlap=overlap, dct=dct, chroma=true)
#MDegrain2(super, backward_vec1,forward_vec1,backward_vec2,forward_vec2,thSAD=400,plane=4)
# HDRAGC *can't* be used inside MT or AGC will be calculated differently in each slice
SetMTmode(mode=5,threads=4) # # mode=5 for safety including using MT
HDRAGC(coef_gain=0.3, min_gain=0.2, max_gain=1.0, coef_sat=1.0, corrector=0.8, reducer=2.0, black_clip=1.0) # default. +coef_gain=brighter decrease to limit. +coef_sat=more saturation
SetMTmode(mode=2,threads=4) # mode=2 for temporal multi-threading (interleaved frames)
########
#LimitedSharpenFaster(smode=4,strength=100)
########
AssumeBFF()
SeparateFields().SelectEvery(4,0,3).Weave() #reinterlace progressive into BFF
AssumeBFF()
Converttoyv12()
SetPlanarLegacyAlignment(True)
# Distributor() should only be used when loading the script into applications which talk to avisynth directly
# e.g. HC and MeGUI. If the program opens the .avs file as an avi file (like virtualdub/mod, x264, xvid_encraw etc.)
# then you don't need (and shouldn't have) the distributor call at the end.
# http://forum.doom9.org/showthread.php?p=1136518#post1136518
##### "HC uses custom avisynth routines, you have to add Distributor() to the end of the script."
Distributor() # use this when using HC and SetMTmode, per http://forum.doom9.org/showthread.php?p=1063622#post1063622
Neuron2's NV plugin software uses an nvidia GPU to deliver double-framerate deinterlaced material from .mpgs ... nvidia deinterlacing whichever method it has.
I have long DV camcorder captures - PAL 720x576 16:9 DV type 2 BFF .avi, which I need to delinterlace / motion-stabilize / clean / hdragc / sharpen / reinterlace as input to HC for encoding to DVD.
QTGMC deinterlaces wonderfully with denoising and sharpening, however even with setmtmode(2) I get encodes only at 1.3 fps with QTGMC-delinterlace (preset=Slow) / hdragc / reinterlace (ie even without motion stabilize) :(
PC is Q9450-quad, 8Gb mem, 2x7200-sata2-disks, win7-64 home, nvidia 8800GT.
I naively assume GPU deinterlacing will be a lot quicker (if lesser quality) hence the overall task will be quicker.
So is there a way to do GPU double-framerate deinterlacing ?
(in-GPU denoising "at-the-same-time" would also be handy)
Current script:
SetMTmode(mode=5,threads=4) # start with mode=5 forAVIsource http://forum.doom9.org/showthread.php?p=1067216#post1067216
SetMemoryMax(512)
AviSource("G:\DV\nodeshake\capt.11-12-04_12-04.00.avi", audio=false)
AssumeFPS(25)
AssumeBFF()
SetMTmode(mode=2,threads=4) # mode=2 for temporal multi-threading (interleaved frames)
QTGMC( Preset="Slow", EZDenoise=3, NoisePreset="Slow", Sharpness=1.2, SLMode=1) #double framerate output
#blksize=8 # 4, 8 or 16 ( default is 8 ). Larger blocks are less sensitive to noise, are faster, but also less accurate.
#overlap=4 # overlap value (0 to 4 for blksize=8) Must be even and less than block size
#dct=0 # use dct=1 for clip with light flicker
#super0 = MSuper(pel=2,chroma=true,sharp=2)
#vect0 = MAnalyse(super0,isb=false, blksize=blksize, overlap=overlap, dct=dct, chroma=true)
### DEPANESTIMATE is the OLD superseded call !!!
#globalmotion = MDepan(vect0, pixaspect=1.094, thSCD1=400, zoom=true, rot=true, range=2) #1.094 for standard PAL
#DepanStabilize(data=globalmotion, rotmax=5, cutoff=0.5, mirror=15, pixaspect=1.094, dxmax=20, dymax=20, method=1) # lower vibration frequency cutoff
#DepanStabilize(data=globalmotion, rotmax=5, cutoff=0.5, prev=3, next=3, pixaspect=1.094, dxmax=20, dymax=20, method=1) # lower vibration frequency cutoff
########
#--progressive-only MSUPER/MDegrain2 for use with SetMTMode(2)
#blksize=8 # 4, 8 or 16 ( default is 8 ). Larger blocks are less sensitive to noise, are faster, but also less accurate.
#overlap=4 # overlap value (0 to 4 for blksize=8) Must be even and less than block size
#dct=0 # use dct=1 for clip with light flicker
#super = MSuper(pel=2,chroma=true,sharp=2)
#backward_vec2 = MAnalyse(super, isb = true, delta = 2, blksize=blksize, overlap=overlap, dct=dct, chroma=true)
#backward_vec1 = MAnalyse(super, isb = true, delta = 1, blksize=blksize, overlap=overlap, dct=dct, chroma=true)
#forward_vec1 = MAnalyse(super, isb = false, delta = 1, blksize=blksize, overlap=overlap, dct=dct, chroma=true)
#forward_vec2 = MAnalyse(super, isb = false, delta = 2, blksize=blksize, overlap=overlap, dct=dct, chroma=true)
#MDegrain2(super, backward_vec1,forward_vec1,backward_vec2,forward_vec2,thSAD=400,plane=4)
# HDRAGC *can't* be used inside MT or AGC will be calculated differently in each slice
SetMTmode(mode=5,threads=4) # # mode=5 for safety including using MT
HDRAGC(coef_gain=0.3, min_gain=0.2, max_gain=1.0, coef_sat=1.0, corrector=0.8, reducer=2.0, black_clip=1.0) # default. +coef_gain=brighter decrease to limit. +coef_sat=more saturation
SetMTmode(mode=2,threads=4) # mode=2 for temporal multi-threading (interleaved frames)
########
#LimitedSharpenFaster(smode=4,strength=100)
########
AssumeBFF()
SeparateFields().SelectEvery(4,0,3).Weave() #reinterlace progressive into BFF
AssumeBFF()
Converttoyv12()
SetPlanarLegacyAlignment(True)
# Distributor() should only be used when loading the script into applications which talk to avisynth directly
# e.g. HC and MeGUI. If the program opens the .avs file as an avi file (like virtualdub/mod, x264, xvid_encraw etc.)
# then you don't need (and shouldn't have) the distributor call at the end.
# http://forum.doom9.org/showthread.php?p=1136518#post1136518
##### "HC uses custom avisynth routines, you have to add Distributor() to the end of the script."
Distributor() # use this when using HC and SetMTmode, per http://forum.doom9.org/showthread.php?p=1063622#post1063622