Current version

v1.10.4 (stable)


Main page
Archived news
Plugin SDK
Knowledge base
Contact info
Other projects


Blog Archive

VirtualDub 1.9.10 released

New stable release is out -- as usual, no new features, but a handful of bug fixes.

The first important bug fix is that the dwInitialFrames field is now unilaterally cleared when writing AVI files. In some cases, VirtualDub was passing this value through from source files, which caused compatibility problems as some players didn't like non-zero values. Like many header fields, this one is also underdocumented in Microsoft docs, is misinterpreted by various players, and isn't supposed to have any effect on audio sync or sample timing. Some users were encountering issues with this value being left non-zero, though, so the program now always zeroes it.

The second fix is one that was lurking for a while, but didn't appear until some recent feature additions, and was the issue that prompted this release. There was a bug in the thread tracking code that caused a handle leak for all unnamed threads. Most of VirtualDub's threads are named, as you'll discover if you run it under a debugger, but it turns out that the threads used for multithreaded compression weren't. This manifested as an occasional Invalid Handle exception when running a lot of jobs with threaded compression enabled. That's now fixed, so you should now see better stability on such operations.

There has been some confusion about the difference between test/dev/stable releases, and why the dev-test releases have features that don't appear in the stable releases. Some time ago, I switched over to a branched development environment, where the stable releases use a different code line than the dev tree. The reason for this is that it allows me to push only selected fixes into the stable branch and produce clean releases. In the past, I had a couple of accidents where temporary testing hacks ended up getting pushed out with fixes, which then forced me to do an oops-re-release. I hate doing that, so now I use multiple branches to segregate the work. The test versions are quick builds that I do on either line so that users encountering an issue or wanting a feature can take a look at the latest bits; this allows for much faster iteration, but the downside is that those are literally just the latest bits off the code line and about the only guarantee is that it compiles, which is why I don't publish them more formally. These versions are all tagged with -prerelease on startup, so you'll know if you're running one of those.

Changes in this version:

Build 32839 (1.9.10, stable): [September 5, 2010]
   [bugs fixed]
   * Fixed icon on status dialog.
   * Fixed crash in scene detector with UYVY/YUY2 input.
   * Fixed thread handle leak for unnamed threads.
   * Modified audio display waveform draw code to avoid broken lines when
     zoomed in.
   * UI: Fixed curve editor not reselecting the right curve after some video
     filter list manipulations.
   * Decoders: Fixed crash in Huffyuv decoder with invalid non-adaptive
     Huffman tables.
   * AVI: The palette change flag is now stripped when rewriting streams.
   * AVI: dwInitialFrames is now forced to zero in all cases for better


This blog was originally open for comments when this entry was first posted, but was later closed and then removed due to spam and after a migration away from the original blog software. Unfortunately, it would have been a lot of work to reformat the comments to republish them. The author thanks everyone who posted comments and added to the discussion.