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.
Hello, it's been quite a long time.
Needless to say, the real world caught up with me a long time ago and I ran out of time/motivation to update the blog, so it sat stagnant for several years. I've finally gotten around to replacing the old and unmaintained blogging software with a static generator, so the blog is now just plain static pages. The process was kind of hacky -- fetch the existing blog with curl, parse it with a regex script in Python, and feed it to the homegrown not-XSLT generator that I had -- but it works, and now it's UTF-8 (ish) and gzip-optimized. (Read more....)
¶Bug in XInput/DirectInput detection sample
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. (Read more....)