Tomasz Malesinski wrote:
1. Adjusting what is in IRAM and what is not.
I started implementing the idea discussed some time ago on IRC. I
introduced macors like IBSS_ATTR_MPC_SAMPLE_BUF. The macros may be
defined in config-<model>.h to be empty or not. The default values are
defined in config.h or, as I think is better, in files like
config-tremor.h, which are included by all files which may use a
specific macro.
Good, but perhaps it would be better to move these changes
to config header files located in the codec directories themselves,
so we don't end up with target config files even more crowded
than now?
2. Decreasing the audio buffer size.
There is no memory for 5s audio buffer. Currently I use a 0.5s
(~80kB) long buffer. I guess we should create a SMALL_AUDIO_BUFFER or
similar config macro. Crossfeeding should be probably disabled when
using a small audio buffer.
Crossfading pretty much has to be disabled when you're using
buffers this small, unless you like really, really small crossfades :)
5. Noninterleaved output from dsp.
The iFP hardware uses noninterleaved samples or at least I don't know
how to make it accept interleaved ones. An option to make audio buffer
noninterleaved could save some unnecessary processing on iFP. I
haven't tried to implement this.
Rockbox pretty much uses non-interleaved audio for all
audio processing steps anyway, so I don't see this as much
of a problem. Perhaps some of our other targets support
this as well.
6. Codecs optimization.
Although I believe I switched the CPU to 60 MHz, I have performance
problems. After some optimizations I managed to play 80 kbps Ogg
Vorbis file in realtime. A 192 kbps Ogg and all mp3s still skip.
Sounds like we're reading for a bunch of optimising fun, then.
The Tremor codec contains optimizations of vector operations (merged
with the Coldfire code), MDCT (block load and store instructions) and
Huffman decoding. The MP3 codec contains only one optimization in
synth.c, with a small impact on decoding speed. More is needed.
Thanks, I just might steal some of those right now... :)
Thom