QUOTE(loophole @ May 27 2004, 01:43 AM)
The iPod has 2, (count em) processors. Now with Apple's firmware it works like this, the ARM core drives the display, the filesystem, the input, the code to update playlists, and probably quite a bit of I/O (witness the occasional GUI lag when spinning up the HD and sometimes reading in a new song). There is another chip dedicated for the decoding. It's the PortalPlayer PP5002B. This is in the 1G and 2G iPods anyway, not sure about 3G or iPod mini. Anyway, it, in hardware decodes the following: MP3, WMA, AAC, and PCM (WAV, AIFF). It also has the ability to encode to WMA and MP3, but apple never took advantage of this feature, nor did they enable WMA playback. It also has a 5 band EQ (which is why presets are only available; user presets cannot be transferred from iTunes, as iTunes has a 10 band EQ.)
The iPod PP5002 has two ARM7TDMI cpu cores. In most respects they are identical, but as far as processing goes they are just normal generic cpus. Some systems have a dual core where one is a generic cpu and the other is a DSP but the iPod isn't like that.
You're right that the Apple firmware offloads the decoding to the second cpu but additionally they have highly optimised codecs as opposed to the open source versions we rely on, and they are optimised to take advantage of the fast on-chip ram on the iPod.
Since all the audio processing done on the iPod is software, so the 1g could equally run flac/ogg or whatever as the 3g.
Anyhow back to the original point of the thread. I did try out the mpcdec C++ implementation but it was quite slow. There was another version that had some assembler code but that one was incomplete (no player app). Any mpc experts with some suggestions as to a good fast, integer mpc player for the ARM cpu?