VirtualDub 1.9.6 is now available for download. This is a stable fix-only release addressing several bugs and also some regressions introduced along the 1.9.x code line. The main intent is to try to fix all of the issues that are preventing people from migrating from 1.8.x to 1.9.x.
The current plan is to release at least one more bug-fix only release (1.9.7), and after that, I have no idea. I have some relatively largish changes pending in another code line, but at this point I don't think I'm going to want to release it as 1.9.8, in case I need to release another fix-only release in the interim... which leads to a problem because I've run out of mid-level version numbers. I'm not going to start a 1.10.x line, because I learned the hard way that everyone reads it as a decimal and thinks .10 < .9. What I should have done was inserted a leading zero so that I'd be at 1.09 instead. I could just jump to 2.0.x instead, but that seems kind of lame since I'm unlikely to have the kinds of changes that would warrant a 2.0 release. Then again, the last time I thought I was going make version 2 a big upgrade I ended up screwing up the code line so badly I had to pull a Vista and restart from the 1.4 code base, so maybe I should just bump the version number.
Maybe I should just be lazy and use build numbers.
Anyway, here's the change log for this release:
(Read more.... (http://www.virtualdub.org/blog/pivot/entry.php?id=274#body))
VirtualDub 1.9.7 is now out, and is another stable release containing only bug fixes for reported problems.
The most important fix in this version is a change to the code that reads AVI hierarchical indices. Normally these indices are only two levels deep, with a master index in the header and subindex blocks covering no more than 4GB. If you're wondering whether deeper indices are possible, the answer is an emphatic yes. It turns out there's at least one hardware/software editing solution that produces AVI files with deep index trees, because it links all of the subindex blocks with internal nodes arranged in a degenerate tree. The trace I received of a 46GB capture showed a tree more than 20 levels deep. This was causing a crash in 1.9.6 because of some changes that I made a while back to fix slow index reading speed problems over a network; in doing so I had increased the size of an I/O buffer on the stack and this was causing a stack overflow. 1.9.7's index read routine has much lower stack usage and should be able to read AVI files with deeply nested indices again.
I've been spending some time in the dev branch trying to add new raw video formats to the blitter library, and I think I've spent so much time in Scilab staring at YCbCr matrices that they're all starting to blur together. Nevertheless, the blitter autotests are finally passing again (although at a slower rate, since the test matrix is now 37x37 instead of 17x17), and I think I'm finally making some progress here. The next step would be to add support for the new formats to the video source and display paths, which should finally get some of these new formats into a usable path. Some optimization would be needed after that since all of the new formats are currently leveraging a lot of unvectorized C++ code, but we'll see how that turns out.
Build 32842 (1.9.11, stable): [December 24, 2010]
[bugs fixed]
* Filters: Added compatibility option for filters that rely on constant
buffer addresses.
Build 33848 (1.10.0, experimental): [December 24, 2010]
[features added]
* Holding the Ctrl key during drag-and-drop appends instead of replaces.
* "Scan for errors" command is now scriptable
(VirtualDub.video.ScanForErrors).
* Save Animated GIF command is now scriptable
(VirtualDub.video.SaveAnimatedGIF).
* Added ability to import and export raw video.
* Added ability to export through command-line encoders.
* Added support for 0-255 paletted grayscale.
* Added support for Rec. 709 and full range formats.
* Added command to copy source and output frame numbers to the clipboard.
* Render: Added option to show the status window for batch operations.
* Render: Video compressor threading is now allowed for two or more threads
when operating with only key frames.
* Filters: Added multithreading support.
* Filters: Added "gamma correct" filter.
* Filters: Added "alias format" filter.
* Filters: Re-added deblurring mode to IVTC filter and added preview
support.
* Filters: Added frame drop mode to IVTC filter.
* Images: TGA RLE compression can now be disabled.
* Images: Added support for PNG alpha channel.
* Capture: Multiple capture devices with the same name now appear with a
distinguishing counter.
* AVI: The non-zero start warning can now be disabled in preferences.
* AVI: The number of filename counter digits used when saving segment
sequences is now configurable.
[bugs fixed]
* Reduced priority of ASF pseudo-handler to avoid interfering with input
handlers that detect by filename.
* AVI: The preferred handler (fccHandler) field in the video stream is now
ignored by default for consistency (unless re-enabled in preferences).
* UI: Limit minimum window size to avoid caption redraw artifacts.
* UI: Fixed bug where aspect ratio of panes in unconstrained aspect mode
would drift when auto-sizing was enabled.
* UI: Select Range command is now disabled when no video is loaded.
* UI: Audio conversion dialog no longer occasionally says "No change
(8-bit)" for compressed formats; this was sometimes incorrect as when
that option was selected the pipeline actually used what the codec
produced, which was usually 16-bit.
* UI: Video codec dialog now scrolls the list on open to always show the
last selected codec.
* UI: The Configure and Cropping buttons in the filter list dialog no
longer lose focus when clicked.
* UI: Mouse wheel scrolling now works in the filter preview and curve
control windows.
* JobControl: Auto-shutdown now works over remote desktop and records a
planned shutdown on server versions of Windows.
* Images: PNG images with 16-bit/channel grayscale or RGBA format now load
properly.
* Images: Fixed GIF autodetect code checking the footer instead of the
header.
* Hex editor: Fixed icon in RIFF tree window.
* Filters: Switched the frame that the IVTC filter drops in reduce frame
rate mode to match the old pre-filter algorithm.
* Filters: Cropping dialog now opens at the currently selected frame.
* Filters: Fixed warp sharp filter in 3D acceleration mode.
Version 2.7 (2011-01-30)
In version 2.5, I changed the way the size of the initial block was calculated, to make it more consistent.
As a side effect, this meant that for certain settings (such as the default ones) and certain video sizes (such as interlaced 720x576 and interlaced 720x480), pass 1 would run a lot slower than before.
After some testing, I have now made another adjustment to this initial block size to speed things up. If you feel that this version is less reliable than versions 2.5 and 2.6, please let me know.
(test-14) Fixed open/save file dialog regression.
(test-13) DirectDraw and Direct3D9 display fixes for Windows 8 Developer Preview.
(test-13) Fixes for some hang and error issues with external encoders (can't seek on a pipe with some versions of Windows, and didn't close the output pipes soon enough).
(test-13) A couple of dialog cleanups.
(test-13) Fixed pointer truncation crash in video compression dialog in 64-bit version.
(test-13) Added checks to enforce ALTFORMATS and block NEEDS_LAST flags for V16+ video filters.
(test-13) Raw video input mode was ignoring the initial padding offset.
(test-12) Added additional checks to prevent crashes due to excessively large video frames (>128M pixels total or >1M pixels in a dimension).
(test-12) Fixed annoying UI bug in Video Depth dialog where navigating to Other... by keyboard caused multiple dialogs.
(test-12) Fixed crash when opening filter preview with image formats that do not have a Windows BITMAPINFOHEADER equivalent.
(test-12) The open previous/next file command now works even if the existing file has been closed.
(test-11) Fixed Save As Default in Resize filter.
(test-10) Fixed detection bug in .wav driver.
(test-9) Fixed mouse cursor appearing when left clicking during right drag on position nub.
(test-9) Empty statements are now allowed in scripts.
(test-9) Improved error reporting with /cmd switch.
(test-9) Fixed regression in null transform filter with flipped formats.
(test-9) Filters: Improved format search rules for BT.709 and full range formats.
(test-9) Added BT.709 and full range YCbCr support to a bunch of filters.
(test-8) Added V16 API with multiple filter input support.
(test-8) Added blend layers and merge layers filters.
(test-8) Grayscale filter is now 3D accelerated.
(test-8) Filters can now safely request 0 source frames.
(test-8) LameACM acmFormatSuggest() bug workaround.
(test-8) Added comctl32 v6 manifest, since MS is now breaking v5 sad.gif
(test-7) Fixed cut off text in audio compression dialog.
(test-7) Filters: Many internal filters are now marked as pure transforms to allow pass-through of duplicated frames.
(test-7) AVI: File Information now displays audio format tag and prevents long video codec names from cutting off video tag.
(test-7) Command line: /capdevice no longer reselects a capture device if it is already the default.
(test-6) Capture: Fixed some frame skipping problems when conversions occurred between filters with the filter chain enabled.
(test-6) Capture: Fixed crashes when toggling black/white point extension with other capture filters active.
(test-6) Render: Fixed crashes in high quality audio sample rate conversion with very low or high rate values.
(test-5) About/Configure for audio codecs.
(test-4) Some 0x0 resize crash fixes.
(test-4) Fixed bicubic resampler regression in high-precision Direct3D9 display.
(test-4) Added about/configure dialog support for audio codecs.
(test-3) Crash handler now reports memory status.
(test-3) Rotate2 filter ported to x64 (although unoptimized).
(test-3) Added mpa/m1a/m2a extensions to MPEG audio import filter.
(test-3) Fixed graying of export to external encoder option.
(test-2) The "audio from other file" dialog now has an extended open options option.
(test-2) Added commands to cycle through files.
(test-2) Added command to launch a new instance.
(test-2) Added command to close and delete the current file.
(test-2) Added auto-recover option.
(test-2) Display: Added option for multi-monitor display acceleration.
(test-2) Command line: Added /capaudiorec and /capaudioplay switches.
(test-2) Command line: Added /resetall.
(test-2) Command line: Added /portable to initialize portable settings mode.
(test-2) Position control mark-in/out icons are now comctl32 v6 compatible.
(test-2) ExtEnc: Fixed extra data being written to audio pipe at end of stream.
(test-2) ExtEnc: Removed WAVE64 padding from WAVE stream written to pipe to improve compatibility with marginal WAVE parsers.
(test-2) BatchWizard: Re-save as AVI and Extract to WAV functions now force the .avi and .wav extensions on output filenames.
(test-2) Capture: "Windows Mixer" menu option now launches the Recording tab of the Sound control panel in Windows Vista and Windows 7.
(test-2) Capture: Fixed weird disable wonkiness with the Position and Screen Height labels in the screen capture settings dialog.
(test-2) Capture: Added option to allow selection of video codecs that do not support the current output format.
(test-2) Filters: Fixed bug in allocator merging code that was causing excessive memory usage when disparate frame sizes were used in the same filter chain.
(test-2) Defaults: Default preview display depth is now 24-bit.
(test-2) Defaults: DirectX hardware video overlays are now disabled by default to avoid color space issues and driver bugs.
(test-2) Render: Added option to inhibit system sleep during renders (on by default).
(test-2) Render: Added option for background I/O priority (Vista and up only).
(test-9) Fix for audio length issues with segmented AVI output.
(test-8) Fixed crash with hex editor RIFF tree.
(test-7) Fixed crash with on screen keyboard enabled.
(test-6) Fixed font in a few dialogs.
(test-6) Added fully buffered I/O mode.
(test-6) Added switch for using user profile for storage.
(test-6) Fixed chroma smoother filter.
(test-5) Filters: Single frame buffer option now works with V16/V17 filters and disables 3D acceleration.
(test-5) Filters: Fixed regression with built-in filters with 3D acceleration.
(test-5) Filters: Fixed keyboard shortcut conflict in filters dialog.
(test-4) PluginAPI: The preferred fccHandler supplied by input plugins is now also passed through to output files.
(test-4) Decoders: Relaxed size restrictions on MJPEG decoder since a more flexible conversion blitter is now being used.
(test-4) Fixed inversion when reading TARGA images (regression from 1.10.1).
(test-4) ExtEnc: Fixed omitted parameters and occasional extra commas when exporting profiles.
(test-4) HexViewer: Fixed incorrect text label for fccHandler stream field.
(test-3) Fixed missing perspective filter.
(test-3) Export Raw Video options now save correctly in scripts.
(test-3) Reduced GPU priority when rendering with Direct3D 9Ex.
(test-2) Fixed manifest problem. The manifests were being generated for declaring Windows Vista/7 compatibility and enabling comctl32 v6, but they were not embedded and got dropped by the packaging script (which is why I missed it in local testing).
(test-2) Fixed arithmetic bug in the 64-bit versions of the 2:1 reduce filters.
(test-2) Fixed porting errors that broke the HSV adjust and emboss filters.
(test-2) Added a new "very low" priority for the internal ASF handler so it can be overridden in input plugins.
Change log after the jump.
Build 34807 (1.10.2, experimental): [June 3, 2012]
[features added]
* Added option and /[no]useprofile switch to store configuration files
under the user profile.
* Added option for fully buffered write I/O.
* PluginAPI: The preferred fccHandler supplied by input plugins is now also
passed through to output files.
* Decoders: Relaxed size restrictions on MJPEG decoder since a more
flexible conversion blitter is now being used.
[bugs fixed]
* The priority of the ASF pseudo-handler has been reduced to allow plugins
to handle the format.
* Fixed .exe manifest embedding error.
* "Export raw video" command now saves properly in job scripts.
* Fixed inversion when reading TARGA images (regression from 1.10.1).
* Fixed bug that caused occasional truncated audio when writing segmented
AVIs.
* ExtEnc: Fixed omitted parameters and occasional extra commas when
exporting profiles.
* Filters: Fixed artifacts in 2:1 filters in 64-bit build.
* Filters: Fixed logic errors in HSV adjust and emboss filters.
* Filters: Lowered GPU priority in D3D9Ex acceleration mode to improve
system responsiveness.
* Filters: Restored missing perspective filter.
* Filters: Fixed chroma smoother filter.
* HexViewer: Fixed incorrect text label for fccHandler stream field.
* Capture: Added timeout check for screen capture driver to avoid locking
up program totally when capture load is too high.
Changes:
(test-10) Added option to prevent video edits from being applied to audio.
(test-10) Fixed a crash in capture mode when an audio device is removed from the system.
(test-9) Added /topmost flag.
(test-9) Animated GIF encoder now emits clear codes before the LZW table fills up to work around buggy decoders.
(test-9) Improvements to animated GIF encoder to use subrects, reduced local color table depths, improved color table generation for CG input with static areas, and elimination of empty delta frames.
(test-9) Fixed problem of video display panes not refreshing properly when changing files (this was probably a side effect of some display refresh fixes I had done).
(test-8) Added more formats to the "convert format" filter.
(test-8) Added .vpy extension to AVIFile input path.
(test-8) AVIFile input path now accepts Unicode filenames.
(test-7) Fixed regression in 3D acceleration code.
(test-7) Fixed garbled text when using /F flag with 64-bit build.
(test-6) Removed compositing test code.
(test-6) Program is now marked as high-DPI aware.
(test-5) Fixed chunk length error in WAVE64 output.
(test-5) Added an option for a confirmation dialog before exiting.
(test-1-4) Convert Audio filter no longer defaults to garbage settings.
(test-1-4) Fixed bandwidth indicator in capture mode.
(test-1-4) Fixed crash in ELA modes of bob doubler.
(test-1-4) Lifted some line length limitations in script handling.
(test-1-4) Fixed grayscale image rendering with GDI and DirectShow display modes.
(test-1-4) Improved error reporting when executing scripts.
(test-1-4) Added support for DXGI Output Duplication (Windows 8) and WASAPI loopback capture (Windows Vista+) when doing screen capture.
VirtualDub 1.10.3 is out. It contains a number of bug fixes along with a couple of small things on the side. Several of the video filters have had additional fixes, a WAVE64 format bug was fixed, a DirectShow capture crash was fixed, a couple of Unicode text problems have been resolved, high DPI aware mode has been enabled, an option has been added to apply edits only to video and not audio, and support for high-performance screen capture on Windows 8 (DXGI 1.2) has been added.
Build 35390 (1.10.3, experimental): [December 27, 2012]
[features added]
* Added option to control whether edits on the timeline are applied to
audio.
* Capture: Added support for screen capture via DXGI Output Duplication in
Windows 8.
* Capture: Added support for Core Audio loopback capture in the screen
capture driver on Windows Vista and later.
* Script: Improved error reporting for script errors during job execution.
* UI: Added option for confirmation on exit.
* UI: Program is now marked as high-DPI aware.
* UI: Added /topmost flag.
* AVI: Add .vpy extension to AVIFile path.
* AVI: AVIFile mode path now allows Unicode filenames.
* Filters: Convert format filter can now target Rec. 709 and full-range
YCbCr formats.
* GIF: Animated GIF exporter now uses subrects and adaptive local color
table sizes.
[bugs fixed]
* Grayscale/Y8_FR video displays properly with GDI and DirectDraw display
back-ends again.
* Fixed the main data chunk size in WAVE64 files being 24 bytes too small.
* Fixed garbled status message with /F flag on x64 build.
* Fixed scanline alignment on V210 format to 128 bytes.
* Capture: Fixed regression in the bandwidth indicator from increase in
frame rate precision.
* Capture: Fixed crash in DirectShow mode when selecting an audio device
that has been removed.
* Filters: Fixed garbage initial value for format convert audio filter.
* Filters: Fixed crash in ELA modes of the bob doubler.
* Filters: Fixed degree sign in rotate2 and HSV filter blurbs on
non-English systems.
* Filters: Fixed inverted images with field swap and deinterlace filters
with RGB24 input.
* GIF: Clear codes are now forced when the LZW table fills up to work
around buggy decoders.
* Script: Lifted some line length limitations in script handling.
Added better detection of new scenes. Previously, you would get a new scene whenever a frame got skipped due to too few ok blocks. Read more under the 'Detect scenes' setting above. For skipped frames that are not new scenes, Deshaker will interpolate motion values in pass 2.
Default percentage for skipping frames was increased from 5% to 8% because Deshaker now handles skipped frames better.
Skipped frames will now be marked "skipped" in the logfile, and such lines won't have any values anymore. Missing frames in the logfile will also be treated like they are skipped, but they will not become new scenes as before.
Default value for initial search range was decreased from 40% to 30%, because an unnecessarily high value can have a slightly negative impact on the new scene detector, and 40% is way more than you need for most videos.
The option to do the matching in pass 1 in grayscale mode was removed because of the new scene detector.
Removed the option to discard dark pixels and replaced it with a better way to ignore noise. Read more under the 'Discard motion of blocks that have maximum pixel value difference less than X' setting above.
Smoothness for zoom stabilization and adaptive zoom are now controlled separately, so the usual zoom smoothness setting now controls only stabilization of zooming in the clip. As for controlling adaptive zoom smoothness, read more under the 'Adaptive zoom smoothness' setting above.
Adaptive zoom now uses a new smoothing algorithm, so it will look slightly different (better?). Its smoothness values are only approximately comparable to before in how smooth it gets.
Added a setting for controlling the amount (amplitude) of adaptive zoom, in percent. Read more under the 'Adaptive zoom amount' setting above.
Added a new edge compensation option Adaptive zoom full, which is similar to the usual Adaptive zoom, except that this one will remove borders completely (if adaptive zoom amount is 100%). Kind of like Adaptive+fixed, but doesn't add as much zoom in less shaky sections. Read more under the 'Edge compensation' setting above.
The original Adaptive zoom option changed name to Adaptive zoom average.
Removed the somewhat confusing edge compensation options Adaptive zoom only and Adaptive+fixed only. You can now get the same effect by using another adaptive zoom option and setting the zoom motion smoothness to 0. (When loading old settings files which used these removed options, Deshaker will automatically choose settings that work similarly as before.)
All edge compensation options (except None) now checks for rolling shutter distortions too. (Those distortions usually require some extra slight zoom to completely get rid of borders.)
Zoom stabilization and adaptive zoom no longer spill over scene changes. Previously, that would happen when edge compensation was used.
Made a tiny adjustment to amount of adaptive zoom, to make zoom factor exactly 1 for a still video sequence, to avoid degrading the quality due to resampling in such cases.
The very last frame (and any frame that has a skipped frame after it) of a rolling shutter video clip will now be compensated for rolling shutter distortion too, but a little less accurately. Previously, no compensation was made for those single frames.
Added two video output modes for pass 1, which make the motion vectors longer, by 2x or 5x. Read more under the 'Video output' setting above.
Added buttons in the configuration dialog to open or delete the current log file, and also to open the current log file folder. (Deleting the log file can be useful if you use the Append to file option, but want to get rid of old garbage (prior to running pass 1) that may otherwise influence the stabilization.)
Deshaker now uses less memory during pass 1 (which should allow for processing larger images/frames).
Deshaker will now try a little harder (but not too hard) to keep tracking the same object(s) if Remember discarded areas to next frame is enabled, even when frames become skipped due to too few ok blocks.
Added a somewhat hidden feature to make Deshaker forget the remembered discarded areas for current frame if you click once (or twice) on the Remember discarded areas to next frame checkbox.
While the Deep analysis algorithm is pretty good, it does ignore any remembered discarded areas from previous frame, which is usually bad. So now, Deep analysis will only be used whenever we're ignoring remembered areas from previous frame, either because remembering is disabled, or because we get way too few ok blocks.
The log file now looks somewhat different (although pass 2 can still read the old format). Each tabbed column is now reserved for a single thing. And a scene detection value and percent ok blocks are now written to the log file, after the comment character "#". And the "new_scene" keyword is now called "n_scene" (to make the log file look nice in notepad :)
Improved error handling.
Other minor changes and fixes.
Added an FAQ to this page.