Current version

v1.10.4 (stable)

Navigation

Main page
Archived news
Downloads
Documentation
   Capture
   Compiling
   Processing
   Crashes
Features
Filters
Plugin SDK
Knowledge base
Donate
Contact info
Forum
 
Other projects
   Altirra

Search

Archives

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

Stuff

Powered by Pivot  
XML: RSS feed 
XML: Atom feed 

§ VirtualDub 1.8.7 and 1.9.0 released

I haven't had as much time as I'd like to work on VirtualDub, which is unfortunately why it's been three months since the last release. Time to rectify that.

Both 1.8.7 and 1.9.0 are now up on SourceForge. 1.8.7 is a bugfix only release, with the one major fix being to the distributed job system. It turns out that the distributed job code wasn't that stable and would often attempt to run the same job on multiple machines, due to essentially a race condition in the filesystem. The new version now has logic to detect job start conflicts and retry with exponential delay, which should be more reliable. I also rewrote the conflict resolution logic, which is now more similar to the two-way and three-way merges that a revision control system has to deal with.

1.9.0 is of course the new experimental build and contains a number of new features and changes. I spent some time closing the gap in functionality between the x86 and AMD64 builds, so although the AMD64 build may still not be as well optimized, several features that were previously absent in the AMD64 build are now implemented. I've also thrown in a built-in AMD64-capable Huffyuv decoder that handles some of the popular post-2.1.1 extensions. Second, the internal display and blitter libraries got overhauled quite a bit. The uberblit system that backs the resampler in the 1.8.x series has been cleaned up and expanded, and now handles many of the complex blit scenarios that were previously handled by custom code or multi-stage blits. As a result, VirtualDub 1.9.0 can now handle several new image formats, including the 10-bit per channel v210 format and the interleaved NV12 format. The display library has also been upgraded to handle the new formats, and in particular the Direct3D module can now accelerate display of 10 bit/channel v210 video with dithering. The new formats are not yet exposed to video filters -- mainly because the thought of trying to work directly in v210 scares me -- although I'm not ruling out the possibility of a 14-bit fixed point linear color format in the future.

Changelists are after the jump.

 

Build 30080 (1.8.7, stable): [December 21, 2008]
   [bugs fixed]
   * Wheel scrolling now works in the filter crop dialog.
   * Added clamp in audio conversion dialog to prevent invalid custom sampling
     rates.
   * DV: Audio error concealment now works when the PAL/NTSC bit in a frame is
     incorrect.
   * Capture: Added option to ignore DirectShow video timestamps when capture
     driver timing is busted.
   * JobControl: Rewrote sync mechanism to fix problems with multiple machines
     attempting to run the same job.
   [regressions fixed]
   * JobControl: Fixed crash if job list couldn't be flushed on exit.
Build 30586 (1.9.0, experimental): [December 21, 2008]
   [features added]
   * Added internal Huffyuv decoder.
   * Added "crop to selection" command.
   * Frameserver startup is now scriptable.
   * MJPEG decoder now uses Rec. 601 color space instead of JFIF.
   * 4:4:4 planar YCbCr (YV24) is now exposed in the Video Color Depth dialog.
   * Added support for 4:2:2 10-bit YCbCr (v210) and 4:2:0 YCbCr with
     interleaved chroma (NV12).
   * Moved "add as batch job" form of save operations to a separate menu to
     reduce confusion.
   * The audio playback device can now be selected in Preferences.
   * AMD64: MJPEG decoder is now available.
   * Filters: Warp sharp added as internal filter with YCbCr 4:4:4 support.
   * Filters: Perspective filter now supports bicubic filtering.
   * Filters: Blur and Blur More are now supported on AMD64.
   * Filters: Brightness/contrast filter now supports RGB24 and planar YCbCr
     formats.
   * Filters: Levels filter can now work directly in YCbCr formats when luma
     mode is enabled.
   * Filters: Bob doubler now allows deinterlacing to be disabled.
   * Filters: Preview now keeps current position.
   * Filters: Holding SHIFT when adjusting cropping now aligns to 16 pixel
     size boundaries.
   * Display: OpenGL driver supports bicubic filtering.
   * Display: The fallback to GDI when the app goes into the background can
     now be disabled.
   * D3D: Added high-precision pixel shader 2.0 display mode with dithering
     for slightly better color fidelity.
   * D3D: HDYC, v210, and Pal8 are now decoded in hardware.
   * JobControl: The system can now also be put into sleep or hibernation at
     the end of job queue processing.
   [bugs fixed]
   * Fix for ACM decoding/encoding errors with some audio codecs related to
     requesting a conversion with 0 source bytes.
   * SaveWAV() script command showed error dialogs instead of redirecting the
     errors.
   * Audio display: Ctrl+Drag now explicitly says "shift audio" to avoid
     confusion.
   * Capture: Fixed accumulation of "no device found" entries in the menu.
   * DDraw: Workaround for rare DWMAPI.DLL->USER32.DLL load errors on XP.
   * Display: Fixed bug where panes didn't redraw when disabled during a
     render operation.
   * Display: Fixed disabled panes or panes showing end frames drawing bluish
     colors rather than the correct Windows background color.

Comments

Comments posted:


Woo, nice! I was wondering though, if maintaining two code paths (one for x86-32, one for x86-64) so difficult, why not use NASM, which covers both and some others? I'm not criticizing, just wondering.

Mitch 74 (link) - 22 12 08 - 05:03


Actually, I do use NASM, or rather its derivative YASM. That doesn't make the assembly language any more portable. The calling conventions between x86 and x64 are different enough that you can't trivially port over code.

The first thing I do when I decide to attack a code path that's x86 only is to write a pure C implementation. Not only does this get the feature working on x64, but it provides a more portable and debuggable fallback. In a few cases, the x86 versions are rather old and sometimes a bit silly -- the brightness/contrast, filter, for instance, was actually slower than just a straight table lookup implementation on current CPUs, and I suspect it wasn't even faster back in the days of the Pentium 1 when I wrote it.

Another nice side effect of revisiting old filters is that sometimes I can implement additional features trivially, such as YCbCr support.

Phaeron - 23 12 08 - 00:54


CPU intrinsics work pretty well for me these days (although I restrict myself to newer GCC:s and VS2008), and are as you know fully portable between 32 and 64-bit. I take it that they are not working out so well for you, given that you are still using raw assembly?

ector - 23 12 08 - 07:54


Intrinsics are not fully portable between 32-bit and 64-bit. You can't use MMX intrinsics on x64, at least not with MSVC. Also, there are a number of common assembly tricks that I use that are not possible with the current set of intrinsics, such as fast 32:32 fixed point accumulators. And then there's the code quality issue, which is really important if you're resorting to intrinsics in the first place. The set intrinsics in particular, most notably _mm_set_ps() and _mm_set_epi8(), generate atrocious code in VC++.

I have actually used intrinsics for some prototyping where feasible, but I still have reservations about using them at production level in VirtualDub. The last time I tried doing anything serious with them I managed to break both GCC and VC++ with a single routine.

Phaeron - 23 12 08 - 23:06


The job control feature seems to be broken. I added something to the queue, and started a batch file which executes "vdub.exe /r" and Virtualdub 1.8.7 silently exits without doing anything. I reloaded 1.8.6 and the job executes normally using the same batch file.

Ken - 24 12 08 - 01:53


Oops. Try this version:
http://www.virtualdub.org/beta/VirtualDu..

Phaeron - 24 12 08 - 16:26


Thanks. The 1.8.8 beta fixes the problem with jobs not running.

Ken - 24 12 08 - 22:22


i hope you'll code the h264 codec compatibility and MKV processing thanks in advance. love your work.

oemor - 30 12 08 - 21:51

Comment form


Please keep comments on-topic for this entry. If you have unrelated comments about VirtualDub, the forum is a better place to post them.
Name:  
Remember personal info?

Email (Optional):
Your email address is only revealed to the blog owner and is not shown to the public.
URL (Optional):
Comment: /

An authentication dialog may appear when you click Post Comment. Simply type in "post" as the user and "now" as the password. I have had to do this to stop automated comment spam.



Small print: All html tags except <b> and <i> will be removed from your comment. You can make links by just typing the url or mail-address.