The Design of Software (CLOSED)

A public forum for discussing the design of software, from the user interface to the code architecture. Now closed.

The "Design of Software" discussion group has been merged with the main Joel on Software discussion group.

The archives will remain online indefinitely.

Learning to Program for Audio and Video

Hi all:

I'd like to learn more about writing software to play and manage audio and video -- how it all works, what the different options are (from the developer's perspective) and so on.  How would a developer go about learning how to write an application like WinAmp from the ground up, for instance?  Or a simple DVD player?

I've Googled around a bit of course, but figured you all might have some experience to share, and be able to point me in the right direction, maybe to a good few books on the subject or something.  (Looking to build primarily for Windows, incidentally.)

Thanks in advance,
Christian Nunciato Send private email
Tuesday, August 28, 2007
If you don't have an EE, DSP programming may be a bit over your head.

I would recomend you start studying anolog filter design, since digital filter design is based on anolog counterparts. Most audio processing is applications of digital filters. Video processing is essentially 2D audio processing.
joshua Send private email
Tuesday, August 28, 2007
I should clarify -- I'm a developer with about 10 years of experience; I'm just not familiar with this particular domain. 

So -- any books or anything, online resources or anything at all, anyone might recommend?
Christian Nunciato
Tuesday, August 28, 2007
If your platform is Windows, look up Microsoft's DirectShow API.
Tuesday, August 28, 2007
Yes, look up the DirectShow API, and that's all you really need.  You can throw together a functional media player in less than a day by following sample programs.  It's all just connecting nodes in a filter graph.  Like you'd connect a node that knows how to load a .mpg from a file to a node that knows how to decode an mpeg stream to a node that knows how to display it in a Window.

Code Project is a good resource for multimedia stuff.

Then with that knowledge you can figure out whether you need to go lower level or whether that's good enough for you.
Tuesday, August 28, 2007
Awesome, thanks very much to you both.
Christian Nunciato
Tuesday, August 28, 2007
When you say "from the ground up", do you mean "not using Media Player or Core Audio"?  If yes, then there's some learning curve: discretization and quantization, Kotelnikov–Shannon theorem, FFT and DCT, intraframe vs. interframe compression, etc.  It's fun, but if you go this route, be prepared for lots of wheel reinvention.

Winamp indeed was written from the ground up.  Back then operating systems did not provide libraries to handle audio and video, so Justin had to write decoders.  And computers were rather slow, so he had to hand optimize them. 

There's not that many reasons to do it the same way now.  Just use the API provided by the OS.
Jeff Zanooda Send private email
Tuesday, August 28, 2007
Sunday, September 02, 2007

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
Powered by FogBugz