Monkey's Audio
Overview
Monkey's Audio (also called APE or MAC) is a lossless compression format. The home page is
http://www.monkeysaudio.com
Monkey's probably has the highest compression of all the lossless codecs, but it comes at a price - decoding is very CPU intensive, and not all compression levels are playable in realtime in Rockbox.
Monkey's audio has five compression modes, with each mode compressing to a smaller size, but significantly slower to decode than the previous one. -c2000 or -c3000 are a good compromise between compression size and decoding speed.
- -c1000 - "fast"
- -c2000 - "normal"
- -c3000 - "high"
- -c4000 - "extra high"
- -c5000 - "insane"
In addition, Monkey's Audio (currently at version 3.99) has been through many incompatible format changes in its life - most versions of the encoder produce files which are not decodable by earlier versions of the decoder.
Current Status
The Rockbox Monkey's Audio codec only supports v3.97 or later files.
Rockbox supports APEv2 tags in Monkey's Audio files, but does not read (or skip) id3v2 tags, which some applications also add to APE files. If a file has an id3v2 tag, it won't work in Rockbox.
Performance
The codec has already been optimised a lot. There's some further potential by using both CPU cores on
PortalPlayer targets.
Approximate decoding speed for v3.99 files on the various CPUs in Rockbox-supported DAPs are as follows (figures for 44.1kHz 16 bit stereo files):
Devices |
SVN rev. (1) |
-c1000 |
-c2000 |
-c3000 |
-c4000 |
-c5000 |
iPod 1st Gen..3rd Gen (80MHz ARM7TDMI: PP5002) |
r24512 |
166% |
111% |
69% |
16% (2) |
2.0% (2)(3) |
iPod 4th Gen, Mini 1st Gen; Iriver H10; m:robe 100 (80MHz ARM7TDMI: PP5020) |
r24512 |
153% |
101% |
63% |
23% |
2.8% (3) |
iPod 5th Gen, Mini 2nd Gen, Nano 1st Gen; Sansa c200, e200 (80MHz ARM7TDMI: PP5022/PP5024) |
r24572 |
169% |
112% |
70% |
24% |
? (2) |
Iriver H1x0/H300, iAudio X5/M5/M3 (124 MHz ColdFire 5249/5250) |
r24512 |
258% |
185% |
133% |
55% |
13.5% |
iPod Nano 2nd Gen (192MHz ARM940T: S5L8701) |
r24786 |
433% |
289% |
187% |
64% |
2.6% |
Cowon D2 (192MHz ARM926EJ-S: TCC7801) |
r24590 |
461% |
330% |
221% |
86% |
20% |
Gigabeat F (300MHz ARM920T: S3C2440) |
r24512 |
654% |
458% |
294% |
106% |
22% |
Gigabeat S (528MHz ARM1136JF-S: i.MX31L) |
r26004 |
1378% |
1034% |
824% |
404% |
112% |
Sansa Clip (250MHz ARM9TDMI: AS3525) |
r21234 |
668% |
446% |
275% |
97% |
9% |
Sansa Clipv2 (250MHz ARM926EJ-S: AS3525v2) |
r27897 |
580% |
409% |
274% |
108% |
26% |
- starting with r24512, tests are done using the standard test files.Differences to earlier tests are minimal (<1% relative).
- filter buffer(s) taken out of IRAM in favour of a larger reciprocal table for optimised division.
- insane filter buffer does not fit into IRAM.
Note that a speed somewhat above 100% is required to play without skipping during normal use.
CategorySoundCodecs: Monkey's Audio (APE)
Copyright © by the contributing authors.