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

Calendar

« July 2014
S M T W T F S
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

Archives

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 

§ MMX throughout the years

VirtualDub, as a video program, is a very heavy user of MMX integer vector math instructions in x86 CPUs; in fact, most of the inner processing loops are almost exclusively MMX. Part of the reason is ease of coding, since it's easier to operate on an (R,G,B) triplet with one MMX instruction than with three separate ones and trying to juggle three times as many values in only eight registers. Another, though, is the significant performance gains that result.

A problem with using MMX, and its successor instruction set extensions SSE and SSE2, is that you have to pay careful attention to what CPUs support what extensions and how they perform on each. Here is a braindump on what my experiences have been throughout the years while working on VirtualDub.

(Read more....)

§ VirtualDub's command line switches

While I'd like to say that the reason I'm posting this is to republish some info I dropped from the old help file, the real reason is that I want to stem the flow of comments about watermelons. I had no idea that salting watermelon was so common. One of my friends suggested that the salt draws water out and makes the melon taste sweeter, but I buy that about as much as the diarrhea-prevention theory a commenter posted. When I tried it I all I tasted was salty watermelon. Maybe I used the wrong kind of salt.

Anyway, about VirtualDub's command-line parameters....

VirtualDub exposes a few switches on its command line that can be used to automate its behavior. Nearly all of them are centered around running scripts, so you cannot do much that is not scriptable -- in particular, you cannot script capture mode at all. However, you can run jobs automatically, which is how the various front-end apps work.

(Read more....)

§ I think salted watermelon is inappropriate

In the prelude episode to the Japanese anime series Mahoromatic, the android maid Mahoro slices a watermelon up, sprinkles some salt on the slices while singing a cute song, and hands one of them to the young master Suguru. The two then enjoy melon while talking about the upcoming series.

I had some watermelon lying around and decided to try salting it a little bit.

Bleccccch. I'm not trying that again.

I think salted watermelon is inappropriate.

(Read more....)

§ Does Hyperthreading Technology speed up VirtualDub?

"VirtualDub currently isn't multithreaded and only takes 50% of my hyperthreaded CPU. Would it run twice as fast if it were?"

No, and the premise is incorrect anyway.

VirtualDub is multithreaded -- if it weren't, the UI would lock every time it rendered a frame. Rendering operations use three threads: UI, I/O, and processing. Preview operations also create a fourth thread for timing blits. The reason for low CPU utilization on second and subsequent logical CPUs during a render is that all video operations are serialized in the processing thread; audio operations take place on the I/O thread however so if you have audio filtering or compression those will execute in parallel. To take full advantage of dual CPUs you have to balance operations across multiple threads and make sure you're not just wasting time ping-ponging data between the CPUs. VirtualDub isn't written to do this currently.

But what about Pentium 4 CPUs with Hyperthreading Technology? Everyone has one, so VirtualDub should be tuned for dual CPUs soon, right?

Well, not quite.

(Read more....)

§ RTFM

While trying to find a way to set the frame rate on a WDM capture device in DirectShow and not have it just return S_OK and ignore my setting, I came across the following documentation in the DirectX 9.0c SDK for IAMVideoControl::GetFrameRateList():

Return Values
Returns an HRESULT value that depends on the implementation of the interface.

Whew, that's a relief. I thought it would return random values instead.

(It isn't easy to write documentation, and it's even harder when a technical writer who's not the API designer is doing it. However, some of the documentation in MSDN is downright silly.)

(Read more....)

§ Available MP3 frequency rates and obtaining the Professional codec

Another common question I get is why VirtualDub can't encode MP3 above 56Kbps. Remember, VirtualDub has no audio encoding support of its own -- it relies solely on codec installed in the Windows Audio Compression Manager (ACM) to compress audio, and that usually means the Fraunhofer-IIS MP3 codec. (You may also have the Lame ACM and/or Creative MP3 codecs, but these are known to trigger hangs and crashes on some systems.) There are at least five major versions of the MP3 codec in existence:

All versions will decode any format, but because they all register under the entry "msacm.l3acm" only one can be installed at a time. What often happens is that some application will install and overwrite the entry with the Advanced codec, thus dropping your encoding capability to 56Kbps. This will break any older application that might have installed and relied on the Professional codec. Changing the l3acm entry back to l3codecp.acm under Drivers32 in system.ini (95/98/ME) or the Registry (NT/2000/XP) will restore the higher bandwidth modes.

The good news is that for those of you who have lost the Professional version, there is a safe and easy way to obtain it again: install Windows Media Player 10. This installs the recent revision of the Professional version that encodes up to 320Kbps.

(Read more....)

§ Sparse AVIs and AVI failure diagnosis

A couple of days ago I got an email asking what "sparse AVIs" were and how to fix one that wasn't playing properly. The person had converted his AVI to a .sparse file using the "Create Sparse AVI" option in VirtualDub's Tool menu, deleted the original AVI, then discovered that the new file did not open properly in any player or in VirtualDub itself, even after being converted back through the "expand sparse AVI" command. The answer, unfortunately, is that you cannot recover the original AVI from the .sparse file -- it cannot be played in any player. So what are they?

A .sparse file is an AVI file that has had its audio and video chunks emptied and the remaining data swizzled for better compression. The file only contains the header, index, and structure of the AVI file, but none of its payload. Expanding the .sparse file results in a .AVI file that is the same as the original except that all 00dc and 01wb chunks are zeroed. The result looks like an AVI file and can be parsed by any AVI parser, but it cannot be played back as there is no data to decode.

So what are .sparse files good for?

(Read more....)