Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion.

Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules.

 

Go Back   Doom9's Forum > Capturing and Editing Video > Avisynth Development

Reply
 
Thread Tools Search this Thread Display Modes
Old 7th April 2006, 02:31   #21  |  Link
IanB
Avisynth Developer
 
Join Date: Jan 2003
Location: Melbourne, Australia
Posts: 3,167
@AVIL, (and others),

Plugins and applications requiring SetPlanarLegacyAlignment are broken and need to be fixed before 2.6 hits the streets. Please report such issues to the authors of the software.

Code that needs the Pitch of a video plane must not assume any alignment or relationship, alway use the GetPitch() method.

@Squid,

Yes the internal code for all this seems 2 GB limited everywhere, you're probably right on the money about it being a cut and paste of the same dumb code everywhere.

The quick debug I did shows the code is probably using long everywhere instead of ulong or __int64
Code:
long lFilePos = lStart * lBytesPerSample + lOffset
Probably should reimport the vdub code before we get carried away putting __int64 everywhere. Perhaps a RIFF aware raw audio file reader could be usefull.
IanB is offline   Reply With Quote
Old 7th April 2006, 09:42   #22  |  Link
squid_80
Registered User
 
Join Date: Dec 2004
Location: Melbourne, AU
Posts: 1,963
I've already imported most of the vdub code, for the most part it is equivalent to putting __int64 in all the right places; it just calls it VDPosition or sint64 instead of __int64 (via typedef). Still uses mmio or AVIFile routines, so it is limited like Avery said. I was thinking it might be possible to write a custom I/O procedure to plug in to mmioInstallIOProc, and use mmioSendMessage instead of mmioSeek when the offset is larger than 0x7FFFFFFF.

What I don't understand is why mmio and avifile will quite happily read over the 2gb boundary, but hurk if you seek past it then attempt to read. I even tried setting lDiskOffset manually using mmioGetInfo/SetInfo, but no dice.

Last edited by squid_80; 7th April 2006 at 09:45.
squid_80 is offline   Reply With Quote
Old 7th April 2006, 15:23   #23  |  Link
IanB
Avisynth Developer
 
Join Date: Jan 2003
Location: Melbourne, Australia
Posts: 3,167
Quote:
Originally Posted by squid_80
What I don't understand is why mmio and avifile will quite happily read over the 2gb boundary, but hurk if you seek past it then attempt to read.
There are no special read calls for huge files. All the kernel calls like ReadFile, _lread, _hread just read the next sequential data so they just don't know or care when you cross a 2gb boundary.

However doing a seek on huge files is a pain. All the old calls like _lseek have signed 32 bit args so they "hurk" as you say. Interestingly relative mode seeking seems to work, so I guess the mm/av code must all use absolute mode seeking. Even the modern call SetFilePointer is a pain to drive for huge files access. So a lot of slack code just ignores the high order 32 bit pointer arg and so you are stuck in a 2 gb world still. The avi code is certainly old enough to be using _lseek or a slack implementation of SetFilePointer. And M$ want to disown AVI and do everything in their nasty proprietory ASF format, so I guess they see 2gb as a lever.


If you are serious about doing a reimport of the VDub code please check it into the avisynth_2_6 CVS branch. If it is low fuss enough we can retrofit it to the 2.5.7 base. From what you are saying and from what I am seeing breaking the 2gb barrier is well out of scope for a bug fix release, it's going to be a major step with lots of testing and bugs.
IanB is offline   Reply With Quote
Old 19th April 2006, 14:25   #24  |  Link
foxyshadis
ангел смерти
 
foxyshadis's Avatar
 
Join Date: Nov 2004
Location: Lost
Posts: 9,558
I was going to ask for a way to cache function calls without their internals (sort of a heigharchial cache or something, where different entries have different merits), but now I kind of suspect you're already doing it? I have a script that uses about 70 megs of cache per frame, and it tops out after 10 frames, but the final frame is still in cache and accessible to temporal filters for at least 40 frames! Is this just random chance, or is the cache really that smart?
foxyshadis is offline   Reply With Quote
Old 19th April 2006, 15:47   #25  |  Link
IanB
Avisynth Developer
 
Join Date: Jan 2003
Location: Melbourne, Australia
Posts: 3,167
Yes, this is the intended behaviour.

All cache instances remember there accessed frame numbers. When you start re-hitting pre-loved frame numbers, that particular cache instance starts asking the memory manager to "promote" any vfb's it receives to the front of the LRU chain.

So in your case as the top cache instance is being asked for pre-loved frames it starts promoting it's vfb's. During the first 10 frames (while the LRU is filling) it will be certainly satisfying any requests from cache, thus lower cache instances never see any re-hits. After the cache has filled, the top instance has a head start, and continued success means it will be the only cache instance being asked for pre-loved frames.

Last edited by IanB; 3rd May 2006 at 13:47. Reason: ping
IanB is offline   Reply With Quote
Old 3rd May 2006, 13:54   #26  |  Link
IanB
Avisynth Developer
 
Join Date: Jan 2003
Location: Melbourne, Australia
Posts: 3,167
Anybody got any installation problems to report?

No forensics, no diagnosis, no resolution!
IanB is offline   Reply With Quote
Old 6th May 2006, 03:06   #27  |  Link
ricardo.santos
Registered User
 
ricardo.santos's Avatar
 
Join Date: Mar 2005
Location: Portugal
Posts: 907
altough i get the following error, after i press OK the instalation goes on.

will test it tomorrow and let you know of any problems(if any)

ricardo.santos is offline   Reply With Quote
Old 7th May 2006, 03:45   #28  |  Link
IanB
Avisynth Developer
 
Join Date: Jan 2003
Location: Melbourne, Australia
Posts: 3,167
@ricardo.santos,

Thank you very much, just the data I needed to see, and you repositioned the dialogs to show everything. You are a champ! We need more tester like you

It seems the files in your plugin directory are protected somehow (possible Readonly?), so for this install the DirectShowSource.dll, TCPDeliver.dll and colors_rgb.avsi files will not have been updated. Please check the attributes and permissions on these 3 files and report what the status is.

It seems the "if errors ...." statement in the script regards "skipped:" files as an error. DAMN!

In the Alpha 3 release I changed the install mode from forced to ask, looks like this is going to have some positive benefits in helping with this problem.

Before you fix the attribute/permisions of the 3 plugin files can you download and install the 2.5.7 Alpha 3. It should display the installers conditional file install question. Clicking Yes should force overwrite the problem file if they are simply marked Readonly. Other restrictions will need to be manually corrected, and clicking yes after fixing should give a succesful install.

Your help in resolving this matter is very greatly appreciated.
IanB, Avisynth Team
IanB is offline   Reply With Quote
Old 4th June 2006, 01:45   #29  |  Link
Adub
Fighting spam with a fish
 
Adub's Avatar
 
Join Date: Sep 2005
Posts: 2,699
Uh, hi all. I don't know if this is the right thread but I am having trouble with RemoveGrain, RemoveDirt, and RemoveNoiseMC right now.

I get this error message:
Quote:
CAVIStreamSynth: System Exception - 0xc000001e
Would updating to Alpha 3 help? I am using Alpha 2.
__________________
FAQs:Bond's AVC/H.264 FAQ
Site:Adubvideo
Adub is offline   Reply With Quote
Old 5th June 2006, 09:11   #30  |  Link
IanB
Avisynth Developer
 
Join Date: Jan 2003
Location: Melbourne, Australia
Posts: 3,167
0xC000001E: "An attempt was made to execute an invalid lock sequence"

What Processor are you running?

Typically trying to execute a LOCK MOV ...., etc, sequence on some processors will cause this error. Question is where is it coming from. The compile shouldn't generate this code, I certainly know not to try it ( I hope others do as well). Posssibly it is executing data or spewed upon code and accidently coming across this sequence. (Run some memory diags!)

2.5.7 Alpha 3 should not change this, unless the subtly different code order effects such an insideous bug. An older version without the XPsp2 MSVCRT.DLL workaround code may give better diagnostic information.
IanB is offline   Reply With Quote
Old 5th June 2006, 11:40   #31  |  Link
ricardo.santos
Registered User
 
ricardo.santos's Avatar
 
Join Date: Mar 2005
Location: Portugal
Posts: 907
Hi IanB

I completely forgot to get back to you with the reslts of installing the Apha release 3.

when installing it everything went ok, no pop up messages etc.

Thanks

Ricardo
ricardo.santos is offline   Reply With Quote
Old 6th June 2006, 01:29   #32  |  Link
Adub
Fighting spam with a fish
 
Adub's Avatar
 
Join Date: Sep 2005
Posts: 2,699
I am running an intel p4 2.4 ghz processor, I can't run memtest yet as I don't have access to the compter but as soon as I can I will tell you if anything comes up.

Would you suggest I go back to 2.56? I don't have a huge need for 2.57 and 2.56 is stable.
__________________
FAQs:Bond's AVC/H.264 FAQ
Site:Adubvideo
Adub is offline   Reply With Quote
Old 14th June 2006, 09:33   #33  |  Link
Adub
Fighting spam with a fish
 
Adub's Avatar
 
Join Date: Sep 2005
Posts: 2,699
Okay I ran memtest 86 today. No errors.

If I change back to 2.56 will it help? I just want to be able to use all of my Avisynth functions and plugins to their full capacity again.
__________________
FAQs:Bond's AVC/H.264 FAQ
Site:Adubvideo
Adub is offline   Reply With Quote
Old 14th June 2006, 14:28   #34  |  Link
IanB
Avisynth Developer
 
Join Date: Jan 2003
Location: Melbourne, Australia
Posts: 3,167
Quote:
Originally Posted by Merlin7777
If I change back to 2.56 will it help?
It might. Certainly you should test with 2.5.6 and report the result. If the problem still occurs 2.5.6 should at least give the address of the failing instruction. If not then we have a 2.5.7 problem to track down. Exception ...1E's should never happen and most likely is the result of trying to execute crap from a memory scribble or stack corruption.

Also
IanB is offline   Reply With Quote
Old 17th June 2006, 01:26   #35  |  Link
Adub
Fighting spam with a fish
 
Adub's Avatar
 
Join Date: Sep 2005
Posts: 2,699
Okay, the error does not show up with RemoveGrain any more for some reason but it does show up with RemoveNoiseMC.

Here is my script. very basic test.

Quote:
DgDecode_mpeg2source("C:\Documents and Settings\Merlin\Desktop\Movies\USA Parkour\usa.parkour[1].d2v")
RemoveNoiseMC()
I will test if it works with 2.56
__________________
FAQs:Bond's AVC/H.264 FAQ
Site:Adubvideo
Adub is offline   Reply With Quote
Old 17th June 2006, 01:50   #36  |  Link
Adub
Fighting spam with a fish
 
Adub's Avatar
 
Join Date: Sep 2005
Posts: 2,699
It works!!!
With version 2.56 it works!!! yey!

Although this means a possible bug. Not good.
__________________
FAQs:Bond's AVC/H.264 FAQ
Site:Adubvideo
Adub is offline   Reply With Quote
Old 18th June 2006, 05:48   #37  |  Link
IanB
Avisynth Developer
 
Join Date: Jan 2003
Location: Melbourne, Australia
Posts: 3,167
Okay this may be a plane alignment/pitch thing. Please try these 2 scripts with 2.5.7 and 2.5.6 respectivly.
Code:
DgDecode_mpeg2source("C:\Documents and Settings\Merlin\Desktop\Movies\USA Parkour\usa.parkour[1].d2v")
RemoveNoiseMC()
SetPlanarLegacyAlignment(True) # For 2.5.7 to work?
Code:
DgDecode_mpeg2source("C:\Documents and Settings\Merlin\Desktop\Movies\USA Parkour\usa.parkour[1].d2v")
RemoveNoiseMC()
SetPlanarLegacyAlignment(False) # For 2.5.6 to fail?
IanB is offline   Reply With Quote
Old 18th June 2006, 19:45   #38  |  Link
Adub
Fighting spam with a fish
 
Adub's Avatar
 
Join Date: Sep 2005
Posts: 2,699
Nope. 2.57 fails with both scripts and 2.56 works with both scripts.
Sorry dude.
__________________
FAQs:Bond's AVC/H.264 FAQ
Site:Adubvideo
Adub is offline   Reply With Quote
Old 19th June 2006, 08:52   #39  |  Link
IanB
Avisynth Developer
 
Join Date: Jan 2003
Location: Melbourne, Australia
Posts: 3,167
Okay it's not an alignment/ pitch thing.

First try this, i.e. with BlankClip() substitution...
Code:
DgDecode_mpeg2source("C:\Documents and Settings\Merlin\Desktop\Movies\USA Parkour\usa.parkour[1].d2v")
BlankClip(Last)
RemoveNoiseMC()
Next transcribe a smallish chunk of your mpeg into Huffyuv, DivX or something .AVI file, and try this...
Code:
AviSource("C:\Documents and Settings\Merlin\Desktop\Movies\USA Parkour\usa.parkour[1].AVI")
RemoveNoiseMC()
Also are you currently testing againsts 2.5.7 Alpha 2 and/or Alpha 3?
IanB is offline   Reply With Quote
Old 20th June 2006, 23:56   #40  |  Link
Adub
Fighting spam with a fish
 
Adub's Avatar
 
Join Date: Sep 2005
Posts: 2,699
Well I am using alpha 2 only, not alpha 3, and I just tested the first script/ blank clip function and it didn't work. I am now transcoding the video to avi really quick.

Okay done. Ran the Avisource script and it too shows the error.
__________________
FAQs:Bond's AVC/H.264 FAQ
Site:Adubvideo

Last edited by Adub; 20th June 2006 at 23:58.
Adub is offline   Reply With Quote
Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 20:17.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.