<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://www.avisynth.nl/index.php?action=history&amp;feed=atom&amp;title=Shared_functions%2FAdvancedMultiTrim</id>
	<title>Shared functions/AdvancedMultiTrim - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://www.avisynth.nl/index.php?action=history&amp;feed=atom&amp;title=Shared_functions%2FAdvancedMultiTrim"/>
	<link rel="alternate" type="text/html" href="http://www.avisynth.nl/index.php?title=Shared_functions/AdvancedMultiTrim&amp;action=history"/>
	<updated>2026-08-04T22:01:22Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>http://www.avisynth.nl/index.php?title=Shared_functions/AdvancedMultiTrim&amp;diff=1296&amp;oldid=prev</id>
		<title>Admin: 1 revision</title>
		<link rel="alternate" type="text/html" href="http://www.avisynth.nl/index.php?title=Shared_functions/AdvancedMultiTrim&amp;diff=1296&amp;oldid=prev"/>
		<updated>2013-05-19T22:03:19Z</updated>

		<summary type="html">&lt;p&gt;1 revision&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 00:03, 20 May 2013&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://www.avisynth.nl/index.php?title=Shared_functions/AdvancedMultiTrim&amp;diff=1295&amp;oldid=prev</id>
		<title>93.97.112.48: advanced multi trim</title>
		<link rel="alternate" type="text/html" href="http://www.avisynth.nl/index.php?title=Shared_functions/AdvancedMultiTrim&amp;diff=1295&amp;oldid=prev"/>
		<updated>2010-01-25T10:32:53Z</updated>

		<summary type="html">&lt;p&gt;advanced multi trim&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
* ADVANCED MULTI TRIM&lt;br /&gt;
*&lt;br /&gt;
* syntax:&lt;br /&gt;
*     clip.advancedmultitrim(&amp;quot;frame1,frame2,...&amp;quot;)&lt;br /&gt;
* or&lt;br /&gt;
*     advancedmultitrim(clip,&amp;quot;frame1,frame2,...&amp;quot;)&lt;br /&gt;
* you can use as many frames as you like but the number of frames in the list must be even as they are processed in pairs&lt;br /&gt;
*&lt;br /&gt;
* clip.advancedmultitrim(&amp;quot;0,100,200,300&amp;quot;)&lt;br /&gt;
* will return frames 0 to 100 and 200 to 300&lt;br /&gt;
*&lt;br /&gt;
* the &amp;#039;+&amp;#039; flag can be used on any second frame, if present the multitrim function reads that frame number as being a forward offset from the previous frame number in the list&lt;br /&gt;
* clip.advancedmultitrim(&amp;quot;250,+100&amp;quot;)&lt;br /&gt;
* will return frames 250 to 350&lt;br /&gt;
*&lt;br /&gt;
* the &amp;#039;-&amp;#039; flag can be used of any frame number, if present it reads that frame number as being an offset from the end of the clip&lt;br /&gt;
* clip.advancedmultitrim(&amp;quot;250,-100&amp;quot;)&lt;br /&gt;
* will return frames 250 to (clip.framecount-100)&lt;br /&gt;
*&lt;br /&gt;
* clip.advancedmultitrim(&amp;quot;-1000,-500&amp;quot;)&lt;br /&gt;
* will return frames (clip.framecount-1000) to (clip.framecount-500)&lt;br /&gt;
*&lt;br /&gt;
* clip.advancedmultitrim(&amp;quot;-1000,+200&amp;quot;)&lt;br /&gt;
* will return frames (clip.framecount-1000) to ((clip.framecount-1000)+200)&lt;br /&gt;
*&lt;br /&gt;
* the &amp;#039;~&amp;#039; flag can be used on any second frame, it functions similarly to the &amp;#039;+&amp;#039; flag but offsets backwards rather than forward and will return a reversed portion of the clip&lt;br /&gt;
* clip.advancedmultitrim(&amp;quot;1000,~200&amp;quot;)&lt;br /&gt;
* will return frames 800 to 1000 in reverse&lt;br /&gt;
*&lt;br /&gt;
* Todo:&lt;br /&gt;
* this really needs cleaning up and optimizing, i suck at avisynth so if anyone is bored, let loose&lt;br /&gt;
*&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
global _advancedmultitrim = false&lt;br /&gt;
function AdvancedMultiTrim(input,string frames) {&lt;br /&gt;
	tstring = frames /*string of frames, must have an even amount*/&lt;br /&gt;
	toffset = FindStr(tstring,&amp;quot;,&amp;quot;) /*offset of the first &amp;#039;,&amp;#039; character*/&lt;br /&gt;
&lt;br /&gt;
	trimstart = LeftStr(tstring,toffset-1) /*get the first frame number*/&lt;br /&gt;
	flag = LeftStr(trimstart,1) /*get the first character*/&lt;br /&gt;
	trimstart = (flag==&amp;quot;-&amp;quot;||flag==&amp;quot;+&amp;quot;||flag==&amp;quot;~&amp;quot;) ? RightStr(trimstart,StrLen(trimstart)-1): trimstart /* if a flag is present, remove it from the frame string */&lt;br /&gt;
	trimstart = StrToInt(trimstart) /*convert to integer*/&lt;br /&gt;
	trimstart = flag==&amp;quot;-&amp;quot; ? (input.framecount-trimstart) : trimstart /* process frame for &amp;#039;-&amp;#039; flag */&lt;br /&gt;
&lt;br /&gt;
	tstring = RightStr(tstring,StrLen(tstring)-toffset) /*remove the first frame and seperator (return everything right of the first &amp;#039;,&amp;#039;)*/&lt;br /&gt;
	toffset = FindStr(tstring,&amp;quot;,&amp;quot;) /*offset of the first &amp;#039;,&amp;#039; character*/&lt;br /&gt;
&lt;br /&gt;
	trimend = toffset==0 ? tstring : LeftStr(tstring,toffset-1) /*find the second frame number*/&lt;br /&gt;
	flag = LeftStr(trimend,1) /*get the first character*/&lt;br /&gt;
	trimend = (flag==&amp;quot;-&amp;quot;||flag==&amp;quot;+&amp;quot;||flag==&amp;quot;~&amp;quot;) ? RightStr(trimend,StrLen(trimend)-1) : trimend /* if a flag is present, remove it from the frame string */&lt;br /&gt;
	trimend = StrToInt(trimend) /*convert to integer*/&lt;br /&gt;
	trimend = flag==&amp;quot;-&amp;quot; ? (input.framecount-trimend) : trimend /* process frame for &amp;#039;-&amp;#039; flag */&lt;br /&gt;
	trimend = flag==&amp;quot;+&amp;quot; ? (trimstart+trimend) : trimend /* process frame for &amp;#039;+&amp;#039; flag */&lt;br /&gt;
	trimend = flag==&amp;quot;~&amp;quot; ? (trimstart-trimend) : trimend /* process frame for &amp;#039;~&amp;#039; flag */&lt;br /&gt;
&lt;br /&gt;
	tstring = toffset==0 ? &amp;quot;&amp;quot; : RightStr(tstring,StrLen(tstring)-toffset)&lt;br /&gt;
&lt;br /&gt;
	segment = flag==&amp;quot;~&amp;quot; ? input.trim(trimend,trimstart).reverse() : input.trim(trimstart,trimend) /* find segment to trim, process reversing for &amp;#039;~&amp;#039; flag here */&lt;br /&gt;
&lt;br /&gt;
	global _advancedmultitrim = IsClip(_advancedmultitrim) ? _advancedmultitrim++segment : segment&lt;br /&gt;
&lt;br /&gt;
	return toffset==0 ? _advancedmultitrim : AdvancedMultiTrim(input,tstring)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function StrToInt(string n){&lt;br /&gt;
	return isint(eval(n)) ? int(eval(n)) : 0&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Back to [[Shared functions]].&lt;br /&gt;
[[Category:Shared functions]]&lt;/div&gt;</summary>
		<author><name>93.97.112.48</name></author>
	</entry>
</feed>