Current version

v1.10.4 (stable)


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


Blog Archive

VirtualDub 1.6.2 released

It's been a while since I've done a real update, so I figured I might as well make it a big one.

This version fixes some more regressions and gets closer to stable for the editing mode, but more importantly, this version is what I consider "first viable" for basically what has been a complete rewrite of the capture module since 1.5.10. The 1.6.2 capture module is much more modular and flexible; most of the globals are gone and there are now well-defined interfaces in between layers. The primary benefit is that VirtualDub is now able to interface to both Video for Windows and DirectShow for capture, which means that WDM capture drivers now work much better.

As for the details....

First, the capture module no longer selects a device by default on open. Wheeeee. Next.

Direct support for VFW devices is still there, although the old AVICap capture mode is gone; VirtualDub now always uses its own I/O routines. This removed a lot of the cruft from the capture module and eliminated some of the confusion in the UI. (AVICap doesn't allow you to set or get video compression settings programmatically, which is why 1.5.10 had two "set compression" options in the video menu.) There are some issues with the VFW module, however -- it doesn't report errors very well and DirectDraw acceleration (now Display acceleration) doesn't mask the native preview, which leads to lower performance than 1.5.10; both of these will be fixed in a later version.

The DirectShow driver, which is based on DirectX 9.0c, is still in heavy development. Its major limitation in this release is that it cannot capture from both a video capture device and a sound card, so you will only get sound if your capture device captures both audio and video by itself. I also haven't done much work in poking settings directly in the various filters in the filter graph so finding settings is a bit rough; generally the video format settings are on the capture filter and the input setting (Composite/S-Video) is on the video crossbar. DV, MPEG-1, and MPEG-2 capture won't work as I don't have support for those sample types; I haven't looked into what it would take yet. There are some problems with the Sample Grabber filter that I'm currently using, and I need to replace it with a custom filter/DMO with better media type support.

Note that any VFW devices will show up as both VFW devices and DirectShow devices using the VFW wrapper filter; the latter will show up as (VFW>DirectShow) in the device list. You will likely get better performance using a VFW device with the VFW driver than using it through DirectShow. I currently do some ugly workarounds in the DirectShow driver for various problems, such as attaching a null renderer to any audio capture pin in order to avoid severe stuttering on video preview. DirectShow is a wonderful API; for any given operation, such as seeking within a stream, there will be six ways to do it, only three of which will be available in your filter graph and only one of which will actually work, assuming that you don't call it at the wrong time and trigger a deadlock.

There is a third driver, the Emulation driver, that takes a video file and plays it back as though it were a video input source. This driver uses the same source code to play files as the edit mode so it really isn't useful for anything other than debugging the capture module. You might find it useful if you want to see how a video capture session would run, however.

There are also a couple additional features that are not specific to a particular capture driver:

Using 1.6.2, I was successfully able to capture an entire episode of PrĂ©tear with MPEG-4 video compression using my Plextor PX-M402U. (I never said all of the anime in my testing collection was good anime.) Note that this device in particular doesn't capture compressed audio; this is done in software with the supplied software bundle, so when you use it in VirtualDub you will only be able to capture uncompressed PCM as the raw audio format. This is probably just as well as VirtualDub can't read MPEG-1 layer II audio tracks. For best results, when using the PX-M402U, disable early frame drops under Capture/Timing -- the timing is accurate enough and drops are disasterous with compressed video -- and set the capture format to DivX MPEG-4 under Video/Capture Filter.

There are a couple of minor improvements to the edit mode, such as AVI tagging, and support for decoding PNG files. I was disappointed to find when implementing the AVI tags that the AVI format stores text as 8-bit and doesn't have a functional way to set the character set; the CSET chunk is supposed to do this but Windows Media Player doesn't recognize it, so foreign characters don't work reliably. Rats. My PNG decoder is terrible and doesn't support interlaced files, but it works on most of the files that I have and I figured I'd throw it in. I have prototype compressor code for the Deflate format, which would be needed for PNG encoding, but currently it doesn't compress as well as gzip.

Changes for 1.6.2:

 Build 22651 (1.6.2, experimental): [December 12, 2004]
    [features added]
    * Capture: Improved Unicode support.
    * Capture: DirectShow video capture support.
    * Capture: Enhanced volume meter.
    * Capture: Alternate audio resampling mode for reduced
      frame drops when resyncing.
    * Capture: Audio compression now occurs after resampling
      for better timing.
    * Capture: Stop hotkeys are no longer system global.
    * PNG images are now supported for read.
    * AVI info tags are now supported. 

    [bugs fixed]
    * Fixed occasional crash when using DirectX display mode
      with 8-bit display.
    * Appending type-1 DV AVIs caused the output AVI to have
      the wrong stream type.
    * Fixed rare junk displays when overlay playback is enabled,
      caused by selection of overlay formats that the bitmap
      library cannot support conversions to.
    * Fixed source formatting tags in timeline strings
      reporting huge frame numbers at the end of the timeline.
    * Fixed garbage when attempting to convert Pal8 to Y8. 

    [regressions fixed]
    * Fixed slowdown in shuttle commands.
    * 24-bit video depth settings in configuration files saved
      from 1.5.x were being imported as 16-bit.
    * Fixed crash when switching to frameserver mode.
    * Fixed crash when attempting to finalize AVI file after a
      disk full or file size error.
    * Fixed expression evaluation errors in scripting language.
    * Fixed intermitted crash in Preferences dialog related to
      enable links.
    * Fixed crash when attempting to play 8-bit paletted AVI


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.