View Full Version : Avisynth 2.6 MT
DVDBob
22nd January 2011, 01:03
Nobody can help me???
Fullmetal Encoder
22nd January 2011, 01:33
The most basic script you have tried is - a script with QTGMC. Now, look at that.
Well, by "basic" I meant without any funky MT modes set and without any options specified in FFVideoSource. But I did go back and re-run the test without QTGMC and, low and behold, FFMS2 works. So, I guess we can say that FFMS2 works with 2.6 so long as I don't put any scripting in my script ;) Since I had had similar errors with FFMS2 in 64-bit but not had any problems with QTGMC in 64-bit I just assumed that the read error was produced by FFMS2. However, my new discovery doesn't help me much as not using QTGMC is somewhat of a deal-breaker for me so I suppose my question becomes:
Has anyone out there had any success using QTGMC with 2.6 and FFMS2? And, if so, do you have any ideas on where I might be going wrong here?
I've pretty much the same HW as you, and have no problems to use 90~99% CPU for filtering+encoding. With 2.5.8.5.MT, that is.
I don't know if you are just making fun of me here or not but assuming you aren't I too can get 90-99% CPU usage with JoshyD's but only by specifying more than 2 cores be used. That makes enough sense but whenever I specify more than 2 cores I'm guaranteed to get a crash. What's really bizarre to me though is that while the performance I get using 2 cores is on the order of twice the performance I get using 1 core, using 4 cores dramatically reduces performance (e.g. .46 fps vs. 2.9-3 fps with 2 cores using QTGMC's slow preset). But this is a matter for the other thread.
Fullmetal Encoder
22nd January 2011, 01:38
Can i to this:
MPEG2Source("My movie.d2v",cpu=0)
Crop(14,2,-18,-10)
mt("""MCTemporalDenoise(settings="low")""")
Or should i do this:
SetMTMode(5,0)
MPEG2Source("My movie.d2v",cpu=0)
Crop(14,2,-18,-10)
MCTemporalDenoise(settings="low")
SetMTMode(2,0)
I have a 2 core cpu.
DVDBob, I have not tested MT() much at all and not at all using 2.6 but from what I've read it's usually a problematic way of invoking multithreading. Some people say they get much better performance using MT() over SetMTMode() but from what I gather about the way the two work MT() involves splitting each frame into segments which then have to be pieced together again which often leaves artifacts in the image. If I were you I'd stick with SetMTMode.
DVDBob
22nd January 2011, 03:03
DVDBob, I have not tested MT() much at all and not at all using 2.6 but from what I've read it's usually a problematic way of invoking multithreading. Some people say they get much better performance using MT() over SetMTMode() but from what I gather about the way the two work MT() involves splitting each frame into segments which then have to be pieced together again which often leaves artifacts in the image. If I were you I'd stick with SetMTMode.
Ok.
I have a 2 core CPU, so what setting should I use and where in my script, should I use SetMTMode???
Tiberiust
22nd January 2011, 10:03
@DVDBob and Fullmetal...
As a recent n00b, MT Avisynth has driven me nuts...but I have recently done abt 30hrs of VHS and MPEG2 with 100% reliability using this:
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\TibPlugins\AddGrainC.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\TibPlugins\AGC.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\TibPlugins\ColorMatrix.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\TibPlugins\ffms2.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\TibPlugins\FFT3DFilter.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\TibPlugins\deblock.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\TibPlugins\DctFilter.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\TibPlugins\RemoveGrainSSE3.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\TibPlugins\RepairSSE3.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\TibPlugins\mt_masktools-25.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\TibPlugins\mvtools2.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\TibPlugins\deblock.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\TibPlugins\gradfun2db.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\TibPlugins\nnedi3.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\TibPlugins\UnDot.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\TibPlugins\SangNom.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\TibPlugins\TTempSmooth.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\TibPlugins\FFT3dGPU.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\TibPlugins\MT.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\TibPlugins\DePanEstimate.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\TibPlugins\DePan.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\TibPlugins\SmoothAdjust-MSVC-x86.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\TibPlugins\ChromaShift.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\TibPlugins\SoundOut.dll")
import("C:\Program Files (x86)\AviSynth 2.5\TibPlugins\CutFrames.avs")
import("C:\Program Files (x86)\AviSynth 2.5\TibPlugins\GradFun2DBmod.v1.3.avsi")
import("C:\Program Files (x86)\AviSynth 2.5\TibPlugins\Deblock_QED_MT2.avsi")
import("C:\Program Files (x86)\AviSynth 2.5\TibPlugins\QTGMC2.51.avsi")
import("C:\Program Files (x86)\AviSynth 2.5\TibPlugins\LSFmod.v1.9.avsi")
import("C:\Program Files (x86)\AviSynth 2.5\TibPlugins\MCTemporalDenoise v1.4.20.avsi")
Import("C:\Program Files (x86)\AviSynth 2.5\TibPlugins\FFMS2.avsi")
setmtmode(5,0)
FFVideoSource("blah.mpg")
AssumeTFF().converttoyv12(interlaced=true)
SetMTMode(2)
QTGMC( Preset="slow", EdiThreads=8 )
setmtmode(5)
MT("""MCTemporalDenoise(settings="medium")""", threads=8, overlap=8)
selecteven()
I tested this for you (just removed SetMTModes and QTGMC) and it seems to run fine:
FFVideoSource("blah.mpg")
AssumeTFF().converttoyv12(interlaced=true)
MT("""MCTemporalDenoise(settings="medium")""", threads=8, overlap=8)
selecteven()
Now for the bad bit...with CPU at abt 80pct (i7 at 3.8Ghz) the first script manages only 4fps on 720x576 :p I'd be interested to know if others get the same cos I'm probably making some ignorant mistake somewhere?
I guess other source filters would be happy with it as well. However, note that I use SEt's 2.58 MT, his 2.6 is compiled from very early sources of 2.6 development - I recall a post from Avisynth devs saying they were suprised it worked wout more problems.
T
Gavino
22nd January 2011, 10:24
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\TibPlugins\mt_masktools-25.dll")
...
SetMTMode(2)
...
setmtmode(5)
MT("""MCTemporalDenoise(settings="medium")""", threads=8, overlap=8)
With Avisynth 2.6, you should be using mt_masktools-26.dll.
Otherwise, mysterious crashes may occur.
Also, it's not necessary to use setmtmode(5) before calling MT(), as MT itself does this (or its equivalent) internally.
Fullmetal Encoder
22nd January 2011, 10:50
Interesting. I have re-run my tests and this time I kept careful track of which versions of Avisynth I was testing and what I'm finding is that QTGMC seems to bork everything except JoshyD's 04/10/2010 x64 release of Avisynth (the newest version doesn't work). What's odd is that I can't get my system to use more than about 30% of the CPU with any performance increase. Using the "basic" script I provided earlier the best I can achieve is about 2.6-2.8 fps with 30% usage. That's with SetMTMode(5,2) at the top and SetMTMode(2) just before QTGMC. QTGMC obviously takes longer than FFMS2 does to feed it the video but what surprises me is that even specifying 8 threads throughout the fps drop to something on the order of .46. On his QTGMC thread even -Vit- states that the plugin has "also been used extensively with SeT's MT build of AviSynth 2.6 with 8 (and more) threads." :mad: Maybe my best results are all I'm going to be able to squeeze out of it but it still bugs me that I've all this RAM and processing power just sitting around doing nothing.
I didn't know about using just mt_masktools-26.dll with 2.6. I checked my plugin folder and found that I had both -25 and -26 in there. Masktools is a part of QTGMC so I think I'm going try some more testing with it after removing -25 and see if maybe that has anything to do with the performance. But that will have to wait until tomorrow.
As for MT() I've been a little wary of that due the artifacts I've heard it produces.
Tiberiust
22nd January 2011, 10:54
With Avisynth 2.6, you should be using mt_masktools-26.dll.
Otherwise, mysterious crashes may occur.
Indeed, I had many a struggle with mysterious crashes mistakenly using the wrong mt_masktools version :) but I do stress that this script uses SEt's 2.58 MT.
The script I pasted is verbatim one of my defaults, it has worked perfecto on abt 30hrs of footage which in my MT experience is a major credit
Also, it's not necessary to use setmtmode(5) before calling MT(), as MT itself does this (or its equivalent) internally.
Yes, but I have previously called Setmtmode (2) to run QTGMC
and I then reset it to mode 5 since there are other filters lower down in the script (like Depan, not shown here) which don't like MT
Izzat wrong?
Tks
T
Gavino
22nd January 2011, 11:10
Indeed, I had many a struggle with mysterious crashes mistakenly using the wrong mt_masktools version :) but I do stress that this script uses SEt's 2.58 MT.
Yes, I see now you did say that in your post.
But as this is a thread about 2.6, my warning may be useful to other readers.
Yes, but I have previously called Setmtmode (2) to run QTGMC
and I then reset it to mode 5 since there are other filters lower down in the script (like Depan, not shown here) which don't like MT
Izzat wrong?
No - just that in the short script you posted, it looked like you were calling setmtmode(5) simply to avoid multithreading the MT function. MT itself switches off the current SetMTMode setting before doing its work (and restores it afterwards).
yup
22nd January 2011, 11:13
Hi all!
I use Set 2.6 build and QTGMC practically any week for 6-12 hr video. I do not use ffms2 and ffdshow only DirectshowSource().
Script simple:
SetMTMode(2,4)
DirectShowSource("aaa.avi")
AssumeTFF()
ConvertToYV12(interlaced=true)
QTGMC()
SelectEven()
I am try both mt_maskrtools-25.dll and mt_maskrtools-26.dll with same result.
This work stable.
yup.
Groucho2004
22nd January 2011, 11:27
It seems that most problems are with the 64 bit variants.
I have been using SeT's Avisynth MT 2.6 (32 bit) and QTGMC for a while without any problems. It's stable with all source filters I tried, FFMS2, DGDecNV, DSS.
DVDBob
22nd January 2011, 11:46
FFVideoSource("blah.mpg")
AssumeTFF().converttoyv12(interlaced=true)
MT("""MCTemporalDenoise(settings="medium")""", threads=8, overlap=8)
selecteven()
Now for the bad bit...with CPU at abt 80pct (i7 at 3.8Ghz) the first script manages only 4fps on 720x576 :p I'd be interested to know if others get the same cos I'm probably making some ignorant mistake somewhere?
I guess other source filters would be happy with it as well. However, note that I use SEt's 2.58 MT, his 2.6 is compiled from very early sources of 2.6 development - I recall a post from Avisynth devs saying they were suprised it worked wout more problems.
T
"threads=8" means 8 core cpu or not???
Tiberiust
22nd January 2011, 12:14
"threads=8" means 8 core cpu or not???
Yes, I have a Core i7. For your Core 2, replace the '8' with a '2'
T
Tiberiust
22nd January 2011, 12:44
@Yup and Groucho
Yes, SEt's 2.6 MT does work well a lot of the time esp with QTGMC. But I would suggest that you've been lucky, especially if you mix your mt_masktools versions. Based on hours of teeth grinding experimentation, I would seriously say, for general MT use, use SEt's 2.58.
I found IanB's comments (http://forum.doom9.org/showthread.php?p=1451382#post1451382) abt SEt's 2.6 MT which is enuf to put me off. IMHO unless you're very knowledgeable Avisynth MT is a crapshoot at the best of times and starting off with a dodgy version of avisynth.dll is not gonna help...
T
DVDBob
22nd January 2011, 12:49
Should I also replace overlap=8 with overlap=2 ???
yup
22nd January 2011, 15:04
DVDBob!
Should I also replace overlap=8 with overlap=2 ???
Read help for MVTools
http://www.avisynth.org.ru/mvtools/mvtools2.html
It is relating with MVTools plugin, not multithreading. Overlap could half block size for best motion compensation.
yup.
Tiberiust
22nd January 2011, 15:06
Should I also replace overlap=8 with overlap=2 ???
No, coincidentally the same, that's about adding pixels where the frame is split for MT mode. It's 'trial and error' time for you m8 :p, so much of script testing is source dependent that there's no other way
read more here: http://avisynth.org/mediawiki/MT_support_page
T
ganymede
22nd January 2011, 15:14
setmtmode(5,0)
FFVideoSource("blah.mpg")
AssumeTFF().converttoyv12(interlaced=true)
SetMTMode(2)
QTGMC( Preset="slow", EdiThreads=8 )
setmtmode(5)
MT("""MCTemporalDenoise(settings="medium")""", threads=8, overlap=8)
selecteven()
You should call SelectEven() before MCTemporalDenoise(). Actually, you're processing even and odd frames with MCTD, after what you're dropping odd frames -> it's a waste of processing time/power.
Fullmetal Encoder
22nd January 2011, 23:05
It seems that most problems are with the 64 bit variants.
I have been using SeT's Avisynth MT 2.6 (32 bit) and QTGMC for a while without any problems. It's stable with all source filters I tried, FFMS2, DGDecNV, DSS.
That's very interesting. Groucho, would you be so kind as to tell me which versions of FFMS2, Avisynth MT 2.6 and QTGMC you are using successfully? Also, how are you invoking Avisynth? Are you using VirtualDub or avs2avi?
I just went to my plugins folder, removed mt-masktools-25.dll, removed all duplicate (or possible duplicate) plugins and re-ran a few of my tests both with FFMS2-MT and vanilla without any special MT modes set and STILL get "Avisynth read error Avisynth: unknown exception" every time. I even tried swapping out some of the vanilla plugins with their SSE3 counterparts but get the same result. I'm using QTGMC v2.5.1, FFMS2 v2.1.4 and SEt's 09/19/09 release of Avisynth 2.6. All I'm doing is selecting "Direct stream copy" in VirtualDub and saving as an AVI.
ganymede
22nd January 2011, 23:37
I'm using successfully :
- SEt's build of avisynth 2.6 MT
- ffms2 2.14 vanilla (not -mt)
- QTGMC 2.51 (with SSE3 versions of RemoveGrain, Repair and VerticalCleaner)
All of these programs/filters in 32 bits version, and... under linux/wine :cool:
ffms2-mt is not running under wine, as far as I tried.
I'm using mainly VirtualDub for previewing and avs2yuv for encoding.
Groucho2004
22nd January 2011, 23:41
That's very interesting. Groucho, would you be so kind as to tell me which versions of FFMS2, Avisynth MT 2.6 and QTGMC you are using successfully? Also, how are you invoking Avisynth? Are you using VirtualDub or avs2avi?
I just went to my plugins folder, removed mt-masktools-25.dll, removed all duplicate (or possible duplicate) plugins and re-ran a few of my tests both with FFMS2-MT and vanilla without any special MT modes set and STILL get "Avisynth read error Avisynth: unknown exception" every time. I even tried swapping out some of the vanilla plugins with their SSE3 counterparts but get the same result. I'm using QTGMC v2.5.1, FFMS2 v2.1.4 and SEt's 09/19/09 release of Avisynth 2.6. All I'm doing is selecting "Direct stream copy" in VirtualDub and saving as an AVI.
First of all, I use Avisynth MT 2.6 from this (http://forum.doom9.org/showthread.php?t=148782) link (2009.09.19).
I tried FFMS 2.14 with QTGMC 2.51 using typically this script (just an example):
SetMTMode(5,4)
Import("qtgmc.avsi")
LoadPlugin("ffms2.dll")
AssumeTFF()
SetMTMode(2)
QTGMC(Preset="Slow").SelectEven()
AssumeFPS(25000, 1000).ConvertToYUY2()
This I either feed directly to x264 or Procoder. I also use a tool I wrote myself to check the speed of a script. If interested you can download it here (http://www.iol.ie/~schubert/AVSInfo.zip).
Fullmetal Encoder
23rd January 2011, 00:18
SetMTMode(5,4)
Import("qtgmc.avsi")
LoadPlugin("ffms2.dll")
AssumeTFF()
SetMTMode(2)
QTGMC(Preset="Slow").SelectEven()
Well, I just copy and pasted this part of your script into a new test script (of course I used the full paths for qtgmc and ffms2 on my system) and tried it in VirtualDub. Avisynth threw an invalid argument error on AssumeTFF(). So I deleted that line and tried again...got invalid argument error on QTGMC. It appears that either I or my computer are in the twilight zone. I'm running out of ideas. Going to have to try to do a little more testing with various FFMS2 versions later.
Groucho2004
23rd January 2011, 00:27
Avisynth threw an invalid argument error on AssumeTFF()
As I said, it's just an example.
Download the tool I linked to in my last post (AVSInfo) and check the error message it returns.
Edit: And post your entire script.
Gavino
23rd January 2011, 00:32
Avisynth threw an invalid argument error on AssumeTFF(). So I deleted that line and tried again...got invalid argument error on QTGMC.
The script is missing a call to the source filter.
Fullmetal Encoder
23rd January 2011, 09:45
As I said, it's just an example.
Download the tool I linked to in my last post (AVSInfo) and check the error message it returns.
Edit: And post your entire script.
As to Gavino's post, yes I realized my error about 20 minutes after posting my last message and corrected that. Please disregard my message about the invalid argument errors and sorry about the hassle. That's what I get for being in a hurry. After adding the source call and re-running it I received the familiar KERNELBASE error I've gotten in prior attempts to get QTGMC working. This one seems to occur only when I invoke SetMTMode(). Here is the script I am using:
SetMTMode(5,4)
Import("QTGMC.avsi")
LoadPlugin("ffms2.dll")
FFVideoSource("X.mkv")
SetMTMode(2)
QTGMC(Preset="Slow").SelectEven()
Where X is the path to my MKV file. Luckily, unlike the Avisynth read error I otherwise get, VirtualDub gives me extended information on the KERNELBASE crash. Here is the whole of the text it gives me as maybe someone here can interpret it:
VirtualDub crash report -- build 32842 (release)
--------------------------------------
Disassembly:
76ebb6a0: 93 xchg eax, ebx
76ebb6a1: a9eb76e878 test eax, 78e876eb
76ebb6a6: b5ff mov ch, 0ffh
76ebb6a8: ffc7 inc edi
76ebb6aa: 40 inc eax
76ebb6ab: 24bc and al, 0bch
76ebb6ad: a9eb76c3cc test eax, ccc376eb
76ebb6b2: cc int 3
76ebb6b3: cc int 3
76ebb6b4: cc int 3
76ebb6b5: cc int 3
76ebb6b6: e866b5ffff call 76eb6c21
76ebb6bb: 33c9 xor ecx, ecx
76ebb6bd: 8178206aa9eb76 cmp dword ptr [eax+20h], 76eba96a
76ebb6c4: 0f94c1 setz cl
76ebb6c7: 8bc1 mov eax, ecx
76ebb6c9: c3 ret
76ebb6ca: cc int 3
76ebb6cb: cc int 3
76ebb6cc: cc int 3
76ebb6cd: cc int 3
76ebb6ce: cc int 3
76ebb6cf: 8bff mov edi, edi
76ebb6d1: 55 push ebp
76ebb6d2: 8bec mov ebp, esp
76ebb6d4: 83ec50 sub esp, 50h
76ebb6d7: 8b4508 mov eax, [ebp+08h]
76ebb6da: 8945b0 mov [ebp-50h], eax
76ebb6dd: 8b450c mov eax, [ebp+0ch]
76ebb6e0: 83e001 and eax, 01h
76ebb6e3: 8945b4 mov [ebp-4ch], eax
76ebb6e6: 33c0 xor eax, eax
76ebb6e8: 8945b8 mov [ebp-48h], eax
76ebb6eb: c745bccfb6eb76 mov dword ptr [ebp-44h], 76ebb6cf
76ebb6f2: 394514 cmp [ebp+14h], eax
76ebb6f5: 7423 jz 76ebb71a
76ebb6f7: 8b4510 mov eax, [ebp+10h]
76ebb6fa: 83f80f cmp eax, 0fh
76ebb6fd: 7603 jbe 76ebb702
76ebb6ff: 6a0f push 0fh
76ebb701: 58 pop eax
76ebb702: 8945c0 mov [ebp-40h], eax
76ebb705: c1e002 shl eax, 02h
76ebb708: 50 push eax
76ebb709: ff7514 push dword ptr [ebp+14h]
76ebb70c: 8d45c4 lea eax, [ebp-3ch]
76ebb70f: 50 push eax
76ebb710: e80da90200 call 76ee6022
76ebb715: 83c40c add esp, 0ch
76ebb718: eb03 jmp 76ebb71d
76ebb71a: 8945c0 mov [ebp-40h], eax
76ebb71d: 8d45b0 lea eax, [ebp-50h]
76ebb720: 50 push eax
76ebb721: ff156c11eb76 call dword ptr [76eb116c]
76ebb727: c9 leave <-- FAULT
76ebb728: c21000 ret 0010
76ebb72b: cc int 3
76ebb72c: cc int 3
76ebb72d: cc int 3
76ebb72e: cc int 3
76ebb72f: cc int 3
76ebb730: 8bff mov edi, edi
76ebb732: 55 push ebp
76ebb733: 8bec mov ebp, esp
76ebb735: 56 push esi
76ebb736: 8b7508 mov esi, [ebp+08h]
76ebb739: 83fef4 cmp esi, 0f4h
76ebb73c: 7218 jc 76ebb756
76ebb73e: 83fef6 cmp esi, 0f6h
76ebb741: 7713 ja 76ebb756
76ebb743: 8d4508 lea eax, [ebp+08h]
76ebb746: 50 push eax
76ebb747: 6a00 push 00h
76ebb749: 56 push esi
76ebb74a: e8dd020000 call 76ebba2c
76ebb74f: 85c0 test eax, eax
76ebb751: 7403 jz 76ebb756
76ebb753: 8b7508 mov esi, [ebp+08h]
76ebb756: 56 push esi
76ebb757: ff153c10eb76 call dword ptr [76eb103c]
76ebb75d: 5e pop esi
76ebb75e: 85c0 test eax, eax
76ebb760: 7c05 jl 76ebb767
76ebb762: 33c0 xor eax, eax
76ebb764: 40 inc eax
76ebb765: eb08 jmp 76ebb76f
76ebb767: 50 push eax
76ebb768: e8c5ae0200 call 76ee6632
76ebb76d: 33c0 xor eax, eax
76ebb76f: 5d pop ebp
76ebb770: c20400 ret 0004
76ebb773: cc int 3
76ebb774: cc int 3
76ebb775: cc int 3
76ebb776: cc int 3
76ebb777: cc int 3
76ebb778: 8bff mov edi, edi
76ebb77a: 55 push ebp
76ebb77b: 8bec mov ebp, esp
76ebb77d: 8b450c mov eax, [ebp+0ch]
76ebb780: 83f8f4 cmp eax, 0f4h
76ebb783: 742c jz 76ebb7b1
76ebb785: 83f8f5 cmp eax, 0f5h
76ebb788: 7416 jz 76ebb7a0
76ebb78a: 83f8f6 cmp eax, 0f6h
76ebb78d: 7531 jnz 76ebb7c0
76ebb78f: 64a118000000 mov eax, fs:[00000018]
76ebb795: 8b4030 mov eax, [eax+30h]
76ebb798: 8b4010 mov eax, [eax+10h]
76ebb79b: 8b4018 mov eax, [eax+18h]
76ebb79e: eb20 jmp 76ebb7c0
Built on Aegis on Fri Dec 24 13:18:44 2010 using compiler version 1400
Windows 6.1 (Windows Vista x64 build 7600) []
EAX = 153eedd0
EBX = 00000000
ECX = 00000003
EDX = 00000000
EBP = 153eee20
ESI = 032f1aa0
EDI = 002f7640
ESP = 153eedd0
EIP = 76ebb727
EFLAGS = 00000212
FPUCW = 027f
FPUTW = ffff
Crash reason: Unhandled Microsoft C++ Exception
Crash context:
An exception occurred in module 'KERNELBASE'.
Pointer dumps:
EAX 153eedd0: e06d7363 00000001 00000000 76ebb727 00000003 19930520 153eee68 032c18b8
ESI 032f1aa0: 032b6fb8 0329a6c0 00000000 00000001 00000000 00000000 0ec88bce 00000000
EDI 002f7640: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
ESP 153eedd0: e06d7363 00000001 00000000 76ebb727 00000003 19930520 153eee68 032c18b8
153eedf0: 0000001c 032566d9 007c1f54 002f7640 00000000 032f1aa0 153eee14 032571e2
153eee10: 032f1f08 153eee54 03255e04 00000008 153eee58 0324c3ea e06d7363 00000001
153eee30: 00000003 153eee4c e06d7363 00000001 00000000 00000000 00000003 19930520
EBP 153eee20: 153eee58 0324c3ea e06d7363 00000001 00000003 153eee4c e06d7363 00000001
153eee40: 00000000 00000000 00000003 19930520 153eee68 032c18b8 153eee74 0324c161
153eee60: 153eee68 032c18b8 032b6fb8 0329a6c0 00000000 00000001 031529bc 002f7640
153eee80: 007c0a80 8b7ffffe 153eef30 032709bb 00000000 031549ba 4daaed50 007c0a80
Thread call stack:
76ebb727: KERNELBASE!RaiseException [76eb0000+b6cf+58]
76ebb727: KERNELBASE!RaiseException [76eb0000+b6cf+58]
032566d9: AviSynth!DllGetClassObject [03150000+e7d0+f7f09]
032571e2: AviSynth!DllGetClassObject [03150000+e7d0+f8a12]
03255e04: AviSynth!DllGetClassObject [03150000+e7d0+f7634]
0324c3ea: AviSynth!DllGetClassObject [03150000+e7d0+edc1a]
0324c161: AviSynth!DllGetClassObject [03150000+e7d0+ed991]
031529bc: AviSynth!000029bc
031549ba: AviSynth!000049ba
03154a2b: AviSynth!00004a2b
031550bb: AviSynth!000050bb
0315568c: AviSynth!0000568c
03192c53: AviSynth!DllGetClassObject [03150000+e7d0+34483]
03250753: AviSynth!DllGetClassObject [03150000+e7d0+f1f83]
0315a5ba: AviSynth!avs_release_value [03150000+8320+229a]
0315bfb5: AviSynth!avs_release_value [03150000+8320+3c95]
031cb5d0: AviSynth!DllGetClassObject [03150000+e7d0+6ce00]
0b7ba586: mt_masktools-26!0002a586
0315a5ba: AviSynth!avs_release_value [03150000+8320+229a]
0315bfb5: AviSynth!avs_release_value [03150000+8320+3c95]
031cb5d0: AviSynth!DllGetClassObject [03150000+e7d0+6ce00]
0315a5ba: AviSynth!avs_release_value [03150000+8320+229a]
0315bfb5: AviSynth!avs_release_value [03150000+8320+3c95]
0b7bc5c3: mt_masktools-26!0002c5c3
773be1cc: ntdll!RtlInitUnicodeString [77390000+2e068+164]
03154a6c: AviSynth!00004a6c
0315a5ba: AviSynth!avs_release_value [03150000+8320+229a]
0315bfb5: AviSynth!avs_release_value [03150000+8320+3c95]
022a6d0d: RemoveGrainSSE3!00006d0d
0315a5ba: AviSynth!avs_release_value [03150000+8320+229a]
0315bfb5: AviSynth!avs_release_value [03150000+8320+3c95]
031ce71d: AviSynth!DllGetClassObject [03150000+e7d0+6ff4d]
031cf022: AviSynth!DllGetClassObject [03150000+e7d0+70852]
0315a5ba: AviSynth!avs_release_value [03150000+8320+229a]
0315bfb5: AviSynth!avs_release_value [03150000+8320+3c95]
031cb5d0: AviSynth!DllGetClassObject [03150000+e7d0+6ce00]
0315a5ba: AviSynth!avs_release_value [03150000+8320+229a]
0315bfb5: AviSynth!avs_release_value [03150000+8320+3c95]
773d28d6: ntdll!NtdllDefWindowProc_A [77390000+428b3+23]
0b7bc5c3: mt_masktools-26!0002c5c3
773bde63: ntdll!RtlFreeHeap [77390000+2dde5+7e]
773be1cc: ntdll!RtlInitUnicodeString [77390000+2e068+164]
773be1cc: ntdll!RtlInitUnicodeString [77390000+2e068+164]
0315a5ba: AviSynth!avs_release_value [03150000+8320+229a]
0315bfb5: AviSynth!avs_release_value [03150000+8320+3c95]
0c0bd00e: mvtools2!_AvisynthPluginInit2@4 [0c080000+6760+368ae]
773be1cc: ntdll!RtlInitUnicodeString [77390000+2e068+164]
0315a5ba: AviSynth!avs_release_value [03150000+8320+229a]
0315bfb5: AviSynth!avs_release_value [03150000+8320+3c95]
773bdf32: ntdll!RtlAllocateHeap [77390000+2de86+ac]
0c088f12: mvtools2!_AvisynthPluginInit2@4 [0c080000+6760+27b2]
0315a5ba: AviSynth!avs_release_value [03150000+8320+229a]
0315bfb5: AviSynth!avs_release_value [03150000+8320+3c95]
0315c040: AviSynth!avs_release_value [03150000+8320+3d20]
0c0881e6: mvtools2!_AvisynthPluginInit2@4 [0c080000+6760+1a86]
0c091c33: mvtools2!_AvisynthPluginInit2@4 [0c080000+6760+b4d3]
773be1cc: ntdll!RtlInitUnicodeString [77390000+2e068+164]
0b7ba586: mt_masktools-26!0002a586
773be1cc: ntdll!RtlInitUnicodeString [77390000+2e068+164]
773bdf32: ntdll!RtlAllocateHeap [77390000+2de86+ac]
773be1cc: ntdll!RtlInitUnicodeString [77390000+2e068+164]
0315a5ba: AviSynth!avs_release_value [03150000+8320+229a]
0315bfb5: AviSynth!avs_release_value [03150000+8320+3c95]
0b831486: mt_masktools-26!000a1486
031cb5d0: AviSynth!DllGetClassObject [03150000+e7d0+6ce00]
0b820ba3: mt_masktools-26!00090ba3
0315a5ba: AviSynth!avs_release_value [03150000+8320+229a]
0315bfb5: AviSynth!avs_release_value [03150000+8320+3c95]
773bde63: ntdll!RtlFreeHeap [77390000+2dde5+7e]
0b7bc5c3: mt_masktools-26!0002c5c3
0b8223fe: mt_masktools-26!000923fe
0b7ba586: mt_masktools-26!0002a586
0315a5ba: AviSynth!avs_release_value [03150000+8320+229a]
0315bfb5: AviSynth!avs_release_value [03150000+8320+3c95]
0b7bc5c3: mt_masktools-26!0002c5c3
0b7bc6ff: mt_masktools-26!0002c6ff
0315a5ba: AviSynth!avs_release_value [03150000+8320+229a]
0315bfb5: AviSynth!avs_release_value [03150000+8320+3c95]
0c091bd3: mvtools2!_AvisynthPluginInit2@4 [0c080000+6760+b473]
773be1cc: ntdll!RtlInitUnicodeString [77390000+2e068+164]
760e14d1: kernel32!HeapFree [760d0000+114bd+14]
0b8223df: mt_masktools-26!000923df
0b8223fe: mt_masktools-26!000923fe
773be1cc: ntdll!RtlInitUnicodeString [77390000+2e068+164]
773bdf32: ntdll!RtlAllocateHeap [77390000+2de86+ac]
0315a5ba: AviSynth!avs_release_value [03150000+8320+229a]
0315bfb5: AviSynth!avs_release_value [03150000+8320+3c95]
0b7bc5c3: mt_masktools-26!0002c5c3
0315a5ba: AviSynth!avs_release_value [03150000+8320+229a]
0315bfb5: AviSynth!avs_release_value [03150000+8320+3c95]
0318e34f: AviSynth!DllGetClassObject [03150000+e7d0+2fb7f]
0315a5ba: AviSynth!avs_release_value [03150000+8320+229a]
0315bfb5: AviSynth!avs_release_value [03150000+8320+3c95]
0315eee7: AviSynth!DllGetClassObject [03150000+e7d0+717]
760e3677: kernel32!BaseThreadInitThunk [760d0000+13665+12]
773c9d42: ntdll!RtlInitializeExceptionChain [77390000+39cdf+63]
773c9d15: ntdll!RtlInitializeExceptionChain [77390000+39cdf+36]
-- End of report
I am using the same 09/19/09 release of Avisynth 2.6 that you linked. By God there must be a solution. I did try dropping the AVS script onto the program you created but my script crashes the program with no error messages :(
Groucho2004
23rd January 2011, 10:24
I did try dropping the AVS script onto the program you created but my script crashes the program with no error messages :(
Dropping? It's a console app, the syntax is "AVSInfo script.avs".
Fullmetal Encoder
23rd January 2011, 21:58
Dropping? It's a console app, the syntax is "AVSInfo script.avs".
Yes, I knew it was a CL program but whether I open the command prompt window and use "AVSInfo TestScript.avs" or left-click and drag-and-drop the script onto the .exe it gives me the same result and crashes on frame 1. But using it was valuable because at least I know now that the error isn't being caused by something in VirutalDub.
Groucho2004
24th January 2011, 00:13
I know now that the error isn't being caused by something in VirutalDub.
There are so many things that could be wrong.
- I recall that you had 64 bit Avisynth installed and I suppose that you just overwrote the 64 bit avisynth DLL with the 32 bit version. That could be a problem, not sure.
- One of the DLLs needed for QTGMC could be causing a problem on your system.
All you can do is to systematically troubleshoot this. Start with a very simple script and then try all used filters in QTGMC one by one.
Fullmetal Encoder
24th January 2011, 03:31
There are so many things that could be wrong.
- I recall that you had 64 bit Avisynth installed and I suppose that you just overwrote the 64 bit avisynth DLL with the 32 bit version. That could be a problem, not sure.
- One of the DLLs needed for QTGMC could be causing a problem on your system.
All you can do is to systematically troubleshoot this. Start with a very simple script and then try all used filters in QTGMC one by one.
Ah yes, I had not thought to test all the used filters individually. I will report back here with the results when I can.
Fullmetal Encoder
25th January 2011, 11:45
Ok, I'm back. I went through and indvidually tested every one of the necessary plugins for QTGMC except for masktools and mvtools as they are very difficult to test due to their complexity. Every other plugin, independently, works just fine using the following script:
SetMTMode(5,4)
Import("C:\Program Files (x86)\AviSynth 2.5\plugins\QTGMC.avsi")
LoadPlugin("PATH TO FFMS2")
FFVideoSource("PATH TO MKV")
SetMTMode(2)
PLUGIN.SelectEven()
In fact, they work very well giving nice fps numbers. Yet, when I use QTGMC as the PLUGIN I get KERNELBASE error every time. In order to retest I went ahead and re-downloaded every plugin, fresh, as linked from the main QTGMC thread here on Doom9. I also downloaded and copied over a fresh Avisynth 2.6 (the same one you linked earlier and dated 09/19/09 by SEt). Through all of this new testing I simplified the script somewhat and discovered that if I remove line 5 from the above script (SetMTMode(2)) the KERNELBASE error vanishes and instead I get the good old "Avisynth read error Avisynth: unknown exception" crash. This is true whether I use SetMTMode(2) or SetMTMode(2,4), for example. Removing SelectEven() was also tested without success. I also made sure that the correct fftw3.dll was placed in my SysWow64 folder. I went through my plugins folder, removed all of the plugins that were not needed by QTGMC, confirmed that I had MT.dll version .7 in the plugins folder, made sure that avisynth.dll was placed in the correct systems folder and that I had a full 32-bit chain running for these tests using VirtualDub 32-bit. I tried replacing FFVideoSource() and the MKV I've been using with DirectShowSource() and an AVI and consistently received the same errors. Although I could not fully test every separate function of mvtools I did try two different versions (2.5.11.1 and 2.5.10) and still receive the same errors each time. I also tried using a previous version of MT.dll (.6) and received the same results. I even went and downloaded the new QTGMC (version 3.0), released just today, and still received both the KERNELBASE and "Avisynth read" errors in my tests. I also tried running VirtualDub with administrator privileges without success. However, this is not the only windows installation I have. I have a separate Windows 7 Professional 64-bit installation. So I tried booting into that system, re-downloading all of the relevant plugins and programs as discussed above and re-ran the script above and I STILL received the same KERNELBASE and "Avisynth read" errors :eek: As a last ditch effort I reorganized everything so that the script, source file, Avisynth, and VirtualDub softwares were all on the same drive (up until then they had all been on different drives) without success. The only thing left that I can think of is that there is something very wrong with the decoding process. I currently have a rather fresh install of the K-lite codec pack on this system (where I've done most of the work and where this all started on). I plan on uninstalling it, re-installing just the codecs I need and rerunning the tests. So far it seems that I've either made some horribly noobish mistake, which is admittedly still possible, or that I've discovered some freakish bug in 2.6 or masktools or mvtools. If anybody has any other ideas about what, or how, I could test this to narrow down the issue, please let me know. Round two begins tomorrow. Wish me luck.
Groucho2004
25th January 2011, 12:00
I currently have a rather fresh install of the K-lite codec pack on this system
That might well be at least one of your problems.
K-lite is an evil spawn of the darkest vigors of hell, each file of this malicious abomination has (or ought to have) a checksum of 666.
Gavino
25th January 2011, 12:52
if I remove line 5 from the above script (SetMTMode(2)) the KERNELBASE error vanishes and instead I get the good old "Avisynth read error Avisynth: unknown exception" crash.
What if you remove SetMTMode altogether (ie run single-threaded)?
confirmed that I had MT.dll version .7 in the plugins folder
MT.dll is only needed if you use the MT() function, not for SetMTMode().
I currently have a rather fresh install of the K-lite codec pack on this system
Since ffvideosource does not use installed codecs, K-lite is not to blame (despite its poor reputation in some quarters).
If anybody has any other ideas about what, or how, I could test this to narrow down the issue, please let me know.
I would first eliminate the multi-threading aspects and try to find the source of the error you get in single-threaded mode (which is probably the real origin of the problem).
Didée
25th January 2011, 13:14
Haven't tried QTGMC under Avisynth 2.6 yet, but I can confirm that TGMC_b2 works fine. (After all, TGMC/QTGMC use the very same plugins.)
Observations:
a) Where TGMC + SetMTmode(2,4~6) would crash occasionally in Avisynth 2.5.8.5.MT, it seems rock stable in Avisynth 2.6 (SEt's 09-19 build).
b) in Avisynth 2.5.8.5.MT, QTGMC + SetMTmode(2,4~6) crashes more often for me than TGMC does. Can't tell why, it just is like that.
Question is - what sorts of "MT-related fixes" have been done to 2.6, that 2.5.8.5 is missing? :devil:
JEEB
25th January 2011, 16:32
Since Avisynth 2.6 builds are rare and far away from each other, I thought about doing some trunk builds from now on for those interested. Build environment currently consists of MSVS2010 with the Win7 SDK and the July 2010 DirectX SDK with ddraw.lib added, so these runtimes will most probably be needed to run the library.
These are strictly experimental builds, and thus the package contains both debug and release binaries.
2011-01-25
VS2010 (http://www.mediafire.com/?lbn8xqj71a117ba) | VS2008 (http://www.mediafire.com/?9olunx1ss6erlj3) | Sources (https://github.com/jeeb/avisynth2/zipball/avisynth26_trunk_20110125)
Zep
25th January 2011, 18:00
cool will test it over the weekend and if any show stoppers i will let you know. :)
Gavino
25th January 2011, 18:33
Build environment currently consists of MSVS2010
Unfortunately, that prevents use of older OS versions such as Windows 2000. Could you possibly use VS2008 or earlier?
JEEB
25th January 2011, 18:57
Unfortunately, that prevents use of older OS versions such as Windows 2000. Could you possibly use VS2008 or earlier?
I have VS2008 set up as well, so I'll do a build in a while (I do hate the fact that Visual Studios older than 2010 save the include/lib/etc. settings globally instead of saving them per-project).
I could also mention here that this version of Windows is now without official support as well, but since it's NT5-based and VS2008 can make binaries that work on it, I'll pass on that :) .
Fullmetal Encoder
25th January 2011, 23:48
What if you remove SetMTMode altogether (ie run single-threaded)?
Earlier on, this is what I had done. For example, if I use this:
Import("C:\Program Files (x86)\AviSynth 2.5\plugins\QTGMC3.0.avsi")
LoadPlugin("ffms2.dll")
FFVideoSource("X.mkv")
Everything works fine. I can select Direct Stream Copy in VirtualDub and re-save the file. If, however, I use:
Import("C:\Program Files (x86)\AviSynth 2.5\plugins\QTGMC3.0.avsi")
LoadPlugin("ffms2.dll")
FFVideoSource("X.mkv")
QTGMC(preset="fast")
I get "Avisynth read error Avisynth: unknown exception" a few dozen frames into the process. Omitting Import() doesn't change anything either. When using SetMTMode() before QTGMC() I always get the KERNELBASE error on frame 1. While VirtualDub provides me with an "advanced" report on the KERNELBASE crash it doesn't give me any information at all on the read error. This is true whether I use "fast" or "slow" as the preset for QTGMC. I would suspect some kind of corruption in a used Windows component but then that component would have to be corrupt in just the same way in two different installations to reproduce the same errors in both. In that vein, are there any DLLS that you think might commonly be present on a coder's system that wouldn't be on a system like mine? Like something in windows that might be invoked by mvtools/masktools/avisynth? I did have a crash with VirtualDub before I began working on this problem wherein it died while attempting to run a script with a message telling me that I needed some vcomp100.dll. I subsequently tracked it down and put it in the right folder and it stopped complaining after that. In case you are wondering if that might be the culprit here, it isn't, as I've tested and get the same errors on the above script without vcomp100.dll.
MT.dll is only needed if you use the MT() function, not for SetMTMode().
Yes, I recall reading this in one of the threads here in the past but I had forgotten. And now I remember again :) No harm done though as I'm just grasping at straws at this point to look for clues.
Since ffvideosource does not use installed codecs, K-lite is not to blame (despite its poor reputation in some quarters).
This is good to know as I have yet to rip k-lite out of my system and I have it set up properly atm.
...find the source of the error you get in single-threaded mode (which is probably the real origin of the problem).
Yes, I suspect they are caused by the same source. Is there some kind of process explorer that I could use that might shed some light on what's really going on when I run the script that produces the Avisynth read error?
Also, is there something about the video file itself that could be causing the error? I can't imagine what it could be but both the AVI and the MKV I've tested are the same source material. Maybe it just doesn't like my anime.
Groucho2004
26th January 2011, 01:22
Is there some kind of process explorer that I could use that might shed some light on what's really going on when I run the script that produces the Avisynth read error?
Sure, the one and only Sysinternals Process Explorer (http://technet.microsoft.com/en-us/sysinternals/bb896653)
levi
26th January 2011, 02:27
jeeb are you doing 64 bit builds? :)
yup
26th January 2011, 08:42
Haven't tried QTGMC under Avisynth 2.6 yet, but I can confirm that TGMC_b2 works fine. (After all, TGMC/QTGMC use the very same plugins.)
Observations:
a) Where TGMC + SetMTmode(2,4~6) would crash occasionally in Avisynth 2.5.8.5.MT, it seems rock stable in Avisynth 2.6 (SEt's 09-19 build).
b) in Avisynth 2.5.8.5.MT, QTGMC + SetMTmode(2,4~6) crashes more often for me than TGMC does. Can't tell why, it just is like that.
Question is - what sorts of "MT-related fixes" have been done to 2.6, that 2.5.8.5 is missing? :devil:
Didée!
Can You confirm error for nnedi3_rpow2 for YUY2 colorspace under Set 2.6 build?
yup.
JEEB
26th January 2011, 13:19
jeeb are you doing 64 bit builds? :)
Maybe when I learn how to make sure code is Win64 compliant and when a friend of mine gets through porting Avisynth's asm into x264ASM usable via yasm ;) .
Also, added a VS2008 build onto the original post :) .
kemuri-_9
26th January 2011, 14:42
Maybe when I learn how to make sure code is Win64 compliant and when a friend of mine gets through porting Avisynth's asm into x264ASM usable via yasm ;) .
IMO 64bit support should've been done this way to start with...
ajp_anton
27th January 2011, 01:34
Since Avisynth 2.6 builds are rare and far away from each other, I thought about doing some trunk builds from now on for those interested. Build environment currently consists of MSVS2010 with the Win7 SDK and the July 2010 DirectX SDK with ddraw.lib added, so these runtimes will most probably be needed to run the library.
These are strictly experimental builds, and thus the package contains both debug and release binaries.
2011-01-25
VS2010 (http://www.mediafire.com/?lbn8xqj71a117ba) | VS2008 (http://www.mediafire.com/?9olunx1ss6erlj3) | Sources (https://github.com/jeeb/avisynth2/zipball/avisynth26_trunk_20110125)
Could you make them SetMTmode compatible?
Fullmetal Encoder
27th January 2011, 07:02
Well, I can now happily report that I have completely resolved my bizarre KERNELBASE and unknown exception crashes with Avisynth 2.6. It occurred to me to go back and check to make sure that there weren't any memory access issues since this is 32-bit softwares. I found Avisynth crashing with these errors after running up to 1.6GB of RAM used. At first I didn't get it because previously I had tested my script with SetMemoryMax and had gotten the same errors. But I thought I'd test again with a very low limit at 1.2GB and when I did it worked flawlessly, zero crashes. I tested different values and got it up as far as 1500MB without crashing. I took a look at the script with which I had previously tested SetMemoryMax (I kept a record of all the scripts I had been testing) and found that the lowest I had gone in setting the memory limit was 1600MB, which turned out to be lowest level at which the crashes occur :rolleyes: If I just tried the script with 100MB less memory it would have worked.
And now I can report some preliminary test results. The script I've been posting, without invoking SetMTMode processes with 2.6 at about 2.5fps. This is comparable to what I was getting with JoshyD's. When I invoke SetMTMode(5,4) at the top and SetMTMode(2) just before QTGMC I get over 5fps :eek: This is about twice as fast as JoshyD's running the same script with SetMTMode! Although that's a little unfair as I had tested JoshyD's with QTGMC 2.51 the v3.0 wasn't speed related so I don't think there would be much difference.
Thanks to everybody who tried to help with this. It made sense to me when I first started testing with SetMemoryMax to leave some slack between the limit and 2GB but I had no idea it needed to be that large.
yup
10th February 2011, 10:37
Hi all!
I find that YToUV() with YUY2 do not work for Set 2.6 build. VirtualDub try show half horizontal size frame and crash. This reason why do not work nnedi3_rpow2().
yup.
Emulgator
21st February 2011, 17:11
Just playing around:
SEt's avisynth.dll 32 MT Build 2.6.0 2009 09 19 in sysWOW64 on a Win7U64.
CPU i7920XM, 8GB RAM, SetMemoryMax=1536
Uncompressed PAL SD YUV source
AviSource()
RemoveDirtMC()
BlindDeHalo3(...)
MedSharp2(strength=6)
GrainFactory3(....)
Feeding VirtualDub 1.9.10 to render as uncompressed YUV.
Renders 50 frames in VirtualDub 1.9.10, then raises unknown exception.
No matter if script uses SetMTMode or not. Lowering SetMemoryMax to 768 did not help.
The same script on same engine, same system
with straight avisynth.dll 2.5.8.5 non-MT in sysWOW64 :
Both MemoryMax values run properly.
VirtualDub uses ~600MB.
Different system (WinXP32 SP3, CPU T7600G, 4GB RAM), same script
with straight avisynth.dll 2.5.8.5 non-MT in system32:
Both MemoryMax values run properly.
VirtualDub uses ~600MB.
Edit: Now finally I could catch the error message on Win7U64.
On WinXP it disappeared too quickly to even be read...
This time the script was
#---------------------------------------------------------------Sourcefilter-Calls---------------------------------------------------------------------------
AviSource("K:\E.32.00.avi")
#/*#-------------------------------------------------------------AnimeIVTC---------------------------------------------------------------------------------
ComplementParity()#Parity is vital for AnimeIVTC when performing fieldblend PAL to fullframe IVTC !
#ReverseFieldDominance(shiftup=false)#(PAL Only ! YUY2 oder RGB only) ...Like CCE's shift lines by 1
#RevFieldDom: PAL DV is expected to be sampled bottom field first.
#In case of a device sampling top field first this filter can reverse field dominance
#by simply shifting each line up (or down) by one line and duplicating the bottom (respectively top) line.
ConvertToYV12(interlaced=true)#AnimeIVTC needs YV12 !
AnimeIVTC(mode=2, aa=4, precision=3, killcomb=0, cache=15, normconv=true\
, bbob=4, omode=1, dark=0.2, thin=10, sharp=150, smooth=-1, stabilize=false, aablk=8, aaov=4, aatype="EEDI2")
#(clip i, int "mode", int "aa", int "precision", int "killcomb", int "cache", bool "ifade"\
# , bool "chrfix"\
# , bool "blend"\
# , bool "normconv"\
# , int "pattern"\
# , int "pass", bool "rendering" \
# , int "bbob", int "cbob", string "edimode", int "degrain", int "omode"\
# , int "i1", int "i2", int "e1", int "e2", int "e3", int "p1", int "p2" \
# , int "overlap", int "pel", int "search", bool "nnedi2pel", string "credconv"\
# , float "dark", int "thin", int "sharp", int "smooth", bool "stabilize", int "tradius"\
# , int "aapel", int "aaov", int "aablk", string "aatype")
#*/#--------------------------------------------------------End of AnimeIVTC-------------------------------------------------------------------------------
#/*#--------------------------------------------------------Spatial Frame Pre-Alignment-------------------------------------------------------------------
# Before Roll-Decimating a film scan, you may have to align the borders first ! Often film scans are skewed !
# VCMohan's plugins needed here: Grid, Perspective, Spinner, Reform=deskew+skew. Avoid Reform, poor resizer !
#grid(sf=0, ef=framecount, lineint=10, bold=5, vbold=2, grid=true, axis=true)#Comment grid in to see where the transformations end up
ConvertToRGB#Perspective needs RGB !
Addborders(2, 2, 2, 2)#Perspective has to discard 2 border pixels for calculations and makes these black, we pad up borders before with 2 pixels black
perspective(a=-0.00001, b=0.0, x=+1400, y=0)#Perspective needs RGB !
Crop(2, 2, -2, -2)#Perspective introduced a 2 pixel black border, we padded these up, now we crop them off
#grid(sf=0, ef=framecount, lineint=10, bold=5, vbold=2, grid=true, axis=true)#Comment grid in to see where the transformations end up
#ConvertToYV12(interlaced=true)#(RGB was needed for Perspective only)
#spinner(check=false, angle=+0.7, q=4)# sometimes exceptions thrown...
# Deskew transforms a Quadrilateral part of the frame (source at least 1 pixel per side smaller than frame)
# into a Rectangle within the frame (at least 1 pixel per side smaller than frame) Result shows stairstepping ! Poor resizer (point??)
#deskew(last, blankclip, ltopx=2, ltopy=2, lbotx=12, lboty=height-2, rtopx=width-2, rtopy=2, rbotx=width-2, rboty=height-2, resize="cubic")
#/*#------------------------------------------------------End of Spatial Frame Pre-Alignment-------------------------------------------------------------
#--------------------------------------------------Intermediate Conversions, Resizing, Assumptions------------------------------------------------------
AssumeFPS(25)#If the result of any Pulldown-Removal into 24p is to be fed into an Edius PAL-Project. Otherwise Edius will reblend 24p->25p !!!
#------------------------------------------------End of Intermediate Conversions, Resizing, Assumptions------------------------------------------------
nhope
18th April 2011, 08:22
I haven't tried this myself but I understand that AviSynth 2.6 MT will not accept RGB24 input. Is this so and has it been permanently dropped? If I move to 2.6 MT I would miss RGB24 support as RGB32 is slower than RGB24 in my workflow (Sony Vegas > Debugmode Frameserver > AviSynth).
kemuri-_9
18th April 2011, 13:02
I haven't tried this myself but I understand that AviSynth 2.6 MT will not accept RGB24 input. Is this so and has it been permanently dropped? If I move to 2.6 MT I would miss RGB24 support as RGB32 is slower than RGB24 in my workflow (Sony Vegas > Debugmode Frameserver > AviSynth).
I don't know where you heard the fact that avisynth 2.6 dropped RGB24 support...
but that's a complete lie: It's still supported.
IanB
19th April 2011, 00:38
AviSource() had RGB24 borked some time ago. There was a 2.58 alpha with this bug. May be SEt's build has that bug, I don't track 3rd party build, so you will have to do some archaeology to confirm or refute the issue.
Working file: avi_source.cpp
----------------------------
revision 1.14
date: 2008/07/15 06:23:21; author: ianb1957; state: Exp; lines: +10 -3
Fix RGB24 processing, add guard bytes to decompression input buffer
----------------------------
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.