Stuff

What is VirtualDub?

VirtualDub is a video capture/processing utility for 32-bit and 64-bit Windows platforms (98/ME/NT4/2000/XP/Vista/7), licensed under the GNU General Public License (GPL). It lacks the editing power of a general-purpose editor such as Adobe Premiere, but is streamlined for fast linear operations over video. It has batch-processing capabilities for processing large numbers of files and can be extended with third-party video filters. VirtualDub is mainly geared toward processing AVI files, although it can read (not write) MPEG-1 and also handle sets of BMP images.

I basically started VirtualDub in college to do some quick capture-and-encoding that I wanted done; from there it's basically grown into a more general utility that can trim and clean up video before exporting to tape or processing with another program. I released it on the web and others found it useful, so I've been tinkering around with its code ever since. If you have the time, please download and enjoy.

MSDN has code to detect whether a controller device enumerated by the DirectInput API is also an XInput device, so that programs can avoid reporting the same controller twice when both APIs are supported:

Be warned, there is a memory leak in the supplied IsXInputDevice() function: the VARIANT returned by IWbemClassObject::Get() needs to be freed with VariantClear() after the device string is checked. This is hard to notice if you just drop in the code, as it only triggers on device enumeration and that likely only happens on startup or when a device change notification is received. I only noticed it because I temporarily modified my device enumeration code to run in a loop to see how fast (or slow) the WMI-based check would be.

VirtualDub 1.10.4 is out. It has a number of bug fixes, some small additions to the external encoding and filter color support, and addresses a small compatibility issue with the Direct3D display path and Windows 8.1.

This version also finally replaces 1.9.11 as the stable version. Many regressions have been resolved due to the amount of time that the 1.10.x branch has had to cook, and I don't like the "eternal beta" model of development. I know my work on VirtualDub has been very slow, which I apologize for, but I'd like to thank everyone who tested the experimental and test releases and reported problems.