On Sat, Aug 14, 2010 at 09:37:50PM +0200, Bertrik Sikken wrote: > Hi all, > > The AMSv2 players currently play back audio with quite a big pitch > and speed error. They play about 1.1% too "flat" and slow. This is > big enough for quite a few people to notice it, see for example the > anythingbutipod and head-fi forums. > > This playback error is the result of how the playback PCM clocks are > currently derived: they are derived from the main CPU clock at 240 MHz > as follows > Fpcm = Fcpu / (128 * divider), where we can control the divider. > It turns out that the divider would need to be 42.52 for 44100 Hz > playback. We round this up to 43, giving a rounding error in PCM > frequency of 1.1%. > > There are several solutions for this: > 1) change the main clock to a different frequency like 248 MHz > (just like on AMSv1) this would give an error of just 0.15%. > We tried this but it gave problems with other peripherals no > longer working reliably (micro-SD). > 2) use the second PLL (PLL B) available in the SoC (which is > currently unused) to generate a different frequency which gives > a more accurate playback rate. > > I propose to implement solution 2, see also > http://www.rockbox.org/tracker/task/10906 >
I second this. We have a few other timing issues with certain targets (ie, USB) that would be greatly helped by using the PLL - and would also let us remove some of the idle loops (which are a huge PITA to maintain across different compilers and optimization flags) with proper timers. Andrew