Log in

View Full Version : Too many trim functions? Avisynth Exception with memory access violation


DoW
17th October 2003, 11:31
I have been banging my head against a problem that I have been having for about 2 weeks now. As far as I can tell, there is in the very least a practical limit to the number of trim functions that can be called in a script before Avisynth throws an exception due to memory access violations. The script that Im using that is causing this is: SetMemoryMax(384)

LoadPlugin("D:/Filters/mpeg2dec3.dll")
LoadPlugin("D:/Filters/decomb500.dll")
LoadPlugin("D:/Filters/awarpsharp.dll")
LoadPlugin("D:/Filters/vaguedenoiser.dll")
LoadPlugin("D:/Filters/dctfilter.dll")
LoadPlugin("D:/Filters/vsfilter.dll")
LoadPlugin("D:/Filters/LoadPluginEx.dll")
LoadPlugin("D:/Filters/convolution3d.dll")
LoadPlugin("D:/Filters/dustv5.dll")

function min(val a, val b) { return (a < b) ? a : b }
function max(val a, val b) { return (a > b) ? a : b }
function NullClip(clip "template") { return BlankClip(template, length=0) }

function JDL_ApplyRange(clip c, int start, int end, string thunk)
{
#stickboy is the man, thanks for writing the JDL functions and trims.
assert(start >= 0 && start < c.FrameCount(), "JDL_ApplyRange: start frame out of
bounds")
assert(end >= start && end < c.FrameCount(), "JDL_ApplyRange: invalid end frame")

seg1 = c.Trim2(0, start)
seg2 = c.Trim3(start, end + 1)
seg3 = c.Trim2(end + 1)

return seg1 + Eval("seg2." + thunk) + seg3
}

function JDL_ApplyFrame(clip c, int frame, string thunk)
{
return JDL_ApplyRange(c, frame, frame, thunk)
}

function Trim2(clip c, int start, int "end", int "length")
{
assert(!(defined(end) && defined(length)),
\ "Trim2: end and length parameters cannot be used together")
assert(!defined(length) || length >= 0,
\ "Trim2: invalid length: " + String(length))

end = defined(end)
\ ? ((end < 0) ? (c.FrameCount() + end) : end)
\ : max(start, c.FrameCount())
end = defined(length) ? (start + length) : end

assert(start >= 0, "Trim2: start frame out of bounds: " + String(start))
assert(end >= start, "Trim2: end frame out of bounds: " + String(end))

start = min(start, c.FrameCount())
end = min(end, c.FrameCount())

# we can't use Trim(start, end - 1) in case end == 1
return (start == end)
\ ? c.NullClip()
\ : c.Trim(start, -(end - start))
}

function Trim3(clip c, int start, int "end", int "length")
{
assert(!(defined(end) && defined(length)),
\ "Trim3: end and length parameters cannot be used together")
assert(!defined(length) || length > 0,
\ "Trim3: invalid length: " + String(length))

end = defined(length) ? (start + length) : default(end, c.FrameCount())
end = (end < 0) ? (c.FrameCount() + end) : end

assert(start >= 0 && start < c.FrameCount(),
\ "Trim3: start frame out of bounds: " + String(start))
assert(end > start && end <= c.FrameCount(),
\ "Trim3: end frame out of bounds:" + String(end))

return c.Trim2(start, end)
}

function TempApply(clip c, int narf)
{
#fools ApplyRange into not being a pain
return c.TemporalSoften(3,3,8,mode=2)
}

Mpeg2Source("D:/Love Hina DVD1/Ep 1/Love Hina Ep 1.d2v")

Telecide(order=1, post=2, back=2, nt=20, blend=true, chroma=true,
ovr="D:/Love Hina DVD1/Ep 1/override.tel")
Good1=Trim(0,10912)
Replace1=Trim(10901,10901)
Replace3=Trim(10901,10903)
Good2=Trim(10920,26918)
Replace4=Trim(26915,26918)
Good3=Trim(26927,38928)
last=Good1 + Replace3 + Replace3 + Replace1 + Good2 + Replace4 + Replace4 + Good3
Decimate(cycle=5, mode=2, quality=3)

#VagueDenoiser(threshold=1.5,method=1,nsteps=6,chroma=true)

aWarpsharp(depth=10, blurlevel=1)

Crop(6, 0, -6, 0)
BicubicResize(640,480)

ApplyRange(0, 2154, "DctFilter", 1, 1, 1, 1, .888, .777, .666, .555)
ApplyRange(29799, 31000, "DctFilter", 1, 1, 1, 1, .888, .777, .666, .555)

ConvertToYUY2()

Convolution3d(preset="animeHQ")
JDL_Applyrange(0, 566, "PixieDust(6)")
Applyrange(567, 576, "TempApply", 6)
JDL_Applyrange(577, 1057, "PixieDust(6)")
Applyrange(1058, 1431, "TempApply", 6)
JDL_Applyrange(1432, 2154, "PixieDust(6)")
Applyrange(2155, 3315, "TempApply", 6)
JDL_Applyrange(3316, 4812, "PixieDust(6)")
Applyrange(4813, 4847, "TempApply", 6)
JDL_Applyrange(4848, 5738, "PixieDust(6)")
Applyrange(5739, 5978, "TempApply", 6)
JDL_Applyrange(5979, 8289, "PixieDust(6)")
Applyrange(8290, 8594, "TempApply", 6)
JDL_Applyrange(8595, 11933, "PixieDust(6)")
Applyrange(11934, 12103, "TempApply", 6)
JDL_Applyrange(12104, 21018, "PixieDust(6)")
Applyrange(21019, 21291, "TempApply", 6)
JDL_Applyrange(21292, 23379, "PixieDust(6)")
Applyrange(23380, 23542, "TempApply", 6)
JDL_Applyrange(23543, 23602, "PixieDust(6)")
Applyrange(23603, 23677, "TempApply", 6)
JDL_Applyrange(23677, 25361, "PixieDust(6)")
Applyrange(25362, 25596, "TempApply", 6)
JDL_Applyrange(25597, 26929, "PixieDust(6)")
Applyrange(26930, 26948, "TempApply", 6)
JDL_Applyrange(26949, 28469, "PixieDust(6)")
Applyrange(28470, 29135, "TempApply", 6)
JDL_Applyrange(29136, 29263, "PixieDust(6)")
Applyrange(29264, 29646, "TempApply", 6)
JDL_Applyrange(29647, 29775, "PixieDust(6)")
Applyrange(29776, 29809, "TempApply", 6)
JDL_Applyrange(29810, 30164, "PixieDust(6)")
Applyrange(30165, 30187, "TempApply", 6)
JDL_Applyrange(30188, 30579, "PixieDust(6)")
Applyrange(30580, 30602, "TempApply", 6)
JDL_Applyrange(30603, 30974, "PixieDust(6)")
Applyrange(30975, 30996, "TempApply", 6)

ConvertToYV12()

Please note that the error occurs only when Virtual dub (it mearly reports the Avisynth error) is dubbing. When seeking though the video, it does not occur. Origenally I was using all JDL_Applyranges, but that would make the error occur at the ~25000 frame mark. This new script makes it occur at the 30976 or so mark.

Im really at my wits end, and could use some assitance from a much smarter higher power (hint hint Sh0dan).

WarpEnterprises
17th October 2003, 13:26
AFAIK you open a NEW INSTANCE of PixieDust and TemporalSoften with each ApplyXXX (the arguments of the filter could be different, but you don't use that anyway)

Appearently you simply want to filter parts of your clip with PixieDust and the other with TemporalSoften.
Why don't you simply use (sketched only, I hope you see what I mean)

mpeg2source
Telecide
...
Decimate
aWarpsharp

filtered1=DctFilter.PixieDust #filter chain 1
filtered2=DctFilter.TemporalSoften #filter chain 2

trim(filtered1,0,100) + trim(filtered2,101,1000) + ...

DoW
17th October 2003, 13:55
Very interesting. I didnt even think of that possiblity. Ill try it when I get some time. Thanx. You learn something new every day.
Still, I suppose it is possible (not in my case mind you) that you could still hit the trim limit, and the same problem would arise. Edit:If it truly is a trim problem

Bidoche
17th October 2003, 17:35
There is no such thing as a Trim limit, it can't be, it's not scalable.
Splice may have a limit (in number of arguments) : MAX_INT aka 2^9...
I think you can keep relying on it for a couple of times. ;)

Boulder
17th October 2003, 23:16
I've had similar problems as DoW lately since I've had to divide a 25-minute VHS capture into multiple portions and treat every portion separately. Thanks for the tip, WarpEnterprises:)

vinujan
16th February 2008, 23:49
I have tried stickyboy's solution :http://forum.doom9.org/showpost.php?p=934915&postcount=4

And have commented out in the script below, because i get an error:

Error message for your reference: Evaluate: System exception - Access Violation

I tried WarpEnterprise's solution which is visible below @ script, and i get the same error.

So is there a limit to the # of trim functions that can be used?


DGDecode_mpeg2source("C:\VIDEO\VTS_02_1.d2v",cpu=2)

crop( 2, 60, -4, -58)
Lanczos4Resize(672,288)

colormatrix()
Import("C:\Program Files\AviSynth 2.5\plugins\yvlevels.avs")

#c1=trim(0,2408) #Opening Credits

a2=fft3dfilter(sigma=3.5).YlevelS(0,1.485,255,0,255).Tweak(sat=1.18,cont=0.9)
#c2=a2.trim(2409,2903) #Road : Denoising

a3=fft3dfilter(sigma=4.0).YlevelS(0,1.185,255,0,255).Tweak(sat=1.18,cont=0.9)
#c3=a3.trim(2904,3151) #Driving : STRONG Denoising

a4=fft3dfilter(sigma=2.5).YlevelS(0,1.285,255,0,255).Tweak(sat=1.04,cont=0.9)
#c4=a4.trim(3152,4000)

a5=fft3dfilter(sigma=3.5).YlevelS(0,1.285,255,0,255).Tweak(sat=1.04,cont=0.9)
#c5=a5.trim(4001,4955) #Face

a6=fft3dfilter(sigma=5.5).YlevelS(0,1.385,255,0,255).Tweak(sat=1.34,cont=0.9)
#c6=a6.trim(4956,5171) #Driving : STRONGDenoising

a7=fft3dfilter(sigma=2.7).YlevelS(0,1.235,255,0,255).Tweak(sat=1.07, cont=0.9)
#c7=a7.trim(5172,5612)

a8=fft3dfilter(sigma=2.5).YlevelS(0,1.435,255,0,255).Tweak(sat=1.07, cont=0.9)
#c8=a8.trim(5613,6086)

a9=fft3dfilter(sigma=4.5).YlevelS(0,1.435,255,0,255).Tweak(sat=1.04, cont=0.9)
#c9=a9.trim(6087,6349) #Gets Shot

a10=fft3dfilter(sigma=2.8).YlevelS(0,1.235,255,0,255).Tweak(sat=1.14, cont=0.9)
#c10=a10.trim(6350,6964) #inba still

a11=fft3dfilter(sigma=1.8).YlevelS(0,1.335,255,0,255).Tweak(sat=1.14, cont=0.9)
#c11=a11.trim(6965,9198) #mud fight

a12=fft3dfilter(sigma=1.3).YlevelS(0,1.335,255,0,255).Tweak(sat=1.07, cont=0.9)
#c12=a12.trim(9199,17947)

a13=fft3dfilter(sigma=1.3).YlevelS(0,1.275,255,0,255).Tweak(sat=.90, cont=0.9)
#c13=a13.trim(17948,22678)

a14=fft3dfilter(sigma=1.3).YlevelS(0,1.375,255,0,255).Tweak(sat=1.2, cont=0.95)
#c14=a14.trim(22679,29463) #MAYILARAGE

a15=fft3dfilter(sigma=1.3).YlevelS(0,1.345,255,0,255).Tweak(sat=1.0, cont=0.95)
#c15=a15.trim(29464,38383) #opening speech

a16=YlevelS(0,1.225,255,0,255).Tweak(sat=.9, cont=0.95)
#c16=a16.trim(38384,43971) #Dol Dol

a17=fft3dfilter(sigma=1.87).YlevelS(0,1.225,255,0,255).Tweak(sat=1.1, cont=0.90)
#c17=a17.trim(43972,45834) #RECHECK

a18=YlevelS(0,1.225,255,0,255).Tweak(sat=.9, cont=0.90)
#c18=a18.trim(45835,52744)

a19=fft3dfilter(sigma=2.5).YlevelS(0,1.300,255,0,255).Tweak(sat=1.1, cont=0.90)
#c19=a19.trim(52745,53757)

a20=fft3dfilter(sigma=1).YlevelS(0,1.320,255,0,255).Tweak(sat=1.06, cont=0.90)
#c20=a20.trim(53758,54903)

a21=fft3dfilter(sigma=3.0).YlevelS(0,1.250,255,0,255).Tweak(sat=1.06, cont=0.9)
#c21=a21.trim(54904,54953) #SHORT RIDE

a22=fft3dfilter(sigma=1).YlevelS(0,1.320,255,0,255).Tweak(sat=1.06, cont=0.90)
#c22=a22.trim(54954,55052)

a23=fft3dfilter(sigma=3.5).YlevelS(0,1.250,255,0,255).Tweak(sat=.94, cont=0.90)
#c23=a23.trim(55053,55094)

a24=fft3dfilter(sigma=1).YlevelS(0,1.320,255,0,255).Tweak(sat=1.06, cont=0.90)
#c24=a24.trim(55095,55160) #SHORT RIDE

a25=fft3dfilter(sigma=3.0).YlevelS(0,1.250,255,0,255).Tweak(sat=.94, cont=0.90)
#c25=a25.trim(55161,55684)

a26=fft3dfilter(sigma=1.8).YlevelS(0,1.390,255,0,255).Tweak(sat=1.05, cont=0.90)
#c26=a26.trim(55685,57168) #MICHEAL INTRO

a27=fft3dfilter(sigma=5).YlevelS(0,1.390,255,0,255).Tweak(sat=1.05, cont=0.90)
#c27=a27.trim(57169,59015) #FIGHT

a28=fft3dfilter(sigma=3).YlevelS(0,1.390,255,0,255).Tweak(sat=1.15, cont=0.90)
#c28=a28.trim(59016,59801) #SLOW FIGHT

a29=YlevelS(0,1.290,255,0,255).Tweak(sat=1.07, cont=0.90)
#c29=a29.trim(59802,61943) #NO DENOISING

a30=fft3dfilter(sigma=1).YlevelS(0,1.290,255,0,255).Tweak(sat=1.02, cont=0.90)
#c30=a30.trim(61944,76922)

a31=fft3dfilter(sigma=3.6).YlevelS(0,1.220,255,0,255).Tweak(sat=1.00, cont=0.90)
#c31=a31.trim(76923,78228)

a32=fft3dfilter(sigma=2).YlevelS(0,1.220,255,0,255).Tweak(sat=1.03, cont=0.90)
#c32=a32.trim(78229,78997) #CHECK COLORS

a33=fft3dfilter(sigma=4).YlevelS(0,1.220,255,0,255).Tweak(sat=1.00, cont=0.90)
#c33=a33.trim(78998,81454) #SAMPLE

a34=fft3dfilter(sigma=2).YlevelS(0,1.320,255,0,255).Tweak(sat=1.00, cont=0.90)
#c34=a34.trim(81455,85121) #okay

a35=fft3dfilter(sigma=2.9).YlevelS(0,1.220,255,0,255).Tweak(sat=1.05, cont=0.90)
#c35=a35.trim(85122,87692)

a36=YlevelS(0,1.220,255,0,255).Tweak(sat=1.05, cont=0.90)
#c36=a36.trim(87693,88161)

a37=fft3dfilter(sigma=2.5).YlevelS(0,1.220,255,0,255).Tweak(sat=1.05, cont=0.90)
#c37=a37.trim(88162,91161) #RAPAGE

a38=YlevelS(0,1.220,255,0,255).Tweak(sat=1.05, cont=0.90)
#c38=a38.trim(91162,92013)

a39=YlevelS(0,1.250,255,0,255).Tweak(sat=1.03, cont=0.90)
#c39=a39.trim(92014,98860)

a40=fft3dfilter(sigma=1.3).YlevelS(0,1.210,255,0,255).Tweak(sat=1.17, cont=0.90)
#c40=a40.trim(98861,100619) #COLORING!!!!!!!

a41=fft3dfilter(sigma=1.5).YlevelS(0,1.010,255,0,255).Tweak(cont=0.90)
#c41=a41.trim(100620,101980)

a42=fft3dfilter(sigma=1.34).YlevelS(0,1.260,255,0,255).Tweak(sat=1.04, cont=0.90)
#c42=a42.trim(101981,103850)

a43=fft3dfilter(sigma=2.89).YlevelS(0,1.240,255,0,255).Tweak(sat=1.02, cont=0.90)
#c43=a43.trim(103851,104104) #SHOOTING

a44=fft3dfilter(sigma=2.1).YlevelS(0,1.250,255,0,255).Tweak(sat=1.02, cont=0.90)
#c44=a44.trim(104105,104723)

a45=fft3dfilter(sigma=3.0).YlevelS(0,1.350,255,0,255).Tweak(sat=1.11, cont=0.90)
#c45=a45.trim(104724,105777) #CHECK AGAIN!!

a46=fft3dfilter(sigma=1.5).YlevelS(0,1.270,255,0,255).Tweak(sat=1.04, cont=0.90)
#c46=a46.trim(105778,107995)

a47=fft3dfilter(sigma=3.0).YlevelS(0,1.220,255,0,255).Tweak(sat=1.04, cont=0.90)
#c47=a47.trim(107996,114317) #YAKKAI THIRI (8)

a48=fft3dfilter(sigma=1.5).YlevelS(0,1.220,255,0,255).Tweak(sat=1.04, cont=0.90)
#c48=a48.trim(114318,118185)

a49=fft3dfilter(sigma=2.45).YlevelS(0,1.235,255,0,255).Tweak(sat=1.04, cont=0.90)
#c49=a49.trim(118186,120702)

a50=fft3dfilter(sigma=2).YlevelS(0,1.220,255,0,255).Tweak(sat=1.04, cont=0.90)
#c50=a50.trim(120703,225078)

#c1+c2+c3+c4+c5+c6+c7+c8+c9+c10+c11+c12+c13+c14+c15+c16+c17+c18+c19+c20+c21+c22+c23+c24+c25+c26+c27+c28+c29+c30+c31+c32+c33+c34+c35+c36+c37+c38+c39+c40+c41+c42+c43+c44+c45+c46+c47+c48+c49+c50

trim(0,2408)+trim(a2,2409,2903)+trim(a3,2904,3151)+trim(a4,3152,4000)+trim(a5,4001,4955)+trim(a6,4956,5171)+trim(a7,5172,5612)+trim(a8,5613,6086)+trim(a9,6087,6349)+trim(a10,6350,6964)+trim(a11,6965,9198)+trim(a12,9199,17947)+trim(a13,17948,22678)+trim(a14,22679,29463)+trim(a15,29464,38383)+trim(a16,38384,43971)+trim(a17,43972,45834)+trim(a18,45835,52744)+trim(a19,52745,53757)+trim(a20,53758,54903)+trim(a21,54904,54953)+trim(a22,54954,55052)+trim(a23,55053,55094)+trim(a24,55095,55160)+trim(a25,55161,55684)+trim(a26,55685,57168)+trim(a27,57169,59015)+trim(a28,59016,59801)+trim(a29,59802,61943)+trim(a30,61944,76922)+trim(a31,76923,78228)+trim(a32,78229,78997)+trim(a33,78998,81454)+trim(a34,81455,85121)+trim(a35,85122,87692)+trim(a36,87693,88161)+trim(a37,88162,91161)+trim(a38,91162,92013)+trim(a39,92014,98860)+trim(a40,98861,100619)+trim(a41,100620,101980)+trim(a42,101981,103850)+trim(a43,103851,104104)+trim(a44,104105,104723)+trim(a45,104724,105777)+trim(a46,105778,107995)+trim(a47,107996,114317)+trim(a48,114318,118185)+trim(a49,118186,120702)+trim(a50,120703,225078)

vinujan
17th February 2008, 04:03
There isn't a limit on the number of times you can use Trim per se, but there is a limit on the number of filters that you can chain together.

If you reduce the number of filters you use, does it work?

Also, you should ask your questions in the public AviSynth forum, especially since this is a general AviSynth question.

Do you know the exact values for the # of filters that can be used in a chain?

No. It's not some fixed number.

Please continue any further discussion in that thread.

Answers from stickyboy! Thank you so much

sh0dan
17th February 2008, 12:05
You are probably running out of memory. Again I have to refer to Conditionalfilter/Conditionalreader. It is made exactly for that purpose.
SetMemoryMax(384)

LoadPlugin("D:/Filters/mpeg2dec3.dll")
LoadPlugin("D:/Filters/decomb500.dll")
LoadPlugin("D:/Filters/awarpsharp.dll")
LoadPlugin("D:/Filters/vaguedenoiser.dll")
LoadPlugin("D:/Filters/dctfilter.dll")
LoadPlugin("D:/Filters/vsfilter.dll")
LoadPlugin("D:/Filters/LoadPluginEx.dll")
LoadPlugin("D:/Filters/convolution3d.dll")
LoadPlugin("D:/Filters/dustv5.dll")

global use_pixie = true # this value is not used

function TempApply(clip c, int narf)
{
#fools ApplyRange into not being a pain
return c.TemporalSoften(3,3,8,mode=2)
}

Mpeg2Source("D:/Love Hina DVD1/Ep 1/Love Hina Ep 1.d2v")

Telecide(order=1, post=2, back=2, nt=20, blend=true, chroma=true,
ovr="D:/Love Hina DVD1/Ep 1/override.tel")
Good1=Trim(0,10912)
Replace1=Trim(10901,10901)
Replace3=Trim(10901,10903)
Good2=Trim(10920,26918)
Replace4=Trim(26915,26918)
Good3=Trim(26927,38928)
last=Good1 + Replace3 + Replace3 + Replace1 + Good2 + Replace4 + Replace4 + Good3
Decimate(cycle=5, mode=2, quality=3)

#VagueDenoiser(threshold=1.5,method=1,nsteps=6,chroma=true)

aWarpsharp(depth=10, blurlevel=1)

Crop(6, 0, -6, 0)
BicubicResize(640,480)

ApplyRange(0, 2154, "DctFilter", 1, 1, 1, 1, .888, .777, .666, .555)
ApplyRange(29799, 31000, "DctFilter", 1, 1, 1, 1, .888, .777, .666, .555)

ConvertToYUY2()

Convolution3d(preset="animeHQ")
org = last
pixied = PixieDust(org, 6)
temped = TempApply(org)
conditionalfilter(org,pixied,temped,"use_pixie","==","true")
conditionalreader("pixie.txt","use_pixie")
ConvertToYV12()

pixie.txt:

type bool
default false
r 0 566 true
r 577 1057 true
r 1432 2154 true
[...]

vinujan
17th February 2008, 22:58
How would i go abouts changing this into ConditionalReader Format?

because i'm trying to apply unique/distinct filters for individual frames

sh0dan
18th February 2008, 09:14
@vinujan: Your case is a bit more complicated obviously, but something like:

[...] Load source, etc[...]
global c_ff_sig = 1.0
global c_ylevel_gamma = 1.0
global c_tweak_sat = 1.0
global c_tweak_cont = 1.0

scriptclip("fft3dfilter(sigma=c_ff_sig).YlevelS(0,c_ylevel_gamma,255,0,255).Tweak(sat=c_tweak_sat,cont=c_tweak_cont)")
conditionalreader("ff_sig.txt","c_ff_sig")
conditionalreader("ylevel_gamma.txt","c_ylevel_gamma")
conditionalreader("tweak_sat.txt","c_tweak_sat")
conditionalreader("tweak_cont.txt","c_tweak_cont")


ff_sig.txt

type float
default 1.0
r 2409 2903 3.5
r 2904 3151 4.0
[....]

I don't know the initialization cost of fft3dfilter and ylevels. Tweak has a moderate cost - so your script may be slightly slower than with ordinary trims - but time doesn't seem like a significant for you.

vinujan
18th February 2008, 17:22
Thank you so much sh0dan for your reply!!!

i understand the paramaters of conditionalreader more better because of your example!

Thank you once again.

i will give it a try :)

vinujan
25th February 2008, 00:40
I've tried your method

What happens is the FPS sits around 0.75FPS. Then MeGUI crashes after 4-5 hours.

i used fft3dfilter(ncpu=2) as well, so i utilize my Dual Core Processor.

These are my PC Specs.:

Dual Core 2.00Ghz & 2.0GB Ram.

The fft3dfilter seems to have a "high" initial cost. Is there anyway i can still go ahead with this?

I'm thinking of trying 50 lagarith lossless .avi files, and then join them together after the encode. But i'm trying to avoid doing this because i don't have the disk space to go ahead with this.

vinujan
1st March 2008, 21:56
Sorry for bumping this thread back.

i'll just post my solution, so that in the future if anyone bumps into the same problem of trying to use ConditionalReader with FFT3DFilter they have an alternate solution.

FFT3DFilter is a heavy filter which demands allot of memory & resource from PC.

I created 50 .avs files with the proper trim parameters and filter functions.

I used VDub with Lagarith Codec and created lossless .avi files.

i created 50 .avi files with Lagarith Codec.

then created a script with: AviSource(C:\. . .\01.avi)+...+AviSource(C:\. . .\50.avi).

i fed this script into MeGUI and basically encoded from there :)