Current version

v1.10.4 (stable)


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



01 Dec - 31 Dec 2013
01 Oct - 31 Oct 2013
01 Aug - 31 Aug 2013
01 May - 31 May 2013
01 Mar - 31 Mar 2013
01 Feb - 29 Feb 2013
01 Dec - 31 Dec 2012
01 Nov - 30 Nov 2012
01 Oct - 31 Oct 2012
01 Sep - 30 Sep 2012
01 Aug - 31 Aug 2012
01 June - 30 June 2012
01 May - 31 May 2012
01 Apr - 30 Apr 2012
01 Dec - 31 Dec 2011
01 Nov - 30 Nov 2011
01 Oct - 31 Oct 2011
01 Sep - 30 Sep 2011
01 Aug - 31 Aug 2011
01 Jul - 31 Jul 2011
01 June - 30 June 2011
01 May - 31 May 2011
01 Apr - 30 Apr 2011
01 Mar - 31 Mar 2011
01 Feb - 29 Feb 2011
01 Jan - 31 Jan 2011
01 Dec - 31 Dec 2010
01 Nov - 30 Nov 2010
01 Oct - 31 Oct 2010
01 Sep - 30 Sep 2010
01 Aug - 31 Aug 2010
01 Jul - 31 Jul 2010
01 June - 30 June 2010
01 May - 31 May 2010
01 Apr - 30 Apr 2010
01 Mar - 31 Mar 2010
01 Feb - 29 Feb 2010
01 Jan - 31 Jan 2010
01 Dec - 31 Dec 2009
01 Nov - 30 Nov 2009
01 Oct - 31 Oct 2009
01 Sep - 30 Sep 2009
01 Aug - 31 Aug 2009
01 Jul - 31 Jul 2009
01 June - 30 June 2009
01 May - 31 May 2009
01 Apr - 30 Apr 2009
01 Mar - 31 Mar 2009
01 Feb - 29 Feb 2009
01 Jan - 31 Jan 2009
01 Dec - 31 Dec 2008
01 Nov - 30 Nov 2008
01 Oct - 31 Oct 2008
01 Sep - 30 Sep 2008
01 Aug - 31 Aug 2008
01 Jul - 31 Jul 2008
01 June - 30 June 2008
01 May - 31 May 2008
01 Apr - 30 Apr 2008
01 Mar - 31 Mar 2008
01 Feb - 29 Feb 2008
01 Jan - 31 Jan 2008
01 Dec - 31 Dec 2007
01 Nov - 30 Nov 2007
01 Oct - 31 Oct 2007
01 Sep - 30 Sep 2007
01 Aug - 31 Aug 2007
01 Jul - 31 Jul 2007
01 June - 30 June 2007
01 May - 31 May 2007
01 Apr - 30 Apr 2007
01 Mar - 31 Mar 2007
01 Feb - 29 Feb 2007
01 Jan - 31 Jan 2007
01 Dec - 31 Dec 2006
01 Nov - 30 Nov 2006
01 Oct - 31 Oct 2006
01 Sep - 30 Sep 2006
01 Aug - 31 Aug 2006
01 Jul - 31 Jul 2006
01 June - 30 June 2006
01 May - 31 May 2006
01 Apr - 30 Apr 2006
01 Mar - 31 Mar 2006
01 Feb - 29 Feb 2006
01 Jan - 31 Jan 2006
01 Dec - 31 Dec 2005
01 Nov - 30 Nov 2005
01 Oct - 31 Oct 2005
01 Sep - 30 Sep 2005
01 Aug - 31 Aug 2005
01 Jul - 31 Jul 2005
01 June - 30 June 2005
01 May - 31 May 2005
01 Apr - 30 Apr 2005
01 Mar - 31 Mar 2005
01 Feb - 29 Feb 2005
01 Jan - 31 Jan 2005
01 Dec - 31 Dec 2004
01 Nov - 30 Nov 2004
01 Oct - 31 Oct 2004
01 Sep - 30 Sep 2004
01 Aug - 31 Aug 2004


Powered by Pivot  
XML: RSS feed 
XML: Atom feed 

§ VirtualDub 1.6.12 released

VirtualDub 1.6.12 has been posted to SourceForge. It took a long time primarily because I spent a lot of time reworking the timing logic in the capture module and going back and forth with some users who were willing to test internal builds with varying balances of breakage and functionality. Special props go to the users with handles Moitah and i4004 on the forums, who graciously spent a lot of time telling me that my resynchronizer sucked and that giving me hard data as to what was going on. Because the resynchronizer was quite heavily reworked, and because I sneaked in several features, both capture and non-capture, this build is marked as experimental.

One notable feature that I snuck into this build is that you can now capture from a DV capture device that uses the MSDV driver through DirectShow. Previously this didn't work because DV data comes in as type MEDIATYPE_Interleaved rather than separate MEDIATYPE_Video and MEDIATYPE_Audio streams; I don't own a DV camcorder, and the scenery around me is far too boring to warrant me getting one, so I didn't have a way to look at the filter graph and fix this. Well, as luck would have it, when I visited my older brother John over the holidays I was able to scam^H^H^Hborrow some time with his DV camcorder to develop against and add the code to insert the DV splitter into the graph. It isn't terribly tested (implementation and testing time approx. one hour), you can't shuttle the tape or control via timecode, and it only records type-2 DVs, but it's a little better than before, at least.

Capture rework details

I was about to release this a few days ago, but I decided to do some long-duration capture testing instead. Which was a good thing, because I managed to watch a full season's worth of Alias DVDs, and in capturing them off my PS2's output  testing files deleted immediately afterward, of course  I found two huge bugs in the capture module at the last minute. One was that I forgot to restore the SEH chain properly in the audio resampler when I borrowed the stack pointer for an eighth register (hey, if I'm going to write assembly language, I might as well go full bore), and the other is that the crash trap I had in the capture callback was trapping C++ exceptions too. This meant that errors during the capture like disk full errors sometimes got reported as internal errors or simply crashes/hangs.

Agent Bristow saves the day again.

It turned out that there was a nasty bug in the audio resampler that caused it not to account for a non-zero start time at the beginning of the video stream. Also, the algorithm I was using to determine the relative start offset between the audio and video streams could become progressively unstable over time with regard to noise sensitivity. The current build now has a semi-haphazard set of PID controllers and filters to control audio and video timing that would probably make an EE professor cringe, but seems to work better than the old code. In addition, the default is now to only determine the relative latency from the starting several seconds of the stream, and if that still doesn't work, the relative latency can be manually set.

Now, one thing to be aware of with regard to the audio resampling in the capture module is that it does not guarantee zero dropped/inserted frames. Some are of the opinion that such a resampler should mean no frame aberrations, but the problem is that any timing glitches in the video stream that are not handled by frame drops or inserts must be fixed by correspondingly wonking the audio stream in speed and pitch, which can be equally noticeable. Although the video timing correction option will now try to globally change the speed of video to account for a lower or faster than expected frame rate, it will still emit drop/insert commands when it detects holes in the input. (There was a really badly fragmented portion of my hard drive during my tests, so this scenario was well-tested.) However, I did rework the code so that disabling drops or inserts no longer causes a sync error the timing controllers can now see a video timing error of more than one-half frame. I wouldn't recommend turning off frame inserts, but turning off frame drops is now reasonable if your video input is stable.

As usual, contact me by email or the forum if you have problems and suspect an issue with the resampler.

I've seen some white papers from Microsoft recommending that you should eschew use of RDTSC for high-precision timing and use QueryPerformanceCounter() instead, for better stability on multicore systems. Ha. Hahaha. Avoiding RDTSC is fine, as many mobile CPUs, and even some desktop CPUs, will run their time stamp counter (TSC) at varying rates depending on load and there is no really good way to compensate for this if you want time (vs. clock cycles). Don't be so quick to switch to QPC, however. For one thing, on Windows XP x64 Edition, some AMD64 systems have a bug in their ACPI implementation that causes the time base returned by QPC() to run at half speed. Even worse, though, the time source used by QPC is frequently buggy, and when I was doing tests with VirtualDub's video capture module I saw several instances where the QPC time base would suddenly jump forward several seconds ahead when the audio and video clocks were stable. Thus, 1.6.12 no longer uses either RDTSC or QPC for capture timing estimation and now uses timeGetTime() with the system clock raised to 1KHz. The change in the system clock frequency also increases precision of video timestamps from some capture drivers under NT/2000/XP, a feature that was accidentally lost from the 1.5 capture module.

Misc changes

I snuck in a few miscellaneous goodies, such as the performance settings saving (only six years late) and a scaling crop dialog. There are also now script commands and command-line switches that allow you to use VirtualDub to glean information from a video file, although rather inefficiently:

vdub "e:animeAMG-OP.MPG" /cmd "VirtualDub.Exit("

I also added optional vsync support to the display panes, but now I'm itching for deinterlacing too.


Build 24259 (1.6.12, experimental): [January 4, 2006]
  [features added]
  * Performance settings are now auto-saved.
  * Cropping dialogs now auto-scale video that is too large to display and
    use a dashed crop border for better visibility.
  * Added /cmd flag to quickly invoke a script command from the command-
  * There is now an option to avoid tearing in the video display panes.
  * Script: Added VirtualDub.Exit(int) command to end the program with a
    specific error code.
  * Script: Added VirtualDub.subset.length property for current length of
    subset in frames (timeline).
  * Script: Added property for current length of
    source video in frames.
  * Capture: The list of statistics displayed in the info panel has been
    expanded and can be filtered from the Preferences dialog.
  * Capture: Modified option to adjust video timing based on drift from
    ideal stream timing rather than real-time.
  * Capture: Reworked video timing interpolation to be less sensitive to
    discontinuities in the system timer.
  * Capture: "Autoincrement filename" option now automatically skips over
    existing files as well.
  * Capture: Added timing graph to visualize behavior of resync engine.
  * Capture: Timing logs, if enabled, are automatically saved at the end of
  * Capture: Increased precision of frame period selection from 1us to 100ns
    to reduce frame dropping at device level when using DirectShow drivers.
  * Capture: Capture from DV sources to type-2 DV AVI using the DirectShow
    DV driver is now supported.
  * Capture: Backspace now works when entering channel numbers. 

  [bugs fixed]
  * Increased precision of processing fps estimate.
  * "Space" is no longer listed as an accelerator for "abort dub" since it
    doesn't work as such when rendering to disk. It still works for preview.
  * Fixed job control re-enabling itself if a menu command is chosen while a
    job is running, leading to possible reentrancy crashes.
  * Clearing the current job list or loading a new one while a job was in
    progress led to a crash.
  * Invalid MPEG-1 layer II frame headers display a slightly less confusing
    error than "internal error."
  * Renamed "use internal MJPEG decoder" in AVI extended open options to
    "use internal decoders," since it happened to force the internal DV
    decoder too. Added a sticky option in Preferences for this.
  * Filters were receiving inconsistent output frame numbers when using
    input preview or saving with a starting offset.
  * Fixed crash when crop rectangle reduced filter input to smaller than 1x1.
  * Fixed crash when using deinterlace filter in "duplicate field 2" mode.
  * Fixed broken cropping in some modes of deinterlace filter.
  * Manually stopping a save operation will now also stop a running script,
    and cause a command-line task to return with an error code.
  * CLI tool didn't work properly when path to vdub.exe/vdub64.exe contained
  * Removed some hard-coded limits on frame rates in the Frame Rate dialog
  * Fixed minor memory leak when plugins fail to load.
  * Fixed a case where an I/O error on the output AVI file could cause a hang
    instead of an error to be displayed.
  * MPEG-1: Fixed yet another rare frame decoding error when seeking randomly
    in the timeline.
  * MPEG-1: Fixed crash when opening file with all CPU optimizations forced on.
  * D3DFX: vd_tvpcorrect, vd_t2vpcorrect, vd_tvpcorrect2, and vd_t2vpcorrect2
    constants were computed with U and V sizes swapped.
  * Capture: VFW devices sometimes didn't display overlay properly with full-
    height frame sizes and consumed additional CPU due to the preview hook
    being left enabled.
  * Capture: The Video File (emulation) test capture driver is no longer a
    candidate for being saved as the driver to auto-start the next time
    capture mode is entered.
  * Capture: Unicode filenames are now displayed properly in the title bar.
  * Capture: Fixed 0.03% sync error when using NTSC frame rates.
  * Capture: Fixed random crash when modifying filter parameters with a WDM
    capture driver active in accelerated preview mode.
  * Capture: Fixed keyboard focus on startup so that entering channel numbers
    works again.
  * Capture: Fixed instability on reporting errors when audio resampler is
  * (AMD64 only) Fixed crash when opening a Motion JPEG file with no MJPEG
    codec installed. Note that the internal MJPEG codec still isn't
    implemented for this platform. 

  [regressions fixed]
  * Capture: Fixed normal errors sometimes being reported as internal errors.


Comments posted:

Nice niceee work.
Hey i am thinking.. what do you think about a VirtuaTitler?
An open source VirtuaTitler gpl2?

Luke - 05 01 06 - 05:14

It is great to see that you have added DV capture support to VD. I used to be an analog man, but converted to DV about 2 years ago, and have never looked back!

It was really annoying that VD did not do DV capture, and have used WinDV for those two years. Unfortunately, WinDV appears to be lacking development. Perhaps with your sway, you can convince Petr to part with his source code (I do find his buffering scheme most excellent) and add it/adapt it to fit with your DV capture, or even to get ideas from it.

Great program. I use it all the time, and there are some really cool plug-ins out there (just goes to show people like it!!)


MustardMan - 08 01 06 - 20:57

I'm ready to translate in russian.
Thank You.

Duke - 09 01 06 - 10:31

Ok first i am not a bigginer i have been using virtualdub for almoust 7-8 years and everything was working fine until today! I have image of my computer so everything is same everytime i put my image back including virtualdub! (and believe me everything is doing just fine because i am putting back my image every 5-6days because of viruses) so over 5 years i have been converting my dv homevideo into divx 5.11 + mpeg layer-3 and today i realized that i can't do it with my last dv video because my audio is not sincronized at the end???But the dv file is ok. I always helped others in everything and i really know a lot about audio and video but now i am so mad because i really don't know what is the problem. I've been converting one stupid dv file for 3 days now and i'ts allways the same and i even put my image back twice and noup it's desincornized and i know that i can make it work by adjusting it manualy but i don't wanna do that because it was doing fine for over 5 years and i want to make it work now too!!! Please help. I will try to download new virtualdub 1.6.12 and maybe it will work but i would still like to know why it want work anymore!!!! Why? I am so mad :)

Thank you

Ivan - 09 01 06 - 13:42


...about my problem above... when I convert into divx only a segment of my DV video the sincronization is great super duper but when I save a whole file it's desincronized hhoo ho ho ho my computer is realy very funny haha :)

...sorry for posting my problem here...


Ivan - 09 01 06 - 13:48

It's very bad, that audio import problems are keeped for MPEG1 files. Errors' screenshots:

So, it's impossible to process such MPEG1 files, created by AVerMedia.
The only solution is to use 1.4.xx versions of VD, but these versions crashes on 720x576 video format...

critter - 10 01 06 - 11:30

tanks a lot for Virtualdub.
I have an aidea for a color filtr:
inside same television (since 15 years ago..) there is a chip that use the luminance slew rate to "sintetyze" the color transient.
In the VHS signals the croma is stopped at 2/3 of Mhz (like as 64-90 pixel on a line.....)and the shape of an color variation (eg. a transition like a stairs step) became extremally smooted.
when a tape was analogically copied, it result in a terrible color bandwith, so impressed on an aceptable B/W imagine you can observed a confused colorization.
Like as (old!) televisor chip do, it is possible recover the "edges" of the croma using the informetion of the B/W "edges", because Y. and C. describe the same picture!
I know that I'm not a god writer (I am in Italy), but I hope that you undestend the obyect of this mail.

Best regards, Massimiliano, Roma, Italy

Massmiliano - 10 01 06 - 11:53

Have you addressed mkv videos yet? I have been using MKVEgui to seperate the streams and Virtual Dub to rejoin so I can burn to DVD. The problem is with some videos the video stream loses several minutes after separation. Then the video and audio are out of sync. I've tried forcing the length of the video and audio to be the same when joining them in VD, but it is still out of sync. I've heard the problem may be a VFR on the original, but I don't know how to correct it. I've tried loading the mkv file right into VD, but I get the error "Only handle [S_TEXT/] subs for the moment". I am using VD version

Lou - 28 01 06 - 08:49

Great Program and really fast. Thanks for the great effort. I do have one question - The application is looking for display.fx Did I install the file incorrectly? Thnaks in advance and keep it up, please.

Scott Lloyd - 10 04 06 - 13:18

how i save with mpg format
the program only has the avi format
ineed save with mpg format for vcd with minimum Size and good quality.
please tell me how i can,
is one plugin for this work.

Nima - 14 06 06 - 05:45

my email:

Nima - 14 06 06 - 05:46

I recently installed vdub 1.6.15 and I encounter the following problem : whenever I open an mpeg file a screen pop up and says that an error X1507 occured and that vdub failed opening the display.fx file...
Do u have any solution about that please ?
Thank u in advance.

Mauviard Olivier - 28 07 06 - 05:28

I'd like to see the ability to capture stills from the command line of live video.

Something like:

c:vdubvdub /source="composite" /filename="c:imagesstill001.jpg" /autosequence="true" /count="5"
/interval="10 sec"

This would allow a compiled program to capture stills under program control without real-time user intervention. The images could then be sent as emails, used by web pages, or by stored by events such as ques from motion detectors, etc.

Just a thought.

-Tom Hyatt

Tom Hyatt - 23 09 06 - 09:15

whoop! 2 old comments on display.fx and none to be useful? I also found myself stuck on this issue, and nowhere to obtain help, *including* here. I eventually reverted to 1.6.10! Besides that, a great, GREAT software VirtualDub!
So, is there no-one to answer this issue?
Many thanks in advance,

luigino - 26 02 07 - 19:22

1) 1.6.12 is ancient. Posting on a topic and version that's over a year old is not a good way to get help.
2) 1.7.1 tells you how to solve this: you turn Direct3D effect support back off in Preferences > Display.

Phaeron - 26 02 07 - 23:42

I apologize.
But, mostly amazing, this *was* the right advice even in 1.6.10! Now it's all oK. I suppose that this was overlooked. Thanks!

luigino - 27 02 07 - 10:27

hiya folks, i hope someone can help me with this error code. it's either -426 or -429.
I capture to VD 1.9x using a Pinnacle USB-710 MovieBox. It captures OK using built-in codec.
When I switched it to Pegasus Systems PICVideo MJPEG Codec 3.4143230, i get this error code. I leave everything at the default 4:2:2 (i believe), but VDub is giving me that error code.

please help. post answer here. thank you.

James Catanzaro (link) - 25 12 09 - 08:28

Comment form