Original and current iPod series too slow for OGG support

A Rio Audio Engineer Hugo Fiennes checked out the iPod series on whether it could support the open source OGG Vorbis codec.  The current and first two generations of the iPod all use the PP5002D CPU.  This CPU has a very limited 96k of SRAM which is just big enough to hold either the MP3 or AAC code while playing.  Code in external memory runs at only half the speed per CPU cycle and hogs more power due to its inefficient way of caching.  Unfortunately the OGG code is too big to fit in its internal memory which means if implemented it could hog 30% to 40% more battery power which would be unacceptable due to iPod's short battery life even with MP3 and AAC.

 

The iPod mini series uses a much newer PP5020 CPU which does not suffer from this cache or power issue and thus would be suitable for OGG playback with suitable firmware.  However Apple has no intention of implementing support for either OGG or its FLAC lossless version.  Apple appears to be implementing a lossless AAC version instead.

Engineer Hugo Fiennes took a break from his day job as a hardware and firmware designer at Rio Audio (maker of the iPod competitor Karma player, among other things) to give us some more info on the OGG-on-iPod plausibility, including why the iPod mini (and future iPods) might have a better shot at getting OGG support than the older, whiter iPods. There's even information about why Apple may have chosen to implement their 'Lossless AAC' instead of the more widely adopted FLAC lossless format.

Hugo's analysis after the jump:

Firstly, CPUs:

The current iPod gen3 has a PP5002D CPU, the same as the gen1 and gen2. The gen1/2 stored their code from flash, not SDRAM, meaning they had a more limited codesize, and their SDRAM took more power to operate.

The iPod mini has a PP5020 CPU

The Rio Karma (developed here, in Cambridge UK) uses a PP5003 CPU. It plays OGG (and FLAC and MP3 and WMA).

The old 5002:

The 5002 has a "broken" cache (1 wait state per access for program or data, meaning you effectively have half the effective clock rate when running code from external memory). This means that running code that doesn't fit in the internal 96kbyte SRAM of the player is very inefficient, both in terms of CPU cycles and power. MP3 and AAC just about squeeze into the internal memory (one at a time, obviously!), but anything that didn't would result in a big power hit - my guess is 30-40%+. This would be a bad user experience, considering the already short gen3 battery life.

The newer 5003:

The 5003 in the Karma has this particular silicon deficiency fixed. The Karma plays OGG, though it's still a resource hog - you get about 25% less battery life - about 11-12 hours compared to 15+ for MP3 due to the extra cycles and memory requirements when compared to the more svelte codecs. We didn't do a lot of optimisation, so it's running the Vorbis-supplied tremor decoder with only a few tweaks.

The even newer 5020:

The 5020 is based on the 5003, and so has the cache bug fixed. It's capable of playing OGG with 25% or less hit on power (depending how much optimisation is done). I would suspect the 5020 will find its way into the next iPod, as it's cheaper and integrates both the firewire MAC and the USB2 mac/phy blocks which are separate chips on the gen3.

So in summary:

gen3 - In theory possible, but unlikely. mini - Very possible. gen4 (or my guess at what a gen4 would have in it) - Very possible.

 

It would be nice if Apple added OGG support for its player, but then again as the iPod has many other limitations such as non-removable battery , no radio, no Windows Media support and so on , Apple is unlikely going to suddenly add support for other codec's.  But then again, maybe someone will develop unofficial software to add OGG or other additional codec support for the newer iPod and mini series considering how popular the player is.  

 

Feel free to discuss and read more about audio codec's on our Audio Forum.

Source: Gizmodo - Portable Audio

No posts to display