VirtualDub I
From Avisynth wiki
This file, when appended with the second half, forms an important tool known as vdub_filters.avsi. Download it and place it in your plugins directory where it will be autoloaded. Its usage is described in further detail in Section #4 of the AviSynth FAQ.
There is also a Simple VDub Filters file.
############################################################# # This file provides convenient Avisynth interfaces to # # various VirtualDub plugins. Load it in your script with: # # # # Import("vdub_filters.avs") # # # # Version 1.5+, 05-12-2003; # # sent remarks to w.j.dijkhof@tue.nl # # # # I want to thank all the people who helped me providing # # these scripts (in particular the people at Doom9). # ############################################################# ######################################################## # Change VirtualDub_plugin_directory below to point to # # the directory containing your VirtualDub plugins. # ######################################################## global VirtualDub_plugin_directory = "c:\Program Files\virtualdub\plugins" ################################################################## # Some general notes: # # # # 1) Colorspace: # # VD filters use RGB input as opposed to Avisynth which works # # in both YUV and RGB space. Simply adding ConvertToRGB32 before # # the VD_xxxx call and everything should work ok and add # # ConvertToYUY2 after the VD_xxxx call. # # # # 2) Interlaced material: # # Some VirtualDub filters (for example Zoom v1.2) have an option # # to select interlaced while the corresponding script has not. # # This can be done internally in AviSynth in the following way: # # clip.SeparateFields.VD_Zoom(...).Weave or # # Weave(VD_Zoom(SeparateFields(clip),...)) # # # # 3) If you are using AviSynth2 you can use ConvertbackToYUY2 # # instead of ConvertToYUY2 for converting back to YUV. # ################################################################## #################################### # Most filters can be found at: # # http://sauron.mordor.net/dgraft/ # #################################### ##################################### # 2D Cleaner by Jim Casaburi, v0.6b # # # # threshold (0-255), radius (0-10) # # # # For athlon/pIII/pIV users there # # is an optimized version. # ##################################### function VD_2DCleaner(clip clip, int "threshold", int "radius", bool "interlaced") { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\2dclean.vdf", "_VD_2DCleaner") return clip._VD_2DCleaner(default(interlaced,false)?1:0, default(threshold,75), default(radius,1)) } # example: # ConvertToRGB() # VD_2DCleaner(75, 1) # ConvertToYUY2() #################################### # Temporal Cleaner by Jim Casaburi # #################################### function VD_TemporalCleaner(clip clip, int "threshold", int "pixel_lock", int "threshold2", \ int "pixel_lock2", int "scene", bool "partial", bool "yuv") { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\tclean.vdf", "_VD_TemporalCleaner", 10) return clip._VD_TemporalCleaner(default(threshold,10), default(pixel_lock,4), \ default(threshold2,16), default(pixel_lock2,8), default(scene,30), \ default(partial,false)?1:0, default(yuv,true)?1:0) } # example: # ConvertToRGB() # VD_TemporalCleaner(10, 4, 16, 8, 30, false, true) # ConvertToYUY2() ############################ # Colorize by Donald Graft # ############################ function VD_Colorize(clip clip, int "hue", int "sat", int "lum") { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\colorize.vdf", "_VD_Colorize") return clip._VD_Colorize(default(hue, 0), default(sat, 150), default(lum, 150)) } ############################################ # Hue/Saturation/Intensity by Donald Graft # # # # there is a version of this filter called # # "Tweak11 by Donald Graft" which can be # # used in Avisynth (directly in YUV-space) # ############################################ function DG_FloatToInt(f) { return round((default(f,1.0) - 1) * 100) } function VD_Hue(clip clip, int "hue", bool "preserve_luma", float "sat", float "inten", \ bool "r", bool "g", bool "b", bool "y", bool "c", bool "m") { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\hue.vdf", "_VD_Hue") hue = default(hue, 0) sat = DG_FloatToInt(sat) inten = DG_FloatToInt(inten) flags = (default(r,true)?1:0)+(default(g,true)?2:0)+(default(b,true)?4:0) \ +(default(y,true)?8:0)+(default(c,true)?16:0)+(default(m,true)?32:0) return clip._VD_Hue(hue, default(preserve_luma,false)?1:0, sat, inten, flags) } ############################################# # Red/Green/Blue Adjustment by Donald Graft # ############################################# function VD_RGBAdjustment(clip clip, float "r", float "g", float "b") { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\rgb.vdf", "_VD_RGBAdjustment") return clip._VD_RGBAdjustment(DG_FloatToInt(r), DG_FloatToInt(g), DG_FloatToInt(b)) } ############################# # Smart Bob by Donald Graft # ############################# # NB: the input clip is run through SeparateFields. You may need to use # AssumeFrameBased, AssumeFieldBased, or ComplementParity beforehand. function VD_SmartBob(clip clip, bool "show_motion", int "threshold", bool "motion_map_denoising") { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\bob.vdf", "_VD_SmartBob", 1) return clip.SeparateFields._VD_SmartBob(clip.GetParity()?1:0, \ default(show_motion,false)?1:0, default(threshold,10), \ default(motion_map_denoising,true)?1:0) } ############################################# # Smart Deinterlace by Donald Graft, v2.7b2 # # # # m(otion)_threshold (0-35 ?), # # s(cene)_c(hange)_threshold (0-10), # # mode = "frame", "field" or "both" # # channel = "luma" or "all" # # # # For pII, pIII and pIV users there is an # # optimized version called QS Deinterlace. # ############################################# # NB: the "Advanced Processing" options (the last four arguments) duplicate built-in Avisynth functionality. function VD_SmartDeinterlace(clip clip, string "mode", string "channel", bool "show_motion", bool "blend", \ bool "cubic", bool "motion_map_denoising", int "m_threshold", int "sc_threshold", \ bool "fs_before", bool "shift", bool "fs_after", bool "disable") { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\smart.vdf", "_VD_SmartDeinterlace", 1) mode = default(mode, "frame") mode = (mode=="frame") ? 0 : (mode=="field") ? 1 : (mode=="both") ? 2 : -1 Assert(mode>=0, """VD_SmartDeinterlace: "mode" parameter must be "frame", "field", or "both"""") channel = default(channel, "luma") channel = (channel=="luma") ? 0 : (channel=="all") ? 1 : -1 Assert(channel>=0, """VD_SmartDeinterlace: "channel" parameter must be "luma" or "all"""") return clip._VD_SmartDeinterlace(default(show_motion,false)?1:0, default(blend,false)?1:0, \ default(m_threshold,15), default(sc_threshold,100), default(shift,false)?1:0, \ default(fs_before,false)?1:0, default(fs_after,false)?1:0, default(disable,false)?1:0, \ default(motion_map_denoising,false)?1:0, mode, channel, default(cubic,true)?1:0) } # example: # ConvertToRGB() # VD_SmartDeinterlace("frame", "luma", false, true, false, false, 15, 100) # ConvertToYUY2() ########################################### # Smart Smoother by Donald Graft, v1.1 # # # # diameter (3-11, odd), threshold (1-200) # ########################################### function VD_SmartSmoother(clip clip, int "diameter", int "threshold", bool "interlaced") { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\smooth.vdf", "_VD_SmartSmoother") return clip._VD_SmartSmoother(default(diameter,5), default(threshold,25), \ default(interlaced,false)?1:0) } # example: # ConvertToRGB() # VD_SmartSmoother(5, 25, false) # ConvertToYUY2() ################################ # Unsharp Mask by Donald Graft # ################################ function VD_UnsharpMask(clip clip, int "diameter", int "strength", int "threshold", \ bool "interlaced", int "mask_top", int "mask_bottom", int "mask_left", int "mask_right") { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\unsharp.vdf", "_VD_UnsharpMask", 1) return clip._VD_UnsharpMask(default(diameter,5), default(strength,32), \ default(threshold,0), default(mask_left,0), default(mask_right,0), \ default(mask_bottom,0), default(mask_top,0), default(interlaced,false)?1:0) } ########################################################## # Subtitler by Avery Lee # # # # filename is the complete location of the subtitle file # # with parentheses around it # ########################################################## # NB: non-antialiased mode is not supported, because # the VD emulation doesn't support NEEDS_HDC function VD_Subtitler(clip clip, string filename) { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\subtitler.vdf", "_VD_Subtitler") return clip._VD_Subtitler(1, filename) } # example: ConvertToRGB() # VD_Subtitler("c:\_project\subs.ssa") # ConvertToYUY2() ################################# # Border Smear by Simon Walters # ################################# function VD_BorderSmear(clip clip, int yt, int yb) { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\brdrsmr.vdf", "_VD_BorderSmear") return clip._VD_BorderSmear(yt, yb) } ########################## # Cartoon Tool by flaXen # ########################## # NB: "Show Inverse Map" not supported since it apparently # is not accessible through the scripting interface function VD_CartoonTool(clip clip, int "scale_base", int "scale_intensity", int "pixel_base") { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\fxtoon.vdf", "_VD_CartoonTool") return clip._VD_CartoonTool(default(scale_base,16), default(scale_intensity,200), default(pixel_base,16)) } ######################## # VHS Filter by flaXen # ######################## function VD_VHS(clip clip, bool "stabilize", int "luma_threshold", int "chroma_threshold", \ int "temporal_error", int "temporal_bias", int "noise_threshold", \ int "pixel_radius", bool "prefilter", bool "postfilter", bool "sharpen", \ int "sharpen_amount", bool "eight_direction", int "chroma_shift_x", \ int "chroma_shift_y", bool "shift_i", bool "shift_q") { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\fxvhs.vdf", "_VD_VHS") return clip._VD_VHS(default(stabilize,true)?1:0, default(luma_threshold,5), \ default(chroma_threshold,30), default(temporal_error,15), default(temporal_bias,5), \ default(noise_threshold,10), default(pixel_radius,1), default(prefilter,false)?1:0, \ default(postfilter,false)?1:0, default(sharpen,false)?1:0, default(sharpen_amount,15), \ default(eight_direction,false)?1:0, default(chroma_shift_x,-1), default(chroma_shift_y,0), \ default(shift_i,false)?1:0, default(shift_q,false)?1:0) } # filters from internet: ################################################# # 2D Cleaner optimized by Jaan Kalda, v0.9 # # (optimized version of 2D Cleaner, for the # # athlon users) # # # # Threshold (0-255), Radii around source pixel: # # the values must satisfy # # x and y >= 0 and (2x+1)(2y+1)<=121. # # Either value, but not both may be 0. # ################################################# function VD_2DCleaneroptk7(clip clip, int "threshold", int "radiusx", int "radiusy", bool "interlaced") { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\2dcleanopt_k7.vdf", "_VD_2DCleaneroptk7") return clip._VD_2DCleaneroptk7(default(interlaced,false)?1:0, default(threshold,10), default(radiusx,2), \ default(radiusy,2)) } # example: ConvertToRGB() # VD_2DCleaneroptk7(75, 1, 1) # ConvertToYUY2() ################################################# # 2D Cleaner optimized by Jaan Kalda, v0.9 # # (optimized version of 2D Cleaner, for the # # pIII or pIV users) # # # # Threshold (0-255), Radii around source pixel: # # the values must satisfy # # x and y >= 0 and (2x+1)(2y+1)<=121. # # Either value, but not both may be 0. # ################################################# function VD_2DCleaneroptp3(clip clip, int "threshold", int "radiusx", int "radiusy", bool "interlaced") { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\2dcleanopt_p3.vdf", "_VD_2DCleaneroptp3") return clip._VD_2DCleaneroptp3(default(interlaced,false)?1:0, default(threshold,10), default(radiusx,2), \ default(radiusy,2)) } # example: ConvertToRGB() # VD_2DCleaneroptp3(10, 2, 2) # ConvertToYUY2() ####################################### # Xsharpen by Donald Graft, v1.0b2 # # # # Strength (0-255), Threshold (0-255) # ####################################### function VD_Xsharpen(clip clip, int strength, int threshold) { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\xsharpen.vdf", "_VD_Xsharpen") return clip._VD_Xsharpen(threshold, strength) } # example: ConvertToRGB() # VD_Xsharpen(10, 128) # ConvertToYUY2() ################################################# # WarpSharp by Avery Lee and Donald Graft, v1.1 # # # # depth (0-400) # # # # make sure that you got a version of # # WarpSharp that works in Avisynth, see: # # http://home.attbi.com/~neuron2/warpsharp.zip # ################################################# function VD_WarpSharp(clip clip, int "depth") { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\warpsharp.vdf", "_VD_WarpSharp") return clip._VD_WarpSharp(depth) } # example: ConvertToRGB() # VD_WarpSharp(50) # ConvertToYUY2() ########################################################## # Dynamic noise reduction by Steven Don and Donald Graft # # (has no version number) # # # # threshold (0-31) # # # # make sure that you got a version of # # WarpSharp that works in AviSynth, see: # # http://home.attbi.com/~neuron2/warpsharp.zip # ########################################################## function VD_DNR(clip clip, int threshold) { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\dnr.vdf", "_VD_DNR") return clip._VD_DNR(threshold) } # example: ConvertToRGB() # VD_Dnr(25) # ConvertToYUY2() ########################################## # SmartResize by Donald Graft, v1.1 # # # # colors: green $00ff00 # # red $ff0000 # # blue $0000ff (or 255) # # black $000000 (or 0) # # (for other colors, look in the filter # # in Virtual Dub itself) # # # # mode = "neighbour", "bilinear", # # "bicubic", "p_bilinear" or "p_bicubic" # # # # The calculator isn't included in # # the script, if you want to use it # # I suggest to open your avi/avs in # # Virtual Dub and use the calculator # # to determine how to resize. # ########################################## function VD_SmartResize(clip clip, int "new_width", int "new_height", bool "interlaced", bool "letterbox", \ int "frame_width", int "frame_height", string "mode", int "color", string "calculator") { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\Resize.vdf", "_VD_SmartResize") mode = default(mode, "p_bicubic") interlaced = default(interlaced, false) mode = (mode=="neighbour" && interlaced==false) ? 0 : (mode=="bilinear" && interlaced==false) ? 1 : (mode=="bicubic" && interlaced==false) ? 2 : \ (mode=="p_bilinear" && interlaced==false) ? 3 : (mode=="p_bicubic" && interlaced==false) ? 4 : (mode=="neighbour" && interlaced==true) ? 128 : \ (mode=="bilinear" && interlaced==true) ? 129 : (mode=="bicubic" && interlaced==true) ? 130 : (mode=="p_bilinear" && interlaced==true) ? 131 : \ (mode=="p_bicubic" && interlaced==true) ? 132 : -1 Assert(mode>=0, """VD_SmartResize: "mode" parameter must be "neighbour", "bilinear", "bicubic", "p_bilinear", "p_bicubic"""") return clip._VD_SmartResize(new_width, new_height, default(letterbox,false)?1:0, mode, default(frame_width,new_width), \ default(frame_height,new_height), default(color,0), default(calculator,"")) } # example1: # ConvertToRGB() # VD_SmartResize(320, 240, false, true, 320, 320) # ConvertToYUY2() # example2: # ConvertToRGB() # VD_SmartResize(320, 240, false, true, 320, 320, "p_bicubic", $ff0000) # ConvertToYUY2() #################################################################### # QS Deinterlace by Pavel Kuznetsov, v0.52b (optimized version of # # Smart Deinterlace, for the pentium II users) # # # # mode = "frame", "field" or "both" # # channel = "luma" or "all" # # # # http://freetime.sinor.ru/observatory/article.phtml?qsdeinterlace # # Please use http://babelfish.altavista.com for translation. # #################################################################### function VD_QSdeinterlaceII(clip clip, string "mode", string "channel", bool "show_motion", bool "blend", \ bool "cubic", bool "motion_map_denoising", int "m_threshold", int "sc_threshold", \ bool "fs_before", bool "shift", bool "fs_after", bool "disable") { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\QSdeinterlacePII.vdf", "_VD_QSdeinterlaceII", 1) mode = default(mode, "frame") mode = (mode=="frame") ? 0 : (mode=="field") ? 1 : (mode=="both") ? 2 : -1 Assert(mode>=0, """VD_QSdeinterlaceIII: "mode" parameter must be "frame", "field", or "both"""") channel = default(channel, "luma") channel = (channel=="luma") ? 0 : (channel=="all") ? 1 : -1 Assert(channel>=0, """VD_QSdeinterlaceII: "channel" parameter must be "luma" or "all"""") return clip._VD_QSdeinterlaceII(default(show_motion,false)?1:0, default(blend,false)?1:0, \ default(m_threshold,15), default(sc_threshold,100), default(shift,false)?1:0, \ default(fs_before,false)?1:0, default(fs_after,false)?1:0, default(disable,false)?1:0, \ default(motion_map_denoising,false)?1:0, mode, channel, default(cubic,true)?1:0) } # ConvertToRGB() # example VD_QSdeinterlaceII("frame", "luma", false, true, false, false, 15, 100) # ConvertToYUY2() ############################################################################## # QS Deinterlace by Pavel Kuznetsov, v0.50b and v0.52b (optimized version of # # Smart Deinterlace, for the pentium III users) # # # # mode = "frame", "field" or "both" # # channel = "luma" or "all" # # # # http://freetime.sinor.ru/observatory/article.phtml?qsdeinterlace # # Please use http://babelfish.altavista.com for translation. # ############################################################################## function VD_QSdeinterlaceIII(clip clip, string "mode", string "channel", bool "show_motion", bool "blend", \ bool "cubic", bool "motion_map_denoising", int "m_threshold", int "sc_threshold", \ bool "fs_before", bool "shift", bool "fs_after", bool "disable") { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\QSdeinterlacePIII.vdf", "_VD_QSdeinterlaceIII", 1) mode = default(mode, "frame") mode = (mode=="frame") ? 0 : (mode=="field") ? 1 : (mode=="both") ? 2 : -1 Assert(mode>=0, """VD_QSdeinterlaceIII: "mode" parameter must be "frame", "field", or "both"""") channel = default(channel, "luma") channel = (channel=="luma") ? 0 : (channel=="all") ? 1 : -1 Assert(channel>=0, """VD_QSdeinterlaceIII: "channel" parameter must be "luma" or "all"""") return clip._VD_QSdeinterlaceIII(default(show_motion,false)?1:0, default(blend,false)?1:0, \ default(m_threshold,15), default(sc_threshold,100), default(shift,false)?1:0, \ default(fs_before,false)?1:0, default(fs_after,false)?1:0, default(disable,false)?1:0, \ default(motion_map_denoising,false)?1:0, mode, channel, default(cubic,true)?1:0) } # ConvertToRGB() # example VD_QSdeinterlaceIII("frame", "luma", false, true, false, false, 15, 100) # ConvertToYUY2() ############################################################################## # QS Deinterlace by Pavel Kuznetsov, v0.50b and v0.52b (optimized version of # # Smart Deinterlace, for the pentium IV users) # # # # mode = "frame", "field" or "both" # # channel = "luma" or "all" # # # # http://freetime.sinor.ru/observatory/article.phtml?qsdeinterlace # # Please use http://babelfish.altavista.com for translation. # ############################################################################## function VD_QSdeinterlaceIV(clip clip, string "mode", string "channel", bool "show_motion", bool "blend", \ bool "cubic", bool "motion_map_denoising", int "m_threshold", int "sc_threshold", \ bool "fs_before", bool "shift", bool "fs_after", bool "disable") { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\QSdeinterlacePIV.vdf", "_VD_QSdeinterlaceIV", 1) mode = default(mode, "frame") mode = (mode=="frame") ? 0 : (mode=="field") ? 1 : (mode=="both") ? 2 : -1 Assert(mode>=0, """VD_QSdeinterlaceIV: "mode" parameter must be "frame", "field", or "both"""") channel = default(channel, "luma") channel = (channel=="luma") ? 0 : (channel=="all") ? 1 : -1 Assert(channel>=0, """VD_QSdeinterlaceIV: "channel" parameter must be "luma" or "all"""") return clip._VD_QSdeinterlaceIV(default(show_motion,false)?1:0, default(blend,false)?1:0, \ default(m_threshold,15), default(sc_threshold,100), default(shift,false)?1:0, \ default(fs_before,false)?1:0, default(fs_after,false)?1:0, default(disable,false)?1:0, \ default(motion_map_denoising,false)?1:0, mode, channel, default(cubic,true)?1:0) } # ConvertToRGB() # example VD_QSdeinterlaceIV("frame", "luma", false, true, false, false, 15, 100) # ConvertToYUY2() ############################################## # Zoom by Donald Graft and Avery Lee, v1.2 # # # # mode = "neighbour", "bilinear", "bicubic", # # "p_bilinear" or "p_bicubic". # # # # See "simplified_versions.avs" for some # # examples. # ############################################## function VD_Zoom(clip clip, int "width", int "height", int "focusX", int "focusY", \ int "start_per", int "end_per", int "start_Frame", int "end_frame", \ int "red", int "green", int "blue", string "mode", int "start2_per", \ int "end2_per", int "start2_frame", int "end2_frame") { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\Zoom.vdf", "_VD_Zoom") mode = default(mode, "p_bicubic") mode = (mode=="neighbour") ? 0 : (mode=="bilinear") ? 1 : (mode=="bicubic") ? 2 : \ (mode=="p_bilinear") ? 3 : (mode=="p_bicubic") ? 4 : -1 Assert(mode>=0, """VD_Zoom: "mode" parameter must be "neighbour", "bilinear", "bicubic", "p_bilinear", "p_bicubic"""") return clip._VD_Zoom(default(width,320), default(height,240), \ default(focusX,160), default(focusY,120), default(start_per,100), default(end_per,500), \ default(start_frame,0), default(end_frame,500), default(start2_per,0), default(end2_per,0), \ default(start2_frame,0), default(end2_frame,0), default(red,0), default(green,140), default(blue,180), mode) } # example (clip of 300 frames): # ConvertToRGB() # VD_Zoom(512, 384, 256, 80, 100, 300, 134, 144, 0, 0, 0, "p_bicubic", 300, 100, 144, 154) # ConvertToYUY2() ####################################################################################################################### # LogoAway by Krzysztof Wojdon, v3.5fix1 # # # # Load your avs in VirtualDub without this script. Select "shape XY" (or "shape UGLARM"), select "visible borders" # # and press preview. Enter and adjust "logo border position" and "logo border size" by looking at the preview. After # # adjusting close preview and press twice "ok". Move the slider to a suitable frame and copy the output frame to the # # clipboard (under "video", or by pressing ctrl+2). Open the picture on the clipboard in paintshop, corel photo-paint # # or adobe photo-shop and make the alpha mask file by following the help file of the Logoaway filter (called # # "alpha.bmp" in the examples below. # # # # When I wrote this script I couldn't find documentation about the "Shape/Lightmap bitmap" option, called "filename2" # # in the script. If anyone knows, please mail me. # # # # mode: off, luminance, XY, uglarm, shape_XY, shape_uglarm or solid # # color: see script of SmartResize v1.1 # # upper_left, upper_right, down_right or down_left: "NW", "NE", "SW" or "SE" # # border_up, border_right, border_down or border_left: "direct", "opposite", or "interpolate" # ####################################################################################################################### function VD_LogoAway(clip clip, string "mode", int "border_X", int "border_Y", int "logosize_X", int "logosize_Y", bool "alpha", \ bool "visible_border", string "filename1", int "keyframe", int "color", int "XY_weight", int "blur", string "upper_left", \ string "upper_right", string "down_right", string "down_left", string "border_up", string "border_right", string "border_down", \ string "border_left", string "filename2") { LoadVirtualdubPlugin(VirtualDub_plugin_directory+"\logoaway.vdf", "_VD_LogoAway") mode = default(mode, "XY") mode = (mode=="off") ? 0 : (mode=="luminance") ? 1 : (mode=="XY") ? 2 : \ (mode=="uglarm") ? 3 : (mode=="shape_XY") ? 4 : (mode=="shape_uglarm") ? 5 : (mode=="solid") ? 6 : -1 Assert(mode>=0, """VD_LogoAway: "mode" parameter must be "off", "luminance", "XY", "uglarm", "shape_XY", "shape_uglarm", "solid"""") border_X = default(border_X,560) border_Y = default(border_Y,35) A = border_X*65536+border_Y logosize_X = default(logosize_X,100) logosize_Y = default(logosize_Y,75) B = logosize_X*65536+logosize_Y mode2 = (alpha==false && visible_border==false) ? 0 : (alpha==false && visible_border==true) ? 1 : \ (alpha==true && visible_border==false) ? 2 : (alpha==true && visible_border==true) ? 3 : -1 upper_left = default(upper_left, "NW") upper_left = (upper_left=="NW") ? 0 : (upper_left=="NE") ? 1 : (upper_left=="SW") ? 2 : (upper_left=="SE") ? 3 : -1 upper_right = default(upper_right, "NE") upper_right = (upper_right=="NW") ? 0 : (upper_right=="NE") ? 1 : (upper_right=="SW") ? 2 : (upper_right=="SE") ? 3 : -1 down_right = default(down_right, "SE") down_right = (down_right=="NW") ? 0 : (down_right=="NE") ? 1 : (down_right=="SW") ? 2 : (down_right=="SE") ? 3 : -1 down_left = default(down_left, "SW") down_left = (down_left=="NW") ? 0 : (down_left=="NE") ? 1 : (down_left=="SW") ? 2 : (down_left=="SE") ? 3 : -1 Assert(upper_left>=0, """VD_LogoAway: "upper_left" parameter must be "NW", "NE", "SE", "SW"""") Assert(upper_right>=0, """VD_LogoAway: "upper_right" parameter must be "NW", "NE", "SE", "SW"""") Assert(down_right>=0, """VD_LogoAway: "down_right" parameter must be "NW", "NE", "SE", "SW"""") Assert(down_left>=0, """VD_LogoAway: "down_left" parameter must be "NW", "NE", "SE", "SW"""") border_up = default(border_up, "direct") border_up = (border_up=="direct") ? 0 : (border_up=="opposite") ? 1 : (border_up=="interpolate") ? 2 : -1 border_right = default(border_right, "direct") border_right = (border_right=="direct") ? 0 : (border_right=="opposite") ? 1 : (border_right=="interpolate") ? 2 : -1 border_down = default(border_down, "direct") border_down = (border_down=="direct") ? 0 : (border_down=="opposite") ? 1 : (border_down=="interpolate") ? 2 : -1 border_left = default(border_left, "direct") border_left = (border_left=="direct") ? 0 : (border_left=="opposite") ? 1 : (border_left=="interpolate") ? 2 : -1 Assert(border_up>=0, """VD_LogoAway: "border_up" parameter must be "direct", "opposite", "interpolate"""") Assert(border_right>=0, """VD_LogoAway: "border_right" parameter must be "direct", "opposite", "interpolate"""") Assert(border_down>=0, """VD_LogoAway: "border_down" parameter must be "direct", "opposite", "interpolate"""") Assert(border_left>=0, """VD_LogoAway: "border_left" parameter must be "direct", "opposite", "interpolate"""") t = 1*down_right + 256*down_left + 65536*upper_right + 16777216*upper_left v = 1*border_left + 256*border_down + 65536*border_right + 16777216*border_up return clip._VD_LogoAway(mode, A, B, default(keyframe,1), default(color,0), default(XY_Weight,5), mode2, t, v, \ default(blur,1), default(filename1,"g:\alpha.bmp"), default(filename2,"")) } # examples: # ConvertToRGB() # VD_LogoAway("XY", 560, 35, 100, 75, true, false, "g:\alpha.bmp", 1, 0, 5, 1) # VD_LogoAway("XY", 560, 35, 100, 75, true, false, "g:\alpha.bmp", 1, 0, 5, 1, "NW", "NE", "SE", "SW", "direct", "direct", "direct", "direct") # ConvertToYUY2()