VirtualDub I

From Avisynth wiki
Jump to: navigation, search

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()
Personal tools