summaryrefslogtreecommitdiff
path: root/apps/plugins/mpegplayer/audio_thread.c
diff options
context:
space:
mode:
authorMichael Giacomelli <giac2000@hotmail.com>2008-09-20 22:06:12 +0000
committerMichael Giacomelli <giac2000@hotmail.com>2008-09-20 22:06:12 +0000
commit4e36a2b991d58a40d7ea12c9bf41e93736b8b024 (patch)
treee26deeca8209a689bfebfcca18c4dad028d70260 /apps/plugins/mpegplayer/audio_thread.c
parent3d0d6d6bb25eb933d60ca5451b170eaae17dbb65 (diff)
downloadrockbox-4e36a2b991d58a40d7ea12c9bf41e93736b8b024.zip
rockbox-4e36a2b991d58a40d7ea12c9bf41e93736b8b024.tar.gz
rockbox-4e36a2b991d58a40d7ea12c9bf41e93736b8b024.tar.bz2
rockbox-4e36a2b991d58a40d7ea12c9bf41e93736b8b024.tar.xz
Commit FS#9318 - MP3 synthesis filter on COP. Loads the MP3 synth filer on to the CoProcessor on all PortalPlayer devices, resulting in an ~90% speedup according to test_codec on the Sansa. Real world improvement is somewhat less, but still considerable. Allows MP3 decoding at 30MHz without boosting, or use of more DSP/EQ with less boosting/skipping, thus improving battery life. Minor changes to mpegplayer to retain compatibility with libmad changes. Should be no significant changes for other targets or codecs.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18557 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins/mpegplayer/audio_thread.c')
-rw-r--r--apps/plugins/mpegplayer/audio_thread.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/apps/plugins/mpegplayer/audio_thread.c b/apps/plugins/mpegplayer/audio_thread.c
index 838dcad..3515815 100644
--- a/apps/plugins/mpegplayer/audio_thread.c
+++ b/apps/plugins/mpegplayer/audio_thread.c
@@ -55,6 +55,9 @@ static struct mad_stream stream IBSS_ATTR;
static struct mad_frame frame IBSS_ATTR;
static struct mad_synth synth IBSS_ATTR;
+/*sbsample buffer for mad_frame*/
+mad_fixed_t sbsample[2][36][32];
+
/* 2567 bytes */
static unsigned char mad_main_data[MAD_BUFFER_MDLEN];
@@ -229,6 +232,10 @@ static int audio_buffer(struct stream *str, enum stream_parse_mode type)
/* Initialise libmad */
static void init_mad(void)
{
+ /*init the sbsample buffer*/
+ frame.sbsample = &sbsample;
+ frame.sbsample_prev = &sbsample;
+
mad_stream_init(&stream);
mad_frame_init(&frame);
mad_synth_init(&synth);