Stuff

I spent far too much time yesterday playing Treasure of the Rudras (Rudora no Hihou), so I'm trying to do something else today. I think Riza's boss battle music is my new choice for top SNES music, though.

VirtualDub 1.6, like 1.5, is an extensive rewrite of the internals. 1.5 focused on the bottom-level framework for the program, mainly lifting out a few of the subsystems, and most notably OS-level helpers, into static libraries. The changes in 1.6, besides the AMD64 and VS2005 compatibility changes, are focused a layer up, at the application library level. This means that more of the 1.6 changes (besides bugfixes) are visible to the user.

The details:

The AMD64 build is preliminary. Benchmarks from the AMD64 build are worthless, because low-level pixmap conversion routines are not optimized. The only asm-optimized parts are the MPEG-1 video decoder and the resampler. Another problem you'll run into is that 32-bit plugins can't be used, including video filters and Avisynth. Win64 does not allow a 64-bit process to load 32-bit DLLs. COM marshalling might be able to handle Avisynth but I doubt it; it's more likely that I will have to launch the 32-bit VirtualDub as a child process and use IPC to access 32-bit code.

1.6.0 has a completely rewritten bitmap library (Kasumi) that has native support for packed and planar YCbCr (YUV) formats. All conversions interpolate/decimate chroma with bilinear filtering and with MPEG-2-consistent chroma positioning; conversions between YCbCr formats do not round-trip through RGB. This means that 1.6.0 does not require a codec to decode or encode UYVY, YUY2, YV16, YV12, I420, IYUV, YVU9, or Y8, and all conversions are supported. Correspondingly, the Video Depth dialog has been rewritten to allow direct selection of YCbCr formats. VirtualDub will automatically fall back if the codecs involved cannot handle the requested formats -- for example, if YV12 doesn't work it will try YUY2. Fast Recompress is now mostly redundant except that it prohibits features that would force a round-trip through RGB; it will probably be removed in a later version.

The video filter system is still restricted to XRGB32, unfortunately. I wanted to lift this restriction for 1.6.0 but it was apparent that I'd need to rewrite the pixmap library first. An optimization has been added to the video pipeline, however: if Full Processing Mode is selected and the video filter chain is empty, the rendering engine will blit directly from the source format to the destination format. This speeds up the process and drops out a possible RGB round-trip. I did rewrite the resampler, however, in order to add AMD64 support and I expect to add 8-bit channel support later to allow all planar formats to be resampled.

The display subsystem was also improved in 1.6.0, most notably that it now supports planar YCbCr overlays. If you load an Avisynth 2.5 script it is now possible to use hardware overlay to display YV12 output. Note that some video drivers don't ship with correct defaults for overlay contrast/saturation and you may notice a shift in the image; this usually can be corrected in your video driver's control panel. Preliminary OpenGL and Direct3D 9 drivers are now exposed, although disabled by default in Preferences. The OpenGL driver supports point/linear filter mode selection and the Direct3D 9 driver also supports bicubic. Bicubic mode requires an NVIDIA GeForce2 or better, or an ATI RADEON 7xxx or better; quality is better on GPUs that support pixel shader 1.4. One of the reasons I have begun working on 3D drivers is that the Microsoft DirectX team has hinted that DirectDraw's days are numbered. This is unfortunate as Direct3D makes a lousy replacement for DirectDraw, being much more work for lower performance, but at least it is still better than GDI.

VirtualDub 1.6.0 now supports reading type-1 DV files. I bought a copy of SMPTE 314M and implemented a DV video decoder; a DV codec is no longer required. (The 8x4x2 IDCT is still in floating-point, but it isn't used often.) Audio support was actually harder for two reasons: most of the DV audio modes are only covered in the much more expensive ISO/IEC 61834, and the audio stream isn't always locked. I "solved" the latter by loading the audio in ten-frame chunks and resampling them to the correct length. This means that even in Direct Stream Copy mode the audio may be modified slightly. However, the difference is usually not more than a sample or two in duration, 48KHz audio seems to always be locked, and it has the side effect of fixing timing variations. There may be some stuttering during preview if you are playing a DV file off of a slow link, due to the huge block size.

The image sequence code now supports progressive JPEG; it does not use the Independent JPEG Library (IJL), but the quality factors are the same. One issue, though, is that quality level 100 may produce images that show high-frequency artifacts in other applications, such as Internet Explorer and ACDSee 3.0. I tracked this down to a problem with the fast integer IDCT in the IJL library; using IJL with the more precise IDCT fixes the decoding. Another issue that is on my end is that reading a JPEG file that comes from a digital camera may result in a black border, due to insufficient parsing of EXIM headers. I know that PNG support has also been requested; I have working code for decoding PNG (8K!) but haven't plugged it in yet.

And finally, for programmers:

The system library has been relicensed from the GPL to the zlib license for 1.6 -- VirtualDub itself remains under GPL, but system/* and h/vd2/system/* can now be used in programs with other licenses. If anyone needs to make portable, dual-licensed code that can be linked into VirtualDub, this should make it easier. Unfortunately, there are two issues with the library: some of the files still have the old license text, and there are __declspec(thread) variables that will prevent it from being used in a DLL. I'll fix these for 1.6.1.

I fixed compile errors with both the prerelease DDK VC8 compiler and with Visual Studio .NET 2005 Beta 1, including the stupid CRT deprecation warnings that the latter added. However, I have not shipped VS2003 or VS2005 project files because of how much of a pain it is to fix up the converted project files, most notably removing unwanted compiler flags (/GS) and redoing the AMD64 build. For those of you who are still experimenting with the VirtualDub source code on Win95/98/ME, be warned: I have decided that unless it is a disaster like Visual Studio .NET (2002) was, I will be switching to Visual Studio .NET 2005 when it is released. None of the .NET compilers will run on 95/98/ME. Users won't have to worry about this, though, as the generated code will still run, and I haven't even dropped Windows 95 + Pentium support. Yet.

39 comments | Sep 08, 2004 at 19:36 | default

Comments

Comments posted:

Huzzah, DV support at last! Thank you :)

Chris Payne - 09 09 04 - 03:36

Hi.
I from Russia.
I using VirtualDub and i like it.
DV support ?! Sorry? i don't know what this :(. If it it mpeg2 that's very good. On mpeg2 i mean that the virtualdub can open dvd video files :)

P.S. Sorry me for my english :)

Lex_Luthor - 09 09 04 - 09:11

Hi a am from Russia to, VirtualDub the best keep going...

Hunter - 09 09 04 - 09:31

Should have DVD Ripping mode!

Anonymus - 09 09 04 - 15:37

You should make it skinable!!!

Someone - 09 09 04 - 15:39

No skins! No skins!

rec - 10 09 04 - 03:29

Congrats. Most impressive work do you have put in this release. I really like to do DV stuff in it. I would like to see a GUI rework of the tool to make it more advanced like yet. In 1-2 month i can help you with the grafik part of a GUI.

Norbert - 10 09 04 - 05:07

I collect vintage video which I have been digitizing via a mini-DV camera. I want to transfer the DV video via firewire from mini-DV tape to a mirrored RAID array on my PC for storage and backup. I was going to use Adobe Premiere because I was under the impression that as long as you don't apply filters or effects, it doesn't re-encode the video (even if you splice around frames) thus saving quality, but its obviously overkill for what I’m doing – just capture, trim excess frames, and store to individual clip files. Is this latest version of VirtualDub doing the same literal copy of data from the camera into the avi wrapper, or is it decoding/re-encoding the data such that there might be quality loss? (And what about the audio which I notice you mention in today's post? Will that change or get 'fixed'?) Thanks sincerely-

There are plenty of DVD ripping tools.
Virtualdub is an editor. And a nice one at that.
Theres no point adding useless features when other apps do the same thing.

Keep it simple and fast.

ro' val - 10 09 04 - 17:27

Would there be any point in being able to compile with Intel C++ Compiler 8.x?

Igor - 10 09 04 - 21:12

@david:
the correct idiom is KISS - keep is short and simple, yet your point is absolutely true

very nice changelog! yuv and dv support rock!

erwin - 10 09 04 - 21:43

Man, you're an absolute champion. I slip my leash next
Saturday, so I'll drink a toast to your continual good health.

Pity about the increasing compiler requirements... but that's life.

Paddywhacker - 10 09 04 - 23:51

Native MPEG-2 suuport would be nice, though. What other top formats do we use nowdays? And another thing that would be nice is some kind of setting save option, so i can close an edited movie and continue loading settings later on. Right now they does not work. At least it does not save the frame settings if I have cut something...

Anyway, thank you for JPEG export and nice scroller. Hope to see final version soon and actually to get fccHandler's MPEG-2 version based on 1.6. ;)

Congratulations for the good work :)
Is(Will) there (be) a way to acces files encoded in CyberLink Audio&Video/SP? (codec installed, but i have the 'No video frames found in MPEG file' error)

JackAttack - 12 09 04 - 22:51

the DV type-1 support + audio is very much welcomed. i always had to extract the audio from the video making a huge wav file then only load it up in virtualdub 1.5.10

and um, i think the audio portion is screwed? i tried encoding a video with an 'loaded' audio source but saving it as an .avi resulted in no audio video file and doing saving .avi in a job causes virtualdub 1.6 to crash right after the video encoding is done.

Tenshin - 13 09 04 - 05:23

Hi there,

it's good to see that Avery is putting lots of his time in improving this damn good program. What I'd like to see is a port to LINUX.

Keep working buddy, it's much appreciated.

lixen - 13 09 04 - 16:36

I am very excited to use this program. I hope it comes to my expectations. I have been using adobe products for capturing. I hope since dv codec is present in this product we can expect good results.

Thanx a lot..

Ash

Ash - 14 09 04 - 07:50

Hi. Simply want to say "thank you" for all your hard work on VirtualDub. It's a great program.

Yuri - 14 09 04 - 08:48

Hi, I am from Serbia, long time user, first time caller :)
Do NOT make VirtualDub skinable! This is not Winamp, damn it!
And yes, please add MPEG2 support.

Voodoo - 14 09 04 - 15:36

I've been using VirtualDub for a couple of years now, it is a brilliant piece of work, thanks a heap. I'm pleased to see you are still developing it.

Regards,
JAW
Perth Western Australia.

JAW - 15 09 04 - 01:37

Hi! May i give you some ideas, guys? :). First of all, about MPEG2 import filter. This thing works very hard with big *.mpg files (>1 gb). For example, if i need to cut (and convert to avi) a small region at the end of a file i must wait a long time while import filter split audio and video tracks entirely(or do something else, i dont know how exactly it works). It would be great if you could add a simple dialog before import procedure with a direct show decoder based player, that user could select the region he want to work with.
(sorry for my heavy russian accent..)

With Best Regards, Dude (St.Petesburg, North Russia)

Dude - 15 09 04 - 12:31

A good reference for DV encoding/decoding is the libdv source code (see URL).

I would be very happy to see a high-quality open-source DV encoder. libdv's encoder is not very good.

This software is great, maybe the only thing I would need more is to be able to acces my LAME MP3 encoder in the audio processing portion, LAME is really the best one the is. How can I add it in?

your mom - 15 09 04 - 20:47

Avery, thanks so much for your hard work on VirtualDub over the years. I use a lot of open-source software, and VirtualDub is definitely one of the most solid and useful of these programs. It is truly an indispensible tool to me, as a video-editing hobbyist/tinkerer.

Matt - 15 09 04 - 21:25

Dan Maas you have to download a special version of lame that works with virtual dub. Try googling for it.

Kenny - 16 09 04 - 19:53

EXCELENT WORK

hans - 17 09 04 - 13:35

Hi
I frequently use your tool for transcoding files into different formats. I don´t know any other tool that works better. to me it would be the greatest loss stopping development on virtual dub.
this tool is the perfect example for modern and smart programming.
Thanks a lot.

Greetz from Germany.

random - 18 09 04 - 08:07

A great video editing tool.

Why don't you develop a linux port of VirtualDub ?

2027 - 20 09 04 - 07:20

The DV decoding is a great improvement. Anyone ran into problems with loading processing settings ?

dekrypter - 20 09 04 - 09:10

A great tool. :-) I use it to fix broken AVI-files and to re-sync audio/ video for my DVD-DIVX player.
It would be great if this feature could be improved. Perhaps you can add a DIVX-standard compatibility check and a feature to fix those compatibility problems.

Regards
Jens from Germany

Jens - 21 09 04 - 19:28

Hi... does the author know of a way to permanently remember the CROP sectings in capture mode ?
(ie..make them stick) It really bugs me that I have to set it up everytime. cheers

Granulated - 22 09 04 - 10:15

Hi,

Great tool, I have been using it for a few years.

Is there any chance that you might consider add DV capture function to it, I mean through the IEEE 1394 port. Microsoft has a sample program named DVcap.exe in their DirectX SDK with source code.

yongchao - 22 09 04 - 15:57

Yes, a DV capture (from IEEE1394) would be fantastic. At present I use WinDV and then have to switch to VD for editing.

Great program by the way. Excellent work!

Good to see you've kept the app small and useful. Don't *ever* add those useless trendy "features" that so many other programs seem to have.

PS: Other DV capture apps I know of are DVapp & DVIO.

Owen, Australia.

Owen - 22 09 04 - 23:24

OK .!!!!!!!

jura - 23 09 04 - 18:36

It is super !!!!!!!

jura - 23 09 04 - 18:37

Hi,
Thanks for making VirtualDUB
The inclusion of DV is fantastic. DV capture and output should be a natural progression.
Way to go!

Pinnacle Studio sucks!!! this program is so much better....
Am only looking for a good way to resync audio/video when frames are lost in the capture.
I have to use studio for that (crash crash), but for all the other stuff I use Vdub.
All of the work is much appreciated!
Rob