VirtualDub II
From Avisynth wiki
This is the second part of vdub_filters.avsi:
################################################################### # Logo by Donald Graft, v1.3b4 # # # # In the filter configuration dialog box, enter the input file. # # If the specified bitmap file cannot be found, or if it is not # # a bitmap file, or if it is of the wrong depth (depth must be 24 # # bit), the output frame will be all black. # # # # See "simplified_versions.avs" for some examples. # ################################################################### function VD_Logo(clip clip, int "x", int "y", int "alpha", int "transparent", \ int "xr", int "xg", int "xb", int "tolerance", string "filename", \ bool "animate", int "start", int "duration", int "loops", \ int "fadeinlen", int "fadeoutend", int "fadeoutlen") { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\logo.vdf", "_VD_Logo", 1) return clip._VD_Logo(default(x,0), default(y,0), default(alpha,128), \ default(transparent,1), default(xr,0), default(xg,0), default(xb,255), \ default(tolerance,0), default(filename,VirtualDub_plugin_directory+"\logo.bmp"), \ default(animate,false)?1:0, default(start,0), default(duration,0), default(loops,0), \ default(fadeinlen,0), default(fadeoutend,200), default(fadeoutlen,0)) } # example1 (static logo): # ConvertToRGB() # VD_logo(0, 0, 128, 1, 0, 0, 255, 0, VirtualDub_plugin_directory+"\logo2.bmp", false, 100, 200, 0, 10, 180, 10) # ConvertToYUY2() # example2 (animated logo): # ConvertToRGB() # VD_Logo(33, 33, 128, 1, 0, 0, 0, 0, "G:\Recu0001.bmp", true, 0, 1, 20, 0, 0, 0) # ConvertToYUY2() ########################################### # Smart Smoother HiQ by Klaus Post, v2.11 # # # # On Donald Grafts homepage there is a # # link to a version of Smoother HiQ (also # # made by Klaus) that works directly in # # YUV-space. # # # # diameter (3-13, odd), # # threshold (1-200), amount (1-254) # # mode = "average" or "weighted" # ########################################### function VD_SmartSmoothHiQ(clip clip, int "diameter", int "threshold", int "amount", string "mode", \ bool "weighted_difference", int "maintain_diffweight", bool "visualize_blur", bool "greyscale") { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\SmoothHiQ.vdf", "_VD_SmartSmoothHiQ") mode = default(mode, "weighted") mode = (mode=="average") ? 0 : (mode=="weighted") ? 1 : -1 Assert(mode>=0, """VD_SmartSmoothHiQ: "mode" parameter must be "average" or "weighted"""") return clip._VD_SmartSmoothHiQ(default(diameter,5), default(threshold,50), default(visualize_blur,false)?1:0, default(amount,254), \ mode, default(greyscale,false)?1:0, default(weighted_difference,true)?1:0, default(maintain_diffweight,0)) } # example: # ConvertToRGB() # VD_SmartSmoothHiQ(5, 50, 254, "weighted") # ConvertToYUY2() ########################################### # Smart Smoother IQ by Tim Park, v0.5 # # # # diameter (3-11, odd), threshold (1-200) # # # # For some reason the results in VDub and # # AviSynth are very different. The latter # # is blurred a lot more. # ########################################### function VD_SmartSmoothIQ(clip clip, int "diameter", int "threshold", bool "interlaced") { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\smoothIQ.vdf", "_VD_SmartSmoothIQ") return clip._VD_SmartSmoothIQ(default(diameter,5), default(threshold,25), default(interlaced,false)?1:0) } # example: # ConvertToRGB() # VD_SmartSmoothIQ(5, 25, false) # ConvertToYUY2() ############################################## # DeinterlaceAreaBased by Gunar Thalin, v1.3 # # # # mode = "interpolate" or "blend" # # threshold (), edge_detect () # # interlaced_area (0-100) # ############################################## function VD_AreaBasedDeinterlace(clip clip, bool "deinterlaced_only", string "mode", int "threshold", \ int "edge_detect", bool "log_frames", int "interlaced_area") { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\DeinterlaceAreaBased.vdf", "_VD_DeinterlaceAreaBased") mode = default(mode, "blend") mode = (mode=="interpolate") ? 0 : (mode=="blend") ? 1 : -1 Assert(mode>=0, """VD_DeinterlaceAreaBased: "mode" parameter must be "interpolate" or "blend"""") return clip._VD_DeinterlaceAreaBased(default(deinterlaced_only,false)?1:0, mode, default(threshold,27), \ default(edge_detect,25), default(log_frames,false)?1:0, string(default(interlaced_area,0))) } # example: # ConvertToRGB() # VD_AreaBasedDeinterlace(false, "blend", 27, 25, false, 0) # ConvertToYUY2() ######################################################################## # DeLogo by Karel Suhajda, v1.2.1 # # # # If the logo is (partially) located in the black bars you might want # # to consider the filter LogoAway by Krzysztof Wojdon. # # # # Before this script can be used we need to do some preprocessing # # in Virtual Dub to obtain the following pictures: # # filename2 = photo_deblend.bmp # # filename3 = photo_alpha.bmp # # filename4 = photo_color.bmp # # filename5 = photo_repair.bmp # # # # 1) Open the avi in Virtual Dub and select a frame where the logo # # is clearly visible. Set video and audio on direct stream copy # # and select a range of 100 frames in which the logo is contained. # # Make a new avi of this and open it in Virtual Dub. # # # # 2) Select the frame of (1) and copy it to the clipboard. Open # # your favourite graphics program and load the frame from the # # clipboard. Paint an rectangle in which the logo fits "easily" # # located red (255,0,0), the rest of the frame blue (0,0,255) leaving # # a small stroke unpainted between the red and blue part. Save this # # picture as a 24 RGB BMP file, say photo.bmp. # # # # 3) Return to the unclosed Virtual Dub and load the filter. # # Press "load" next to "Analyse" in "Mask properties" and load # # the BMP file. Fill in the "repair properties". Press "Show preview", # # "Sample video" and "all frames". Finally make the desired files: # # filename2 = photo_deblend.bmp # # filename3 = photo_alpha.bmp # # filename4 = photo_color.bmp # # filename5 = photo_repair.bmp # # by using the "Save as" button corresponding to deblend, alpha, # # color and repair. # # # # range = "100-200, 300-400"; or whole clip range = "" # # pixel aspect ratio: par_X (1-16), par_Y (1-16) # # depth (1.0 - 8.0), power (0.0 - 16.0) # ######################################################################## function VD_DeLogo(clip clip, bool "on_frames", string "range", string "file_deblend", string "file_alpha", \ string "file_color", string "file_repair", float "depth", float "power", int "par_X", int "par_Y", bool "interlaced") { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\delogo.vdf", "_VD_DeLogo") X = round(10*depth) Y = round(10*power) # theoretically: z = 100*log10(par_X/par_Y), as approximation I took a minimax-approximation (calculated with Maple): v = - 48.96556825 + 63.18825967*par_X - 16.00966389*par_X*par_X + 2.473556539*par_X*par_X*par_X - .2133268695*par_X*par_X*par_X*par_X \ + .009456579673*par_X*par_X*par_X*par_X*par_X - .0001675297934*par_X*par_X*par_X*par_X*par_X*par_X w = - 48.96556825 + 63.18825967*par_Y - 16.00966389*par_Y*par_Y + 2.473556539*par_Y*par_Y*par_Y - .2133268695*par_Y*par_Y*par_Y*par_Y \ + .009456579673*par_Y*par_Y*par_Y*par_Y*par_Y - .0001675297934*par_Y*par_Y*par_Y*par_Y*par_Y*par_Y z = round(v) - round(w) return clip._VD_DeLogo(default(on_frames,false)?1:0, default(range,""), default(file_deblend,""), default(file_alpha,""), \ default(file_color,""), default(file_repair,""), default(X,15), default(Y,40), default(interlaced,false)?1:0, z) } # example1: # ConvertToRGB() # VD_DeLogo(false, "", "F:\photo_deblend.bmp", "F:\photo_alpha.bmp", "F:\photo_color.bmp", "F:\photo_repair.bmp", 1.5, 4.0, 1, 1, false) # ConvertToYUY2() # example2: # ConvertToRGB() # VD_DeLogo(true, "100-200, 300-400", "F:\photo_deblend.bmp", "F:\photo_alpha.bmp", "F:\photo_color.bmp", "F:\photo_repair.bmp") # ConvertToYUY2() ################################################ # GeneralConvolution3D v1.1, by Gunnar Thalin # # # # The last matrix (matrix for frame prior to # # previous) has to be inserted manually (only # # when one of its arguments is non-zero) # # since a function can have 60 arguments at # # maximum. # # # # 1) matrix entries: (0-256) # # # # 2) matrix for current frame: a11-a55 # # # # 3) matrix for previous frame: b11-b55 # # # # 4) The matrix entries have to be inserted in # # hexadecimal notation. Thus for example: # # 51 decimal = 3*16^1 + 3*16^0 hexadecimal = # # = 33 hexadecimal. # # # # 5) a33 = 256 decimal = 1*16^2 hexadecimal # # = 100 hexadecimal leaves the clip unchanged. # # # # 6) The matrix entries must be a three digit # # number, insert zeros from the left when # # necessary. # ################################################ function VD_GeneralConvolution3D(clip clip, string "mode", string "a11", string "a12", string "a13", string "a14", \ string "a15", string "a21", string "a22", string "a23", string "a24", string "a25", string "a31", string "a32", \ string "a33", string "a34", string "a35", string "a41", string "a42", string "a43", string "a44", string "a45", \ string "a51", string "a52", string "a53", string "a54", string "a55", string "b11", string "b12", string "b13", \ string "b14", string "b15", string "b21", string "b22", string "b23", string "b24", string "b25", string "b31", \ string "b32", string "b33", string "b34", string "b35", string "b41", string "b42", string "b43", string "b44", \ string "b45", string "b51", string "b52", string "b53", string "b54", string "b55") { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\GeneralConvolution3D.vdf", "_VD_GeneralConvolution3D", 1) mode = default(mode, "input") mode = (mode=="input") ? 0 : (mode=="output") ? 1 : -1 Assert(mode>=0, """VD_GeneralConvolution3D: "mode" parameter must be "input" or "output"""") a11 = default(a11, "000") a12 = default(a12, "000") a13 = default(a13, "000") a14 = default(a14, "000") a15 = default(a15, "000") a21 = default(a21, "000") a22 = default(a22, "000") a23 = default(a23, "000") a24 = default(a24, "000") a25 = default(a25, "000") a31 = default(a31, "000") a32 = default(a32, "000") a33 = default(a33, "046") a34 = default(a34, "000") a35 = default(a35, "000") a41 = default(a41, "000") a42 = default(a42, "000") a43 = default(a43, "000") a44 = default(a44, "000") a45 = default(a45, "000") a51 = default(a51, "000") a52 = default(a52, "000") a53 = default(a53, "000") a54 = default(a54, "000") a55 = default(a55, "000") b11 = default(b11, "000") b12 = default(b12, "000") b13 = default(b13, "000") b14 = default(b14, "000") b15 = default(b15, "000") b21 = default(b21, "000") b22 = default(b22, "000") b23 = default(b23, "000") b24 = default(b24, "000") b25 = default(b25, "000") b31 = default(b31, "000") b32 = default(b32, "000") b33 = default(b33, "000") b34 = default(b34, "000") b35 = default(b35, "000") b41 = default(b41, "000") b42 = default(b42, "000") b43 = default(b43, "000") b44 = default(b44, "000") b45 = default(b45, "000") b51 = default(b51, "000") b52 = default(b52, "000") b53 = default(b53, "000") b54 = default(b54, "000") b55 = default(b55, "000") # "matrix for frame prior to previous" elements: c11 = "000" c12 = "000" c13 = "000" c14 = "000" c15 = "000" c21 = "000" c22 = "000" c23 = "000" c24 = "000" c25 = "000" c31 = "000" c32 = "000" c33 = "000" c34 = "000" c35 = "000" c41 = "000" c42 = "000" c43 = "000" c44 = "000" c45 = "000" c51 = "000" c52 = "000" c53 = "000" c54 = "000" c55 = "000" str = "8"+a11+"8"+b11+"8"+c11 + "8"+a12+"8"+b12+"8"+c12 + "8"+a13+"8"+b13+"8"+c13 + "8"+a14+"8"+b14+"8"+c14 + \ "8"+a15+"8"+b15+"8"+c15 + "8"+a21+"8"+b21+"8"+c21 + "8"+a22+"8"+b22+"8"+c22 + "8"+a23+"8"+b23+"8"+c23 + \ "8"+a24+"8"+b24+"8"+c24 + "8"+a25+"8"+b25+"8"+c25 + "8"+a31+"8"+b31+"8"+c31 + "8"+a32+"8"+b32+"8"+c32 + \ "8"+a33+"8"+b33+"8"+c33 + "8"+a34+"8"+b34+"8"+c34 + "8"+a35+"8"+b35+"8"+c35 + "8"+a41+"8"+b41+"8"+c41 + \ "8"+a42+"8"+b42+"8"+c42 + "8"+a43+"8"+b43+"8"+c43 + "8"+a44+"8"+b44+"8"+c44 + "8"+a45+"8"+b45+"8"+c45 + \ "8"+a51+"8"+b51+"8"+c51 + "8"+a52+"8"+b52+"8"+c52 + "8"+a53+"8"+b53+"8"+c53 + "8"+a54+"8"+b54+"8"+c54 + \ "8"+a55+"8"+b55+"8"+c55 return clip._VD_GeneralConvolution3D(0, mode, str) } # example: # ConvertToRGB() # VD_GeneralConvolution3D("output", "000", "000", "000", "000", "000", # \ "000", "000", "033", "000", "000", # \ "000", "033", "034", "033", "000", # \ "000", "000", "033", "000", "000", # \ "000", "000", "000", "000", "000") # ConvertToYUY2() ############################################ # DeinterlaceSmooth by Gunnar Thalin, v1.0 # # # # mode = "interpolate" or "blend" # # threshold (), edge_detect () # # interlaced_area (0-100) # ############################################ function VD_DeinterlaceSmooth(clip clip, bool "deinterlaced_only", string "mode", bool "alternate_field_order", \ int "threshold", int "edge_detect", bool "log_frames", int "interlaced_area") { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\deinterlacesmooth.vdf", "_VD_DeinterlaceSmooth") mode = default(mode, "interpolate") mode = (mode=="interpolate") ? 0 : (mode=="blend") ? 1 : -1 Assert(mode>=0, """VD_DeinterlaceSmooth: "mode" parameter must be "interpolate" or "blend"""") return clip._VD_DeinterlaceSmooth(default(deinterlaced_only,false)?1:0, mode, \ default(alternate_field_order,false)?1:0, default(threshold,24), default(edge_detect,20), \ default(log_frames,false)?1:0, string(default(interlaced_area,0))) } # example (video is converted to 50/60 frames a second before applying the filter by using SeparateFields): # ConvertToRGB() # SeparateFields() # VD_DeinterlaceSmooth(false, "interpolate", false, 24, 20, false, 0) # ConvertToYUY2() ################################################### # Time Based DeInterlacer by Uwe Freese, v1.1 # # # # textpixel_dist (-), color_threshold (0-255), # # pixel_threshold (0-100), scene_dist (0-100), # # interpolate_field (0-100) # # mode = scene_det_off/scene_det_on/bar_graph # # /scene_changes # # mode_spat = inter_bottom/inter_top # # mode_temp_delay_top = inter_top/inter_bottom # # mode_temp_delay_bottom = inter_bottom/inter_top # ################################################### function VD_DeInterlaceTimeBased(clip clip, string "mode", int "textpixel_dist", int "color_threshold", \ int "pixel_threshold", int "scene_dist", bool "detect_scene", int "interpolate_field", string "mode_spat", \ string "mode_temp_delay_bottom", string "mode_temp_delay_top") { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\tbdi.vdf", "_VD_DeInterlaceTimeBased", 1) mode = default(mode, "scene_det_on") mode = (mode=="scene_det_off") ? 0 : (mode=="scene_det_on") ? 1 : (mode=="bar_graph") ? 2 : (mode=="scene_changes") ? 3 : -1 Assert(mode>=0, """VD_DeInterlaceTimeBased: "mode" parameter must be "scene_det_off", "scene_det_on", "bar_graph" or "scene_changes"""") mode_spat = default(mode_spat, "inter_bottom") mode_spat = (mode_spat=="inter_bottom") ? 0 : (mode_spat=="inter_top") ? 1 : -1 Assert(mode_spat>=0, """VD_DeInterlaceTimeBased: "mode_spat" parameter must be "inter_bottom" or "inter_top"""") mode_temp_delay_top = default(mode_temp_delay_top, "inter_top") mode_temp_delay_top = (mode_temp_delay_top=="inter_top") ? 0 : (mode_temp_delay_top=="inter_bottom") ? 1 : -1 Assert(mode_temp_delay_top>=0, """VD_DeInterlaceTimeBased: "mode_temp_delay_top" parameter must be "inter_top" or "inter_bottom"""") mode_temp_delay_bottom = default(mode_temp_delay_bottom, "inter_bottom") mode_temp_delay_bottom = (mode_temp_delay_bottom=="inter_bottom") ? 0 : (mode_temp_delay_bottom=="inter_top") ? 1 : -1 Assert(mode_temp_delay_bottom>=0, """VD_DeInterlaceTimeBased: "mode_temp_delay_bottom" parameter must be "inter_bottom" or "inter_top"""") return clip._VD_DeInterlaceTimeBased(mode_temp_delay_bottom, mode_temp_delay_top, mode, default(textpixel_dist,1000), \ default(color_threshold,15), default(pixel_threshold,55), default(scene_dist,5), default(detect_scene,false)?1:0, \ default(interpolate_field,0), mode_spat) } # example: # ConvertToRGB() # VD_DeInterlaceTimeBased("scene_det_on", 1000, 15, 55, 5, true, 50, "inter_bottom") # ConvertToYUY2() ######################################### # Spatial Smoother by Dividee, v1.0 # # # # diameter (3-11, odd), strength (0-18) # ######################################### function VD_SpatialSmoother(clip clip, int "diameter", int "strength") { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\ssmooth.vdf", "_VD_SpatialSmoother") return clip._VD_SpatialSmoother(default(diameter,5), default(strength,3)) } # example: # ConvertToRGB() # VD_SpatialSmoother(5, 3) # ConvertToYUY2() ############################################### # Denoise by tHE fISH, v1.0 # # # # The output of this filter is 100% identical # # to the output of the deflicker filter with # # a window size of 1 ! # # # # softening (0-?) # ############################################### function VD_Denoise(clip clip, int "softening") { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\Denoise.vdf", "_VD_Denoise", 10) return clip._VD_Denoise(default(softening,10)) } # example: # ConvertToRGB() # VD_Denoise(10) # ConvertToYUY2() ##################################### # PicFix by Gabest, v1.04 # # # # threshold (0-16), error_cor (0-4) # ##################################### function VD_PicFix(clip clip, int "threshold", int "error_cor") { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\picfix.dll", "_VD_PicFix") return clip._VD_PicFix(default(threshold,6), default(error_cor,3)) } # example: # ConvertToRGB() # VD_PicFix(6, 3) # ConvertToYUY2() ######################################### # CNR Filter by Gilles Mouchard, v1.1 # # # # luma_m, luma_n, Chroma1_X, Chroma1_Y, # # Chroma2_X, Chroma2_Y (0-100), # # Chroma_shift (-10..10) # ######################################### function VD_CNR(clip clip, bool "luma_wide", int "luma_X", int "luma_Y", \ bool "chroma1_wide", int "chroma1_X", int "chroma1_Y", bool "chroma2_wide", \ int "chroma2_X", int "chroma2_Y", int "chroma_shift") { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\cnr.vdf", "_VD_CNR", 1) return clip._VD_CNR(default(luma_wide,true)?1:0, default(round(2.56*luma_X),192), default(round(2.24*luma_Y),35), \ default(chroma1_wide,false)?1:0, default(round(2.56*chroma1_X),256), default(round(2.24*chroma1_Y),47), \ default(chroma2_wide,false)?1:0, default(round(2.56*chroma2_X),256), default(round(2.24*chroma2_Y),47), \ default(chroma_shift,0)) } # example: # ConvertToRGB() # VD_CNR(true, 75, 16, false, 100, 21, false, 100, 21, 0) # ConvertToYUY2() ############################################# # Shadow smoother by Valentim Batista, v0.7 # # threshold (0-8), strength (1-23), # # difference (0-6) # ############################################# function VD_ShadowSmoother(clip clip, int "threshold", int "strength", \ int "difference", bool "pixellock", bool "noiselock", bool "postsmooth") { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\shadowsmoother07.vdf", "_VD_ShadowSmoother") return clip._VD_ShadowSmoother(default(threshold,4), default(strength,15), default(difference,2), \ default(pixellock,false)?1:0, default(noiselock,false)?1:0, default(postsmooth,false)?1:0) } # example: # ConvertToRGB() # VD_ShadowSmoother(4, 15, 2, false, false, false) # ConvertToYUY2() ##################################################### # DeinterlacePALMovie Filter by Gunnar Thalin, v1.1 # # # ##################################################### function VD_DeinterlacePALMovie(clip clip, bool "swapfieldfirst") { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\DeinterlacePALMovie.vdf", "_VD_DeinterlacePALMovie", 1) return clip._VD_DeinterlacePALMovie(default(swapfieldfirst,false)?1:0) } # example: # ConvertToRGB() # VD_DeinterlacePALMovie(true) # ConvertToYUY2() ########################################################## # WNR (Wavelet Noise Reduction) filter by thejam79, v0.1 # # Only for PC's using SSE instructions (like pentiums). # # # # all values (0-255). This filter is also a native # # AviSynth filter. # ########################################################## function VD_WNR(clip clip, int Y_X0, int Y_Y0, int Y_X1, int Y_Y1, int Y_X2, int Y_Y2, \ int Cb_X0, int Cb_Y0, int Cb_X1, int Cb_Y1, int Cb_X2, int Cb_Y2, \ int Cr_X0, int Cr_Y0, int Cr_X1, int Cr_Y1, int Cr_X2, int Cr_Y2) { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\wnr.vdf", "_VD_WNR", 0) return clip._VD_WNR(Y_X0*256+Y_Y0, Y_X1*256+Y_Y1, Y_X2*256+Y_Y2, Cb_X0*256+Cb_Y0, Cb_X1*256+Cb_Y1, \ Cb_X2*256+Cb_Y2, Cb_X0*256+Cr_Y0, Cr_X1*256+Cr_Y1, Cr_X2*256+Cr_Y2) } # example: # ConvertToRGB() # VD_WNR(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 255, 0, 255, 0) # ConvertToYUY2() ############################################ # Pseudocolor filter by Donald Graft, v1.0 # # # ############################################ function VD_Pseudocolor(clip clip, string "filename") { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\Pseudocolor.vdf", "_VD_Pseudocolor", 0) return clip._VD_Pseudocolor(default(filename, VirtualDub_plugin_directory+"\palettes\topo.map")) } # example1: # AviSource("C:\Program Files\VirtualDub\plugins\palettes\grayramp.avi") # ConvertToRGB() # VD_Pseudocolor("G:\topo.map") # ConvertToYUY2() # example2: # AviSource("G:\DivX\anestacia-paid_my_dues(divx412).avi").Greyscale # ConvertToRGB() # VD_Pseudocolor("G:\topo.map") # ConvertToYUY2() ################################################################## # Tweaker filter by Christopher P. LaRosa, v1.1 # # # # download: http://www.geocities.com/cplarosa/video/tweaker.htm # ################################################################## function VD_Tweaker(clip clip, string "filename") { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\tweaker.vdf", "_VD_Tweaker", 1) return clip._VD_Tweaker(filename) } # example: # AviSource("j:\spirited.avi") # ConvertToRGB() # VD_Tweaker("g:\tmp\script.fts") # ConvertToYUY2()