Monthly Archives: November 2005

Custom Video Codec For 3D Hardware

Exploiting capabilities/limitations of available video hardware is nothing new in terms of multimedia programming. The old IBM VGA hardware had a 320×200 resolution mode that could display 256 unique colors. For years, that drove many graphic-heavy applications (notably games but also certain video applications such as FLIC files originally generated by Autodesk software). Back when I was hacking on the Sega Dreamcast I started to brainstorm about a vector quantizer video codec that could take advantage of the PowerVR 3D graphics hardware present in the console.


Sega Dreamcast

Continue reading

Video Coding Concepts: Frame Types

This article is maintained in Wiki format at http://wiki.multimedia.cx/index.php?title=Frame_Types.

Ultimately, encoded video data needs to be decoded to 2-dimensional arrays of pixel values and presented to the user (or perhaps transcoded to a different format). All of these frames look complete to the user. But the frames often can not stand by themselves. They usually need information from other frames in order to make their presentation complete.

Let’s talk basic video frame terminology. First, there is the intraframe. This is also known as a keyframe. An intraframe is one that can stand on its own. It requires no other frames. It carries with it all the information needed to be decoded.

Continue reading

Latest Apple Trailers

I got my AMD64 machine back in January and installed a native 64-bit Linux OS on it. One of the first things I discovered is that I could not watch most Apple QuickTime movie trailers since they used the QDesign Music Codec (QDM2) for audio which, until recently, only worked under Linux on i386-type architectures using Apple’s Win32 binary decoder. The xine team finished hooking up FFmpeg’s QDM2 support this past weekend (it’s in CVS right now). So I thought I would finally get to enjoy a tremendous backlog of movie trailers that have been piling up since last January.


QuickTime 7
Then along came QuickTime version 7…

Now, it seems that all current QuickTime movie trailers available directly from Apple have moved to using H.264/AVC1 for video and AAC for audio. I had seen that Apple was starting to post hi-def QT trailers (480P, 720P, and 1080P) but I was unaware that the higher variations also have 5.1 AAC audio.

BTW, if you want Apple trailers but do not wish to put up with working through Apple’s site to find the correct link, Dave’s Trailer Page has an amazing archive of direct movie trailer links in no-nonsense HTML.

Wouldn’t you know, when the open source community reverse engineers an implementation of QDM2 Apple quits using it for the majority of their material. The same thing happened in 2002 when the open source community got an implementation of Sorenson Video 1 (SVQ1) and Apple started using SVQ3. Fortunately, the community got open source SVQ3 support when SVQ3 was still quite common. But it’s like Apple is always one step ahead. Maybe that’s why I can never keep straight the 53 or so different variations of iPods.

Duck TrueMotion 1 Redux

Some time ago, Alex Beregszaszi and I created an FFmpeg video decoder to handle Duck TrueMotion 1 data. However, there are two major variations of this data format: 16-bit and 24-bit. The FFmpeg decoder presently only handles 16-bit data. There is a non-negligible number of games from the mid- to late-1990s that used this format for their FMV and many of them use the 24-bit variant.


Virtua Cop 2 Intro
Virtua Cop 2, Sega Saturn,

one of the Duck TM1-using games that uses the 16-bit variant

Continue reading