<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://avisynth.nl/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://avisynth.nl/index.php?action=history&amp;feed=atom&amp;title=AVExtensions</id>
		<title>AVExtensions - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://avisynth.nl/index.php?action=history&amp;feed=atom&amp;title=AVExtensions"/>
		<link rel="alternate" type="text/html" href="http://avisynth.nl/index.php?title=AVExtensions&amp;action=history"/>
		<updated>2026-04-24T15:52:57Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.19.24</generator>

	<entry>
		<id>http://avisynth.nl/index.php?title=AVExtensions&amp;diff=11961&amp;oldid=prev</id>
		<title>Reel.Deal: AVExtensions</title>
		<link rel="alternate" type="text/html" href="http://avisynth.nl/index.php?title=AVExtensions&amp;diff=11961&amp;oldid=prev"/>
				<updated>2020-07-02T19:14:41Z</updated>
		
		<summary type="html">&lt;p&gt;AVExtensions&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{FilterCat5|External_filters|Plugins|Plugins_x64|Other_filters|multipurpose_Filters}}&lt;br /&gt;
{{Filter3&lt;br /&gt;
|1=[https://github.com/nutbread nutbread]&lt;br /&gt;
|2=20150117&lt;br /&gt;
|3=[x86]: [https://github.com/nutbread/ave/blob/master/builds/AVExtensions-x64.dll AVExtensions.dll]&lt;br /&gt;
---------&lt;br /&gt;
[x64]: [https://github.com/nutbread/ave/blob/master/builds/AVExtensions-x64.dll AVExtensions-x64.dll]&lt;br /&gt;
|4=Multipurpose&lt;br /&gt;
|5=&lt;br /&gt;
|6=&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Description ==&lt;br /&gt;
Audio-video extensions is a collection of various AviSynth filters used to modify audio or video.&lt;br /&gt;
&lt;br /&gt;
This is mainly a collection of miscellaneous filters, as they have no real theme with one another. Some are more useful and/or practical than others.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* [x86]: [[AviSynth+]] or [https://sourceforge.net/projects/avisynth2/ AviSynth 2.6]&lt;br /&gt;
* [x64]: [[AviSynth+]]&lt;br /&gt;
* Supported color formats: [[RGB24]], [[RGB32]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[Script variables|Syntax and Parameters]] ==&lt;br /&gt;
&lt;br /&gt;
=== AApproximate ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
		clip.AApproximate(...)&lt;br /&gt;
		Returns an &amp;quot;approximation&amp;quot; of the original audio track.&lt;br /&gt;
		Basically, this is a way of distorting audio.&lt;br /&gt;
		It attempts to map all the peaks of the audio track, and then create a waveform inbetween the peaks.&lt;br /&gt;
		@param clip&lt;br /&gt;
			The image to sample&lt;br /&gt;
		@param waveform&lt;br /&gt;
			The waveform to approximate with&lt;br /&gt;
			Available values are:&lt;br /&gt;
				&amp;quot;SQUARE&amp;quot;&lt;br /&gt;
				&amp;quot;TRIANGLE&amp;quot;&lt;br /&gt;
				&amp;quot;SINE&amp;quot;&lt;br /&gt;
		@param same_zeros&lt;br /&gt;
			True if the waveform should intersect the x-axis at the same location,&lt;br /&gt;
			False otherwise&lt;br /&gt;
		@param tolerance&lt;br /&gt;
			How much tolerance is used for a sign change to occur&lt;br /&gt;
			Range: [0,1]&lt;br /&gt;
		@param absoluteness&lt;br /&gt;
			How absolute the tolerance is&lt;br /&gt;
			0 = Relative to the previous peak&lt;br /&gt;
			1 = Relative to 1 (the maximum amplitude)&lt;br /&gt;
			Range: [0,1]&lt;br /&gt;
		@param interpolation&lt;br /&gt;
			The number of peaks that should be interpolated into a single peak&lt;br /&gt;
			1 or less means no interpolation&lt;br /&gt;
		@param interpolate_samples&lt;br /&gt;
			The number of samples that should be interpolated into a single sample&lt;br /&gt;
			1 or less means no interpolation&lt;br /&gt;
			If this is specified along with &amp;quot;interpolation&amp;quot;, the minimum interpolation distance is used&lt;br /&gt;
		@return&lt;br /&gt;
			A distorted audio track&lt;br /&gt;
		@default&lt;br /&gt;
			clip = clip.AApproximate( \&lt;br /&gt;
				waveform = &amp;quot;SQUARE&amp;quot;, \&lt;br /&gt;
				same_zeros = true, \&lt;br /&gt;
				tolerance = 0.0, \&lt;br /&gt;
				absoluteness = 0.0, \&lt;br /&gt;
				interpolation = 1, \&lt;br /&gt;
				interpolate_samples = 0 \&lt;br /&gt;
			)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===AVideoToWaveform===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
		clip.AVideoToWaveform(...)&lt;br /&gt;
		Convert an image/video frame into an audio waveform.&lt;br /&gt;
		When opened in an audio viewer, the audio waveform should resemble the original image.&lt;br /&gt;
		(Black and white images work best)&lt;br /&gt;
		@param clip&lt;br /&gt;
			The image to sample&lt;br /&gt;
		@param sample_rate&lt;br /&gt;
			The rate of the resulting audio&lt;br /&gt;
		@param channels&lt;br /&gt;
			The number of channels in the resulting audio&lt;br /&gt;
		@param channel_split&lt;br /&gt;
			True if the resulting waveform image should be split across the total channels&lt;br /&gt;
			False if it should be replicated on each channel&lt;br /&gt;
		@param pixel_sample_size&lt;br /&gt;
			The number of audio samples that will form a single pixel&lt;br /&gt;
		@param block_sample_size&lt;br /&gt;
			The number of samples that form a &amp;quot;block&amp;quot;&lt;br /&gt;
			A &amp;quot;block&amp;quot; is a vertical section of audio which is used when multiple pixels exist in the same vertical scanline&lt;br /&gt;
		@param block_sample_period&lt;br /&gt;
			The number of samples that form a &amp;quot;block&amp;quot;&lt;br /&gt;
		@param waveform&lt;br /&gt;
			The waveform to use for the audio&lt;br /&gt;
			Available values are:&lt;br /&gt;
				&amp;quot;TRIANGLE&amp;quot;&lt;br /&gt;
				&amp;quot;SAWTOOTH&amp;quot;&lt;br /&gt;
				&amp;quot;SQUARE&amp;quot;&lt;br /&gt;
				&amp;quot;SINE&amp;quot;&lt;br /&gt;
				&amp;quot;FLAT&amp;quot;&lt;br /&gt;
		@param threshold_red&lt;br /&gt;
			The cutoff level for a color to be considered &amp;quot;black&amp;quot;, and thus used as an audio block (red component)&lt;br /&gt;
			Range: [0,255]&lt;br /&gt;
		@param threshold_green&lt;br /&gt;
			The cutoff level for a color to be considered &amp;quot;black&amp;quot;, and thus used as an audio block (green component)&lt;br /&gt;
			Range: [0,255]&lt;br /&gt;
		@param threshold_blue&lt;br /&gt;
			The cutoff level for a color to be considered &amp;quot;black&amp;quot;, and thus used as an audio block (blue component)&lt;br /&gt;
			Range: [0,255]&lt;br /&gt;
		@return&lt;br /&gt;
			The video + a new audio track&lt;br /&gt;
		@default&lt;br /&gt;
			clip.AVideoToWaveform( \&lt;br /&gt;
				sample_rate = clip.AudioRate (or 44100 if no audio), \&lt;br /&gt;
				channels = clip.AudioChannels (or 2 if no audio), \&lt;br /&gt;
				channel_split = true, \&lt;br /&gt;
				pixel_sample_size = 128, \&lt;br /&gt;
				block_sample_size = 4, \&lt;br /&gt;
				block_sample_period = 4, \&lt;br /&gt;
				waveform = &amp;quot;TRIANGLE&amp;quot;, \&lt;br /&gt;
				threshold_red = 128, \&lt;br /&gt;
				threshold_green = threshold_red, \&lt;br /&gt;
				threshold_blue = threshold_red \&lt;br /&gt;
			)&lt;br /&gt;
&amp;lt;/pre&amp;gt;	&lt;br /&gt;
===MArchitecture===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
		MArchitecture(...)&lt;br /&gt;
		Get the runtime architecture of the plugin&lt;br /&gt;
		@return&lt;br /&gt;
			&amp;quot;x86&amp;quot; if using a 32-bit compiled version&lt;br /&gt;
			&amp;quot;x64&amp;quot; if using a 64-bit compiled version&lt;br /&gt;
		@default&lt;br /&gt;
			MArchitecture()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===VBlend===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
		clip.VBlend(...)&lt;br /&gt;
		Blend two clips together using a custom blending function&lt;br /&gt;
		@param source1&lt;br /&gt;
			The first clip to modify&lt;br /&gt;
		@param source2&lt;br /&gt;
			The second clip to modify&lt;br /&gt;
		@param factor1&lt;br /&gt;
			The factor to multiply source1's pixels by&lt;br /&gt;
			The total equation winds up being:&lt;br /&gt;
				(source1.pixel_component * factor1) [equation] (source2.pixel_component * factor2)&lt;br /&gt;
				with values being in the range [0,1] instead of [0,255]&lt;br /&gt;
			Available usages are:&lt;br /&gt;
				&amp;quot;value 0.5&amp;quot;&lt;br /&gt;
					Multiply it by a fixed value (Range: [0,1])&lt;br /&gt;
				&amp;quot;color [inv] (src)&amp;quot;&lt;br /&gt;
					Multiply the component by the same component of source(src)&lt;br /&gt;
					(src) can be 1 or 2&lt;br /&gt;
					[inv] is optional, and if specified, (1.0 - source(src)[component]) is used&lt;br /&gt;
				&amp;quot;red [inv] (src)&amp;quot;&lt;br /&gt;
				&amp;quot;green [inv] (src)&amp;quot;&lt;br /&gt;
				&amp;quot;blue [inv] (src)&amp;quot;&lt;br /&gt;
				&amp;quot;alpha [inv] (src)&amp;quot;&lt;br /&gt;
					Same idea as the &amp;quot;color&amp;quot; version, except the component is fixed to R, G, B, or A&lt;br /&gt;
		@param factor2&lt;br /&gt;
			Same idea as factor1, except applied to source2&lt;br /&gt;
		@param equation&lt;br /&gt;
			The equation to use to modify the two clips&lt;br /&gt;
			Available equations are:&lt;br /&gt;
				&amp;quot;add&amp;quot;&lt;br /&gt;
				&amp;quot;subtract&amp;quot;&lt;br /&gt;
				&amp;quot;multiply&amp;quot;&lt;br /&gt;
				&amp;quot;divide&amp;quot;&lt;br /&gt;
				&amp;quot;max&amp;quot;&lt;br /&gt;
				&amp;quot;min&amp;quot;&lt;br /&gt;
		@param x_offset1&lt;br /&gt;
			The number of pixels to offset the first source clip by (horizontally)&lt;br /&gt;
		@param y_offset1&lt;br /&gt;
			The number of pixels to offset the first source clip by (vertically)&lt;br /&gt;
		@param x_offset2&lt;br /&gt;
			The number of pixels to offset the secondsource clip by (horizontally)&lt;br /&gt;
		@param y_offset2&lt;br /&gt;
			The number of pixels to offset the second source clip by (vertically)&lt;br /&gt;
		@note&lt;br /&gt;
			The same applies for the _r, _g, _b, _a variations, except they apply for a specific component&lt;br /&gt;
		@param border_color1&lt;br /&gt;
			The color to be used if there is no pixel at a location in source1 (due to offsets)&lt;br /&gt;
		@param border_color2&lt;br /&gt;
			The color to be used if there is no pixel at a location in source2 (due to offsets)&lt;br /&gt;
		@return&lt;br /&gt;
			The two clips blended together&lt;br /&gt;
		@default&lt;br /&gt;
			Not applicable, always define the necessary variables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===VBlur===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
		clip.VBlur(...)&lt;br /&gt;
		Blur a clip with custom parameters.&lt;br /&gt;
		@param clip&lt;br /&gt;
			The clip to blur&lt;br /&gt;
		@param x_blur&lt;br /&gt;
			The radius (in pixels) to blur horizontally&lt;br /&gt;
			Default: 4&lt;br /&gt;
		@param y_blur&lt;br /&gt;
			The radius (in pixels) to blur vertically&lt;br /&gt;
			Default: 4&lt;br /&gt;
		@param x_edge&lt;br /&gt;
			The horizontal edge clamping method&lt;br /&gt;
			Values:&lt;br /&gt;
				&amp;quot;clamp&amp;quot;,&lt;br /&gt;
				&amp;quot;wrap&amp;quot;,&lt;br /&gt;
				&amp;quot;color&amp;quot;&lt;br /&gt;
			Default: &amp;quot;clamp&amp;quot;&lt;br /&gt;
		@param y_edge&lt;br /&gt;
			The vertical edge clamping method&lt;br /&gt;
			Values:&lt;br /&gt;
				&amp;quot;clamp&amp;quot;,&lt;br /&gt;
				&amp;quot;wrap&amp;quot;,&lt;br /&gt;
				&amp;quot;color&amp;quot;&lt;br /&gt;
			Default: &amp;quot;clamp&amp;quot;&lt;br /&gt;
		@param x_color&lt;br /&gt;
			The color to be used when using horizontal color edges&lt;br /&gt;
			Default: $000000&lt;br /&gt;
		@param y_color&lt;br /&gt;
			The color to be used when using vertical color edges&lt;br /&gt;
			Default: $000000&lt;br /&gt;
		@param x_interval&lt;br /&gt;
			The horizontal pixel sampling interval&lt;br /&gt;
			Default: 1.0&lt;br /&gt;
		@param y_interval&lt;br /&gt;
			The horizontal pixel sampling interval&lt;br /&gt;
			Default: 1.0&lt;br /&gt;
		@param x_function&lt;br /&gt;
			The function to use for horizontal blurring&lt;br /&gt;
			Values:&lt;br /&gt;
				&amp;quot;gaussian&amp;quot;,&lt;br /&gt;
				&amp;quot;polynomial&amp;quot;&lt;br /&gt;
			Default: &amp;quot;gaussian&amp;quot;&lt;br /&gt;
		@param y_function&lt;br /&gt;
			The function to use for vertical blurring&lt;br /&gt;
			Values:&lt;br /&gt;
				&amp;quot;gaussian&amp;quot;,&lt;br /&gt;
				&amp;quot;polynomial&amp;quot;&lt;br /&gt;
			Default: &amp;quot;gaussian&amp;quot;&lt;br /&gt;
		@param x_polynomial_power&lt;br /&gt;
			This value is only applicable when &amp;quot;x_function&amp;quot; is &amp;quot;polynomial&amp;quot;&lt;br /&gt;
			The function used for polynomials is the following:&lt;br /&gt;
				y = intercept + ((1.0 - x / radius) ^ (power)) * (1.0 - intercept)&lt;br /&gt;
			This value represents &amp;quot;power&amp;quot; in the equation&lt;br /&gt;
		@param y_polynomial_power&lt;br /&gt;
			This value is only applicable when &amp;quot;y_function&amp;quot; is &amp;quot;polynomial&amp;quot;&lt;br /&gt;
			The function used for polynomials is the following:&lt;br /&gt;
				y = intercept + ((1.0 - x / radius) ^ (power)) * (1.0 - intercept)&lt;br /&gt;
			This value represents &amp;quot;power&amp;quot; in the equation&lt;br /&gt;
		@param x_polynomial_intercept&lt;br /&gt;
			This value is only applicable when &amp;quot;x_function&amp;quot; is &amp;quot;polynomial&amp;quot;&lt;br /&gt;
			The function used for polynomials is the following:&lt;br /&gt;
				y = intercept + ((1.0 - x / radius) ^ (power)) * (1.0 - intercept)&lt;br /&gt;
			This value represents &amp;quot;intercept&amp;quot; in the equation&lt;br /&gt;
		@param y_polynomial_intercept&lt;br /&gt;
			This value is only applicable when &amp;quot;y_function&amp;quot; is &amp;quot;polynomial&amp;quot;&lt;br /&gt;
			The function used for polynomials is the following:&lt;br /&gt;
				y = intercept + ((1.0 - x / radius) ^ (power)) * (1.0 - intercept)&lt;br /&gt;
			This value represents &amp;quot;intercept&amp;quot; in the equation&lt;br /&gt;
		@param gpu&lt;br /&gt;
			Use the GPU to modify the frame&lt;br /&gt;
			Default: true&lt;br /&gt;
			@note Presently, this does not do anything when gpu=false&lt;br /&gt;
		@default&lt;br /&gt;
			clip.VBlur( \&lt;br /&gt;
				x_blur = 4, \&lt;br /&gt;
				y_blur = 4, \&lt;br /&gt;
				x_edge = &amp;quot;clamp&amp;quot;, \&lt;br /&gt;
				y_edge = &amp;quot;clamp&amp;quot;, \&lt;br /&gt;
				x_color = #000000, \&lt;br /&gt;
				y_color = #000000, \&lt;br /&gt;
				x_interval = 1.0, \&lt;br /&gt;
				y_interval = 1.0, \&lt;br /&gt;
				x_function = &amp;quot;gaussian&amp;quot;, \&lt;br /&gt;
				y_function = &amp;quot;gaussian&amp;quot;, \&lt;br /&gt;
				x_polynomial_power = 1.0, \&lt;br /&gt;
				y_polynomial_power = 1.0, \&lt;br /&gt;
				x_polynomial_intercept = 1.0, \&lt;br /&gt;
				y_polynomial_intercept = 1.0, \&lt;br /&gt;
				gpu = true \&lt;br /&gt;
			)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===VCache===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
		clip.VCache(...)&lt;br /&gt;
		Cache video frames in memory, so they don't have to be re-decoded or re-filtered if they are&lt;br /&gt;
			used multiple times in a row&lt;br /&gt;
		This is particularly useful when using Reverse() on a video clip. Example:&lt;br /&gt;
			clip.VCache(cache_size=100, before=99).Reverse()&lt;br /&gt;
			runs much faster than:&lt;br /&gt;
			clip.Reverse()&lt;br /&gt;
			because it caches multiple successive frames.&lt;br /&gt;
		@param clip&lt;br /&gt;
			The clip to cache frames of&lt;br /&gt;
		@param cache_size&lt;br /&gt;
			The maximum cache size&lt;br /&gt;
			Minimum of 1&lt;br /&gt;
		@param before&lt;br /&gt;
			The number of frames to cache in front of the current_frame&lt;br /&gt;
			when the current_frame is NOT already cached&lt;br /&gt;
		@param after&lt;br /&gt;
			The number of frames to cache behind the current_frame&lt;br /&gt;
			when the current_frame is NOT already cached&lt;br /&gt;
		@param before_hit&lt;br /&gt;
			The number of frames to cache in front of the current_frame&lt;br /&gt;
			when the current_frame is already cached&lt;br /&gt;
		@param after_hit&lt;br /&gt;
			The number of frames to cache behind the current_frame&lt;br /&gt;
			when the current_frame is already cached&lt;br /&gt;
		@return&lt;br /&gt;
			A video clip that looks identical to the original, but potentially allows the script to run faster&lt;br /&gt;
		@default&lt;br /&gt;
			clip.VCache( \&lt;br /&gt;
				cache_size = 1 + max(before, before_hit) + max(after, after_hit), \&lt;br /&gt;
				before = 0, \&lt;br /&gt;
				after = 0, \&lt;br /&gt;
				before_hit = 0, \&lt;br /&gt;
				after_hit = 0 \&lt;br /&gt;
			)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===VChannel===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
		clip.VChannel(...)&lt;br /&gt;
		Extract a color channel from a video.&lt;br /&gt;
		This can be something such as the red (#ff0000), green (#00ff00), or blue (#0000ff) channel,&lt;br /&gt;
			or something more complex like an &amp;quot;orange&amp;quot; (#ff8000) channel&lt;br /&gt;
 		@param clip&lt;br /&gt;
			The clip to modify&lt;br /&gt;
		@param red&lt;br /&gt;
			The red component of the channel to extract&lt;br /&gt;
		@param green&lt;br /&gt;
			The green component of the channel to extract&lt;br /&gt;
		@param blue&lt;br /&gt;
			The blue component of the channel to extract&lt;br /&gt;
		@param hue&lt;br /&gt;
			The hue of the channel to extract&lt;br /&gt;
		@param saturation&lt;br /&gt;
			The saturation of the channel to extract&lt;br /&gt;
		@param value&lt;br /&gt;
			The value of the channel to extract&lt;br /&gt;
		@note&lt;br /&gt;
			If hue, saturation, or value is defined, any red/green/blue values are ignored&lt;br /&gt;
		@param color_full&lt;br /&gt;
			The color to use if the distance factor is minimum&lt;br /&gt;
			If set to -1, it assumes the value of the defined [red,green,blue] or [hue,saturation,value] color&lt;br /&gt;
		@param color_empty&lt;br /&gt;
			The color to use if the distance factor is maximum&lt;br /&gt;
			If set to -1, it assumes the value of the defined [red,green,blue] or [hue,saturation,value] color&lt;br /&gt;
		@param alpha_full&lt;br /&gt;
			The alpha to use if the distance factor is minimum&lt;br /&gt;
		@param alpha_empty&lt;br /&gt;
			The alpha to use if the distance factor is maximum&lt;br /&gt;
		@param normalize&lt;br /&gt;
			Normalize the distance factor to the range [0,1]&lt;br /&gt;
		@param maximize&lt;br /&gt;
			If true, the following equation is used to calculate the distance factor:&lt;br /&gt;
				max(0, red - (255 - pixel.red))&lt;br /&gt;
				... (similar for green and blue)&lt;br /&gt;
			If false:&lt;br /&gt;
				(red - max(0, red - pixel.red))&lt;br /&gt;
				... (similar for green and blue)&lt;br /&gt;
		@param per_component&lt;br /&gt;
			Apply on a per-component basis if true&lt;br /&gt;
		@return&lt;br /&gt;
			An extracted color channel video clip&lt;br /&gt;
		@default&lt;br /&gt;
			clip.VChannel( \&lt;br /&gt;
				red = 0, \&lt;br /&gt;
				green = 0, \&lt;br /&gt;
				blue = 0, \&lt;br /&gt;
				hue = 0, \&lt;br /&gt;
				saturation = 0, \&lt;br /&gt;
				value = 0, \&lt;br /&gt;
				color_full = -1, \&lt;br /&gt;
				color_empty = -1, \&lt;br /&gt;
				alpha_full = 255, \&lt;br /&gt;
				alpha_empty = 255, \&lt;br /&gt;
				normalize = true, \&lt;br /&gt;
				maximize = false, \&lt;br /&gt;
				per_component = false \&lt;br /&gt;
			)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===VCompare===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 		clip.VCompare(...)&lt;br /&gt;
		Perform a pixel-by-pixel difference of two videos, with lots of options&lt;br /&gt;
		@param clip&lt;br /&gt;
			The first clip to be compared&lt;br /&gt;
		@param to&lt;br /&gt;
			The second clip to be compared to&lt;br /&gt;
		@param diff_min&lt;br /&gt;
			Minimum difference required for a change to be shown&lt;br /&gt;
			Range: [0.0 - 255.0]&lt;br /&gt;
		@param diff_max&lt;br /&gt;
			Maximum value for the full change to be shown&lt;br /&gt;
			Range: [0.0 - 255.0]&lt;br /&gt;
		@param diff_alpha_min&lt;br /&gt;
			Minimum alpha for foreground&lt;br /&gt;
			Range: [0.0 - 1.0]&lt;br /&gt;
		@param diff_alpha_max&lt;br /&gt;
			Maximum alpha for foreground&lt;br /&gt;
			Range: [0.0 - 1.0]&lt;br /&gt;
		@param diff_normalize&lt;br /&gt;
			Normalize to be in the range of the maximum possible difference for a pixel&lt;br /&gt;
		@param bg_color&lt;br /&gt;
			The default background color&lt;br /&gt;
		@param bg_alpha&lt;br /&gt;
			The default background color (alpha component)&lt;br /&gt;
		@param bg_video1_alpha&lt;br /&gt;
			The alpha of the original clip1 (clip) color (background)&lt;br /&gt;
		@param bg_video2_alpha&lt;br /&gt;
			The alpha of the original clip2 (to) color (background)&lt;br /&gt;
		@param bg_method&lt;br /&gt;
			The comparison method for the background; available methods are:&lt;br /&gt;
				&amp;quot;add&amp;quot;&lt;br /&gt;
				&amp;quot;max&amp;quot;&lt;br /&gt;
				&amp;quot;min&amp;quot;&lt;br /&gt;
 				&amp;quot;mult&amp;quot;&lt;br /&gt;
				&amp;quot;mult_sqrt&amp;quot;&lt;br /&gt;
				&amp;quot;mult_sqrt_inv&amp;quot;&lt;br /&gt;
				&amp;quot;color&amp;quot;&lt;br /&gt;
		@param fg_color&lt;br /&gt;
			The default foreground color&lt;br /&gt;
		@param fg_alpha&lt;br /&gt;
			The default foreground color (alpha component)&lt;br /&gt;
		@param fg_video1_alpha&lt;br /&gt;
			The alpha of the original clip1 (clip) color (foreground)&lt;br /&gt;
		@param fg_video2_alpha&lt;br /&gt;
			The alpha of the original clip2 (to) color (foreground)&lt;br /&gt;
		@param fg_method&lt;br /&gt;
			The comparison method for the foreground; available methods are:&lt;br /&gt;
				&amp;quot;add&amp;quot;&lt;br /&gt;
				&amp;quot;max&amp;quot;&lt;br /&gt;
				&amp;quot;min&amp;quot;&lt;br /&gt;
				&amp;quot;mult&amp;quot;&lt;br /&gt;
				&amp;quot;mult_sqrt&amp;quot;&lt;br /&gt;
				&amp;quot;mult_sqrt_inv&amp;quot;&lt;br /&gt;
				&amp;quot;color&amp;quot;&lt;br /&gt;
		@param bg_cs_hue_min&lt;br /&gt;
			When bg_method==&amp;quot;color&amp;quot;:&lt;br /&gt;
			The minimum hue&lt;br /&gt;
			Range: [0.0 - 1.0]&lt;br /&gt;
		@param bg_cs_hue_max&lt;br /&gt;
			When bg_method==&amp;quot;color&amp;quot;:&lt;br /&gt;
			The maximum hue&lt;br /&gt;
		@param bg_cs_saturation_min&lt;br /&gt;
			When bg_method==&amp;quot;color&amp;quot;:&lt;br /&gt;
			The minimum saturation&lt;br /&gt;
		@param bg_cs_saturation_max&lt;br /&gt;
			When bg_method==&amp;quot;color&amp;quot;:&lt;br /&gt;
			The maximum saturation&lt;br /&gt;
		@param bg_cs_value_min&lt;br /&gt;
			When bg_method==&amp;quot;color&amp;quot;:&lt;br /&gt;
			The minimum value&lt;br /&gt;
		@param bg_cs_value_max&lt;br /&gt;
			When bg_method==&amp;quot;color&amp;quot;:&lt;br /&gt;
			The maximum value&lt;br /&gt;
		@param fg_cs_hue_min&lt;br /&gt;
			When fg_method==&amp;quot;color&amp;quot;:&lt;br /&gt;
			The minimum hue&lt;br /&gt;
			Range: [0.0 - 1.0]&lt;br /&gt;
		@param fg_cs_hue_max&lt;br /&gt;
			When fg_method==&amp;quot;color&amp;quot;:&lt;br /&gt;
			The maximum hue&lt;br /&gt;
		@param fg_cs_saturation_min&lt;br /&gt;
			When fg_method==&amp;quot;color&amp;quot;:&lt;br /&gt;
			The minimum saturation&lt;br /&gt;
		@param fg_cs_saturation_max&lt;br /&gt;
			When fg_method==&amp;quot;color&amp;quot;:&lt;br /&gt;
			The maximum saturation&lt;br /&gt;
		@param fg_cs_value_min&lt;br /&gt;
			When fg_method==&amp;quot;color&amp;quot;:&lt;br /&gt;
			The minimum value&lt;br /&gt;
		@param fg_cs_value_max&lt;br /&gt;
			When fg_method==&amp;quot;color&amp;quot;:&lt;br /&gt;
			The maximum value&lt;br /&gt;
		@param fluctuations&lt;br /&gt;
			A list of fluctuations to apply to parameters over time&lt;br /&gt;
			@todo : Document this more&lt;br /&gt;
		@param gpu&lt;br /&gt;
			Use the gpu to render&lt;br /&gt;
		@note&lt;br /&gt;
			When using gpu=false, a small amount of functionality is not available compared to using gpu=true&lt;br /&gt;
		@default:&lt;br /&gt;
			video1.VCompare( \&lt;br /&gt;
				to = video2, \&lt;br /&gt;
				diff_min = 0.0, \&lt;br /&gt;
				diff_max = 128.0, \&lt;br /&gt;
				diff_alpha_min = 0.0, \&lt;br /&gt;
				diff_alpha_max = 1.0, \&lt;br /&gt;
				diff_normalize = -1, \&lt;br /&gt;
				\&lt;br /&gt;
				bg_color = $000000, \&lt;br /&gt;
				bg_alpha = 1.0, \&lt;br /&gt;
				bg_video1_alpha = 0.0, \&lt;br /&gt;
				bg_video2_alpha = 0.0, \&lt;br /&gt;
				bg_method = &amp;quot;add&amp;quot;, \&lt;br /&gt;
				\&lt;br /&gt;
				fg_color = $ffffff, \&lt;br /&gt;
				fg_alpha = 0.0, \&lt;br /&gt;
				fg_video1_alpha = 1.0, \&lt;br /&gt;
				fg_video2_alpha = 0.0, \&lt;br /&gt;
				fg_method = &amp;quot;add&amp;quot;, \&lt;br /&gt;
				\&lt;br /&gt;
				bg_cs_hue_min = 0.0, \&lt;br /&gt;
				bg_cs_hue_max = 1.0, \&lt;br /&gt;
				bg_cs_saturation_min = 1.0, \&lt;br /&gt;
				bg_cs_saturation_max = 1.0, \&lt;br /&gt;
				bg_cs_value_min = 1.0, \&lt;br /&gt;
				bg_cs_value_max = 1.0, \&lt;br /&gt;
				\&lt;br /&gt;
				fg_cs_hue_min = 0.0, \&lt;br /&gt;
				fg_cs_hue_max = 1.0, \&lt;br /&gt;
				fg_cs_saturation_min = 1.0, \&lt;br /&gt;
				fg_cs_saturation_max = 1.0, \&lt;br /&gt;
				fg_cs_value_min = 1.0, \&lt;br /&gt;
				fg_cs_value_max = 1.0, \&lt;br /&gt;
				\&lt;br /&gt;
				fluctuations = &amp;quot;&amp;quot;, \&lt;br /&gt;
				\&lt;br /&gt;
				 gpu = true \&lt;br /&gt;
			)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===VGetPixel===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
		clip.VGetPixel(...)&lt;br /&gt;
		Get the color of a pixel of a video frame at a certain position&lt;br /&gt;
		@param clip&lt;br /&gt;
			The clip to sample&lt;br /&gt;
		@param frame&lt;br /&gt;
			The frame of the clip&lt;br /&gt;
		@param x&lt;br /&gt;
			The x coordinate&lt;br /&gt;
		@param y&lt;br /&gt;
			The y coordinate&lt;br /&gt;
		@param alpha&lt;br /&gt;
			True if alpha should be included&lt;br /&gt;
			If there is no alpha channel, 255 is used as the alpha&lt;br /&gt;
		@return&lt;br /&gt;
			A hex value of the pixels color'&lt;br /&gt;
			#[AA]RRGGBB&lt;br /&gt;
		@default&lt;br /&gt;
			clip.VGetPixel( \&lt;br /&gt;
				frame = 0, \&lt;br /&gt;
				x = 0, \&lt;br /&gt;
				y = 0, \&lt;br /&gt;
				alpha = false \&lt;br /&gt;
			)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===VMostCommon===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
		clip.VMostCommon(...)&lt;br /&gt;
		Get the most common color inside blocks of a video.&lt;br /&gt;
		@param clip&lt;br /&gt;
			The clip to resize&lt;br /&gt;
		@param w_blocks&lt;br /&gt;
			How many horizontal blocks&lt;br /&gt;
			Range: [1, clip.width]&lt;br /&gt;
		@param h_blocks&lt;br /&gt;
			How many vertical blocks&lt;br /&gt;
			Range: [1, clip.width]&lt;br /&gt;
		@param range&lt;br /&gt;
			The RGB range a pixel can be for it to count for a nearby color&lt;br /&gt;
			Range: [0,255]&lt;br /&gt;
			The larger the value, the longer this takes&lt;br /&gt;
		@param small&lt;br /&gt;
			Instead of using blocks that fill the size of the original, block(s) are 1x1 pixel&lt;br /&gt;
		@return&lt;br /&gt;
			The clip with the entire clip (or blocks of it) composed of a single color&lt;br /&gt;
			If small=true, the size of the resulting clip = ( w_blocks , h_blocks )&lt;br /&gt;
		@default&lt;br /&gt;
			clip.VMostCommon( \&lt;br /&gt;
				w_blocks = 1, \&lt;br /&gt;
				h_blocks = 1, \&lt;br /&gt;
				range = 0, \&lt;br /&gt;
				small = false \&lt;br /&gt;
			)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===VNoClear===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 		clip.VNoClear(...)&lt;br /&gt;
		Render a RGB32 video, simulating no background clearing.&lt;br /&gt;
		(ie: transparent sections will show the previous frame)&lt;br /&gt;
 		@param clip&lt;br /&gt;
			The clip to resize&lt;br /&gt;
		@param color_initial&lt;br /&gt;
			The initial background color&lt;br /&gt;
			Default: $00000000 (RGBA=0,0,0,0)&lt;br /&gt;
		@param color_refresh&lt;br /&gt;
			The color overlayed on the previous frame before overlaying the new frame&lt;br /&gt;
			Default: $00000000 (RGBA=0,0,0,0)&lt;br /&gt;
		@param color_refresh_factor&lt;br /&gt;
			The factor at which the colors should be merged&lt;br /&gt;
			Range: [0, 1]&lt;br /&gt;
				let: color_refresh_factor=CRF, color_refresh=CR; ranges of everything normalized to [0, 1]&lt;br /&gt;
				final_R = (pre_R * (1-CRF) + CR_R * CRF) * (1.0 - new_A) + new_R * new_A // same for G,B,A&lt;br /&gt;
		@param clear_on_skip&lt;br /&gt;
			True: if a seek occured, the background should be cleared to color_initial&lt;br /&gt;
			False: ignore seeks&lt;br /&gt;
			A seek in this case means a non-sequential frame access; ie frame 3 to frame 5&lt;br /&gt;
		@return&lt;br /&gt;
			The clip with simulated no background clearing&lt;br /&gt;
		@default&lt;br /&gt;
			clip.VNoClear( \&lt;br /&gt;
				color_initial = $00000000, \&lt;br /&gt;
				color_refresh = $00000000, \&lt;br /&gt;
				color_refresh_factor = 0.0, \&lt;br /&gt;
				clear_on_skip = false \&lt;br /&gt;
			)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===VNoise===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
		clip.VNoise(...)&lt;br /&gt;
		Add black and white noise to a video clip.&lt;br /&gt;
		@param clip&lt;br /&gt;
			The clip to add noise to&lt;br /&gt;
		 @param strength_min&lt;br /&gt;
			The minimum strength to apply the noise&lt;br /&gt;
			Range: [0,255]&lt;br /&gt;
 		@param strength_max&lt;br /&gt;
			The maximum strength to apply the noise&lt;br /&gt;
			Range: [0,255]&lt;br /&gt;
		@param shade_min&lt;br /&gt;
			The minimum shade (0=black)&lt;br /&gt;
			Range: [0,255]&lt;br /&gt;
		@param shade_max&lt;br /&gt;
			The maximum shade (255=white)&lt;br /&gt;
			Range: [0,255]&lt;br /&gt;
		@param seed&lt;br /&gt;
			The random number generator seed&lt;br /&gt;
			If less than 0, it's always seeded with the time&lt;br /&gt;
		@return&lt;br /&gt;
			The video clip with black and white noise added&lt;br /&gt;
		@default&lt;br /&gt;
			clip.VNoise( \&lt;br /&gt;
				strength_min = 0, \&lt;br /&gt;
				strenght_max = 40, \&lt;br /&gt;
				shade_min = 0, \&lt;br /&gt;
				shade_max = 255, \&lt;br /&gt;
				seed = 0 \&lt;br /&gt;
			)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===VSimilar===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
		clip.VSimilar(...)&lt;br /&gt;
		Replace similar colors with the same color across frames&lt;br /&gt;
		@param clip&lt;br /&gt;
			The clip to modify&lt;br /&gt;
		@param group&lt;br /&gt;
			Group all components of a pixel together.&lt;br /&gt;
			i.e. if one changes, they all change.&lt;br /&gt;
		@param threshold_red&lt;br /&gt;
			The threshold range for pixels to be considered different (red component)&lt;br /&gt;
			i.e. if the difference in components is greater than or equal to this value, it will be classified as &amp;quot;different&amp;quot;&lt;br /&gt;
			Range: [0, 255]&lt;br /&gt;
		@param threshold_green&lt;br /&gt;
			The threshold range for pixels to be considered different (green component)&lt;br /&gt;
			Range: [0, 255]&lt;br /&gt;
		@param threshold_blue&lt;br /&gt;
			The threshold range for pixels to be considered different (green component)&lt;br /&gt;
			Range: [0, 255]&lt;br /&gt;
		@param normalize_red&lt;br /&gt;
			True if the threshold ranges should be normalized to the maximum possible range (red component)&lt;br /&gt;
		@param normalize_green&lt;br /&gt;
			True if the threshold ranges should be normalized to the maximum possible range (green component)&lt;br /&gt;
		@param normalize_blue&lt;br /&gt;
			True if the threshold ranges should be normalized to the maximum possible range (blue component)&lt;br /&gt;
		@param normalize_alpha&lt;br /&gt;
			True if the threshold ranges should be normalized to the maximum possible range (alpha component)&lt;br /&gt;
		@param ignore_red&lt;br /&gt;
			False if the red component should keep its original value no matter what&lt;br /&gt;
		@param ignore_blue&lt;br /&gt;
			False if the blue component should keep its original value no matter what&lt;br /&gt;
		@param ignore_green&lt;br /&gt;
			False if the green component should keep its original value no matter what&lt;br /&gt;
		@param ignore_alpha&lt;br /&gt;
			False if the alpha component should keep its original value no matter what&lt;br /&gt;
		@return&lt;br /&gt;
			The same clip, with colors similar colors across frames changed to be the same color&lt;br /&gt;
		@default&lt;br /&gt;
			clip.VSimilar( \&lt;br /&gt;
				group = true, \&lt;br /&gt;
				threshold_red = 1, \&lt;br /&gt;
				threshold_green = 1, \&lt;br /&gt;
				threshold_blue = 1, \&lt;br /&gt;
				threshold_alpha = 1, \&lt;br /&gt;
				normalize_red = false, \&lt;br /&gt;
				normalize_green = false, \&lt;br /&gt;
				normalize_blue = false, \&lt;br /&gt;
				normalize_alpha = false, \&lt;br /&gt;
				ignore_red = false, \&lt;br /&gt;
				ignore_green = false, \&lt;br /&gt;
				ignore_blue = false, \&lt;br /&gt;
				ignore_alpha = false \&lt;br /&gt;
			)&lt;br /&gt;
&amp;lt;/pre&amp;gt;			&lt;br /&gt;
===VSlideFPS===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
		clip.VSlideFPS(...)&lt;br /&gt;
		        Slide the framerate from one value to another across a clip&lt;br /&gt;
		@param clip&lt;br /&gt;
	 		The clip to add noise to&lt;br /&gt;
 		@param framerate_numerator&lt;br /&gt;
			The target framerate numerator&lt;br /&gt;
		@param framerate_denominator&lt;br /&gt;
			The target framerate denominator&lt;br /&gt;
		@param framerate_numerator_initial&lt;br /&gt;
			The initial framerate numerator&lt;br /&gt;
		@param framerate_denominator_initial&lt;br /&gt;
			The initial framerate denominator&lt;br /&gt;
		@param framerate_numerator_final&lt;br /&gt;
			The final framerate numerator used in the output&lt;br /&gt;
		@param framerate_denominator_final&lt;br /&gt;
			The final framerate denominator used in the output&lt;br /&gt;
		@param audiorate&lt;br /&gt;
			The target audiorate&lt;br /&gt;
		@param audiorate_initial&lt;br /&gt;
			The initial audiorate&lt;br /&gt;
		@param audiorate_final&lt;br /&gt;
			The final audiorate used in the output&lt;br /&gt;
		@default&lt;br /&gt;
 			clip.VSlideFPS( \&lt;br /&gt;
				framerate_numerator = -1, \&lt;br /&gt;
				framerate_denominator = -1, \&lt;br /&gt;
				framerate_numerator_initial = -1, \&lt;br /&gt;
				framerate_denominator_initial = -1, \&lt;br /&gt;
				framerate_numerator_final = -1, \&lt;br /&gt;
				framerate_denominator_final = -1, \&lt;br /&gt;
				audiorate = -1, \&lt;br /&gt;
				audiorate_initial = -1, \&lt;br /&gt;
				audiorate_final = -1 \&lt;br /&gt;
			)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===VSubtitle===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
		clip.VSubtitle(...)&lt;br /&gt;
		Identical to Subtitle with the exception that it is formatted using&lt;br /&gt;
		snprintf(new_text, max(format_space, old_text.length), old_text, frame_number)&lt;br /&gt;
		if any % characters are located in the text. Otherwise it's the same&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples == &lt;br /&gt;
'''TODO'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
 Version      Date            Changes&amp;lt;br&amp;gt;&lt;br /&gt;
 20150117     2015/01/17      - Added a VNoClear filter&lt;br /&gt;
 20140911     2014/09/11      - Inital release. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Archived Downloads ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;; width=&amp;quot;500px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!!width=&amp;quot;100px&amp;quot;| Version&lt;br /&gt;
!!width=&amp;quot;200px&amp;quot;| Download&lt;br /&gt;
!!width=&amp;quot;200px&amp;quot;| Mirror&lt;br /&gt;
|-&lt;br /&gt;
!20150117&lt;br /&gt;
|[https://web.archive.org/web/20200702190717if_/https://files.videohelp.com/u/223002/avextensions_20150117.zip avextensions_20150117.zip]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
*Includes binaries and source code&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== External Links ==&lt;br /&gt;
*[https://github.com/nutbread/ave GitHub] - Source code repository&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-----------------------------------------------&lt;br /&gt;
'''Back to [[External_filters#Multipurpose_Filters|External Filters]] &amp;amp;larr;'''&lt;/div&gt;</summary>
		<author><name>Reel.Deal</name></author>	</entry>

	</feed>