Log in

View Full Version : Possible bug in AviSynth Version 2.60 Alpha or maybe a limitation?


Aktan
1st February 2010, 08:51
I know this version is in Alpha stage, but I just want to report a bug or limitation I think I found. Here is the script I use:

a = AVISource("Part001.avi").trim(0, 4571)
b = AVISource("Part002.avi").trim(36, 4120)
c = AVISource("Part003.avi").trim(35, 4089)
d = AVISource("Part004.avi").trim(36, 4588)
e = AVISource("Part005.avi").trim(25, 4323)
f = AVISource("Part006.avi").trim(35, 5586)
g = AVISource("Part007.avi").trim(35, 5484)
h = AVISource("Part008.avi").trim(36, 5527)
i = AVISource("Part009.avi").trim(35, 5382)
j = AVISource("Part010.avi").trim(35, 5672)
k = AVISource("Part011.avi").trim(36, 5488)
l = AVISource("Part012.avi").trim(36, 4544)
m = AVISource("Part013.avi").trim(36, 4510)
n = AVISource("Part014.avi").trim(36, 4255)
o = AVISource("Part015.avi").trim(35, 4851)
p = AVISource("Part016.avi").trim(35, 4359)
q = AVISource("Part017.avi").trim(35, 4137)
r = AVISource("Part018.avi").trim(36, 4204)
s = AVISource("Part019.avi").trim(36, 4597)
t = AVISource("Part020.avi").trim(36, 4108)
u = AVISource("Part021.avi").trim(36, 4107)
v = AVISource("Part022.avi").trim(35, 4471)
w = AVISource("Part023.avi").trim(35, 4569)
x = AVISource("Part024.avi").trim(36, 5175)
y = AVISource("Part025.avi").trim(26, 4515)
z = AVISource("Part026.avi").trim(25, 4622)
aa = AVISource("Part027.avi").trim(34, 4267)
ab = AVISource("Part028.avi").trim(36, 4284)
ac = AVISource("Part029.avi").trim(36, 4478)
ad = AVISource("Part030.avi").trim(36, 4799)
ae = AVISource("Part031.avi").trim(35, 5232)
af = AVISource("Part032.avi").trim(35, 4114)
ag = AVISource("Part033.avi").trim(35, 5572)
ah = AVISource("Part034.avi").trim(36, 5637)
ai = AVISource("Part035.avi").trim(36, 5470)
aj = AVISource("Part036.avi").trim(35, 5625)
ak = AVISource("Part037.avi").trim(35, 5751)
al = AVISource("Part038.avi").trim(35, 5762)
am = AVISource("Part039.avi").trim(36, 5745)
an = AVISource("Part040.avi").trim(36, 5209)
ao = AVISource("Part041.avi").trim(35, 4189)
ap = AVISource("Part042.avi").trim(36, 4391)
aq = AVISource("Part043.avi").trim(36, 4570)
ar = AVISource("Part044.avi").trim(35, 5014)
as = AVISource("Part045.avi").trim(36, 4239)
at = AVISource("Part046.avi").trim(35, 3585)
au = AVISource("Part047.avi").trim(35, 5362)
av = AVISource("Part048.avi").trim(25, 5602)
aw = AVISource("Part049.avi").trim(36, 5472)
ax = AVISource("Part050.avi").trim(30, 5664)
ay = AVISource("Part051.avi").trim(36, 5675)
az = AVISource("Part052.avi").trim(35, 5710)
ba = AVISource("Part053.avi").trim(31, 5815)
bb = AVISource("Part054.avi").trim(36, 5723)
bc = AVISource("Part055.avi").trim(35, 4343)
bd = AVISource("Part056.avi").trim(36, 4390)
be = AVISource("Part057.avi").trim(36, 5515)
bf = AVISource("Part058.avi").trim(30, 5082)
bg = AVISource("Part059.avi").trim(36, 5891)
bh = AVISource("Part060.avi").trim(35, 4336)
bi = AVISource("Part061.avi").trim(35, 5212)
bj = AVISource("Part062.avi").trim(36, 5159)
bk = AVISource("Part063.avi").trim(36, 5688)
bl = AVISource("Part064.avi").trim(36, 5011)
bm = AVISource("Part065.avi").trim(35, 4339)
bn = AVISource("Part066.avi").trim(36, 4562)
bo = AVISource("Part067.avi").trim(36, 5595)
bp = AVISource("Part068.avi").trim(35, 5588)
bq = AVISource("Part069.avi").trim(36, 5661)
br = AVISource("Part070.avi").trim(36, 5805)
bs = AVISource("Part071.avi").trim(35, 4876)
bt = AVISource("Part072.avi").trim(36, 3781)
bu = AVISource("Part073.avi").trim(29, 3750)
bv = AVISource("Part074.avi").trim(35, 4539)
bw = AVISource("Part075.avi").trim(36, 4878)
bx = AVISource("Part076.avi").trim(35, 0)
vid = a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p + q + r + s + t + u + v + w + x + y + z + aa + ab + ac + ad + ae + af + ag + ah + ai + aj + ak + al +am + an + ao + ap + aq + ar + as + at + au + av + aw + ax + ay + az + ba + bb + bc + bd + be + bf + bg + bh + bi + bj + bk + bl + bm + bn + bo + bp + bq + br + bs + bt + bu + bv + bw + bx
l_ch = GetChannel(vid, 1)
r_ch = GetChannel(vid, 2)
flip = MergeChannels(r_ch, l_ch)
last = AudioDub(vid, flip)
return last

VirtualDub fails to open this avs with the error "Avisynth open failure: AVISource: couldn't locate a decompressor for fourcc C:\Combo.avs, line 76." Line 76 points to the following line:

bx = AVISource("Part076.avi").trim(35, 0)

If I comment out the first AVISource, aka variable "a" and remove it from the combination at variable "vid", the error goes away, which leads me to think I used AVISource way too many times which is causing this error. Any thoughts?

Edit: Well I found something interesting. I tried to compress all the AVISource via just saving the file in VDub with some lossless codec, and my codec list was screwed up. Only 1 codec was listed! If I comment out 2 variables in the above script, then I will see the complete codec list. This leads me to think this problem as nothing to do with AviSynth, but more a limitation with Windows.

IanB
1st February 2010, 10:52
Long standing limitation. It's in the VFW libraries, there are a finite number of codec instance that can be created at once. DirectShow is even worse. There are plans to create and release the codec instances on demand, it may cost some performance, but it will remove the limitation.

Aktan
1st February 2010, 15:30
Okay thanks!

peter71
4th September 2010, 23:29
Hello,

I'd like to bump this thread, to ask for some updates in this topic. This limitation is really long running and annoying.
Does anybody know an in-script workaround maybe ?

IanB
5th September 2010, 23:54
Not a lot of progress. It is actually quite hard to schedule the release of codec instances with the way Avisynth works internally. All the decisions can only be made in the GetFrame() chain.