mso6jx
17th December 2024, 19:03
I thought I'd give VirtualDub2.1 a go - but immediately had problems, so had to revert to v2.0. My setup:
- Windows 10 Pro 22H2 19045.5247
- VirtualDub2.0 Build 44282
- Avisynth+ 3.7.3
- fddshow x64 v1.3.4533
- Lagarith Lossless Codec (1.3.27)
By way of example, an Avisynth script as simple as this fails to open in versions of 64bit VirtualDub2 NEWER than Build 44282:
source = AVISource("crash.avi")
Eval("source")
The message is:
File open error
Avisynth open failure:
System exception - Access Violation
Significantly, Lagarith videos do NOT provoke this issue.
The issue appears to be specific to videos saved in formats that Avisynth relies on ffdshow to decode - in my case, FFV1 files from deinterlaced VHS captures.
All versions of ffdshow (starting from the first one that enables Avisynth to decode FFV1) behave the same.
(As an aside, I did try replacing ffdshow with ffms2 or LSMASH as alternative FFV1 decoders, but my 10GB+ video files take FOREVER to be indexed, so I gave up!)
With my current setup (above) I can continue to work fine with FFV1 video in AVS scripts using ffdshow and VirtualDub2.0
However, there is a similar issue with VirtualDub2.0 - in fact, this was my original problem, and only while looking for a workaround did I stumble upon issue#1.
(It replicates in all earlier versions of VirtualDub2, all the way back to VirtualDub FilterMod.)
I have a complex Avisynth script that opens several large FFV1 videos, performs dozens of edits, and outputs a final version.
It works exactly as it should, but very slowly, rendering at just 9fps and using only 17% CPU.
To try to speed things up, I added a Prefetch() line to my script, and this did happily give me a four-fold speed increase to 36fps, using 90%+ CPU. But then I noticed a problem.
Issue#2 is this - when Prefetch() is included in the script, VirtualDub2.0 crashes when selecting a specific GUI menu.
It happens after opening the script when, prior to saving the video, I select "Video>Compression..."
Virtual2 Program Failure
Oops - VirtualDub has crashed. Details are listed below
etc
Crash reason: Access Violation
Crash context:
An out-of-bounds memory access (access violation) occurred at 7fffb10f52e9...
...reading address 0000000000000040...
...while querying video codec "ffdshow Video Codec" (compchoose.cpp:420)...
...while opening video codec with FOURCC "ffds" (compchoose.cpp:528)...
...while enumerating video codecs (compchoose.cpp:515).
(I haven't yet narrowed this one down to a simple reproducible example that I can share here in a readily describable fashion, sorry.)
My workaround is simple: set Compression *before* opening the script, not afterwards.
However, I can still only work with one script, and just once, before VirtualDub2 must be closed and relaunched.
Even opening the same script a second time in the same session is not possible.
By which I mean, select "File>Close video file" followed by "File>Open video file..." and select the same script.
An Access Violation error message pops up, and it's identical to the "Avisynth open failure" described in issue#1!
To be clear, all VirtualDub2 versions up to Build 44282 can't open my big script twice, and all later builds can't open my big script even once.
I'm mentioning both issues together here because of their "Access Violation" similarity, and an apparent common connection with ffdshow.
Perhaps there is a single underlying cause?
Sorry for the length of this post. Hope it wasn't TLDR, as they say ;o)
- Windows 10 Pro 22H2 19045.5247
- VirtualDub2.0 Build 44282
- Avisynth+ 3.7.3
- fddshow x64 v1.3.4533
- Lagarith Lossless Codec (1.3.27)
By way of example, an Avisynth script as simple as this fails to open in versions of 64bit VirtualDub2 NEWER than Build 44282:
source = AVISource("crash.avi")
Eval("source")
The message is:
File open error
Avisynth open failure:
System exception - Access Violation
Significantly, Lagarith videos do NOT provoke this issue.
The issue appears to be specific to videos saved in formats that Avisynth relies on ffdshow to decode - in my case, FFV1 files from deinterlaced VHS captures.
All versions of ffdshow (starting from the first one that enables Avisynth to decode FFV1) behave the same.
(As an aside, I did try replacing ffdshow with ffms2 or LSMASH as alternative FFV1 decoders, but my 10GB+ video files take FOREVER to be indexed, so I gave up!)
With my current setup (above) I can continue to work fine with FFV1 video in AVS scripts using ffdshow and VirtualDub2.0
However, there is a similar issue with VirtualDub2.0 - in fact, this was my original problem, and only while looking for a workaround did I stumble upon issue#1.
(It replicates in all earlier versions of VirtualDub2, all the way back to VirtualDub FilterMod.)
I have a complex Avisynth script that opens several large FFV1 videos, performs dozens of edits, and outputs a final version.
It works exactly as it should, but very slowly, rendering at just 9fps and using only 17% CPU.
To try to speed things up, I added a Prefetch() line to my script, and this did happily give me a four-fold speed increase to 36fps, using 90%+ CPU. But then I noticed a problem.
Issue#2 is this - when Prefetch() is included in the script, VirtualDub2.0 crashes when selecting a specific GUI menu.
It happens after opening the script when, prior to saving the video, I select "Video>Compression..."
Virtual2 Program Failure
Oops - VirtualDub has crashed. Details are listed below
etc
Crash reason: Access Violation
Crash context:
An out-of-bounds memory access (access violation) occurred at 7fffb10f52e9...
...reading address 0000000000000040...
...while querying video codec "ffdshow Video Codec" (compchoose.cpp:420)...
...while opening video codec with FOURCC "ffds" (compchoose.cpp:528)...
...while enumerating video codecs (compchoose.cpp:515).
(I haven't yet narrowed this one down to a simple reproducible example that I can share here in a readily describable fashion, sorry.)
My workaround is simple: set Compression *before* opening the script, not afterwards.
However, I can still only work with one script, and just once, before VirtualDub2 must be closed and relaunched.
Even opening the same script a second time in the same session is not possible.
By which I mean, select "File>Close video file" followed by "File>Open video file..." and select the same script.
An Access Violation error message pops up, and it's identical to the "Avisynth open failure" described in issue#1!
To be clear, all VirtualDub2 versions up to Build 44282 can't open my big script twice, and all later builds can't open my big script even once.
I'm mentioning both issues together here because of their "Access Violation" similarity, and an apparent common connection with ffdshow.
Perhaps there is a single underlying cause?
Sorry for the length of this post. Hope it wasn't TLDR, as they say ;o)