1
0
Fork 0
forked from len0rd/rockbox

Put Musepack output data array back in IRAM for faster DSP processing. Patch by Andrew Cupper.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10844 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Thom Johansen 2006-09-01 12:09:20 +00:00
parent 5e182e0862
commit 7197c0e588
3 changed files with 13 additions and 9 deletions

View file

@ -124,8 +124,8 @@ typedef struct mpc_decoder_t {
MPC_SAMPLE_FORMAT V_L[MPC_V_MEM + 960]; MPC_SAMPLE_FORMAT V_L[MPC_V_MEM + 960];
MPC_SAMPLE_FORMAT V_R[MPC_V_MEM + 960]; MPC_SAMPLE_FORMAT V_R[MPC_V_MEM + 960];
MPC_SAMPLE_FORMAT Y_L[36][32]; MPC_SAMPLE_FORMAT (*Y_L)[32];
MPC_SAMPLE_FORMAT Y_R[36][32]; MPC_SAMPLE_FORMAT (*Y_R)[32];
MPC_SAMPLE_FORMAT SCF[256]; ///< holds adapted scalefactors (for clipping prevention) MPC_SAMPLE_FORMAT SCF[256]; ///< holds adapted scalefactors (for clipping prevention)
//@} //@}

View file

@ -121,6 +121,8 @@ static inline mpc_int32_t mpc_decoder_huffman_decode_fastest(mpc_decoder *d, con
static void mpc_move_next(mpc_decoder *d); static void mpc_move_next(mpc_decoder *d);
mpc_uint32_t Speicher[MPC_DECODER_MEMSIZE]; mpc_uint32_t Speicher[MPC_DECODER_MEMSIZE];
MPC_SAMPLE_FORMAT Y_L[36][32];
MPC_SAMPLE_FORMAT Y_R[36][32];
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// utility functions // utility functions
@ -380,8 +382,8 @@ mpc_decoder_reset_synthesis(mpc_decoder *d)
static void static void
mpc_decoder_reset_y(mpc_decoder *d) mpc_decoder_reset_y(mpc_decoder *d)
{ {
memset(d->Y_L, 0, sizeof d->Y_L); memset(d->Y_L, 0, sizeof Y_L);
memset(d->Y_R, 0, sizeof d->Y_R); memset(d->Y_R, 0, sizeof Y_R);
} }
static void static void
@ -395,8 +397,8 @@ mpc_decoder_reset_globals(mpc_decoder *d)
d->StreamVersion = 0; d->StreamVersion = 0;
d->MS_used = 0; d->MS_used = 0;
memset(d->Y_L , 0, sizeof d->Y_L ); memset(d->Y_L , 0, sizeof Y_L );
memset(d->Y_R , 0, sizeof d->Y_R ); memset(d->Y_R , 0, sizeof Y_R );
memset(d->SCF_Index_L , 0, sizeof d->SCF_Index_L ); memset(d->SCF_Index_L , 0, sizeof d->SCF_Index_L );
memset(d->SCF_Index_R , 0, sizeof d->SCF_Index_R ); memset(d->SCF_Index_R , 0, sizeof d->SCF_Index_R );
memset(d->Res_L , 0, sizeof d->Res_L ); memset(d->Res_L , 0, sizeof d->Res_L );
@ -1487,6 +1489,8 @@ void mpc_decoder_setup(mpc_decoder *d, mpc_reader *r)
LOOKUP ( mpc_table_HuffDSCF, 16, LUTDSCF ); LOOKUP ( mpc_table_HuffDSCF, 16, LUTDSCF );
d->Speicher = Speicher; d->Speicher = Speicher;
d->Y_L = Y_L;
d->Y_R = Y_R;
#if defined(CPU_COLDFIRE)&& !defined(SIMULATOR) #if defined(CPU_COLDFIRE)&& !defined(SIMULATOR)
coldfire_set_macsr(EMAC_FRACTIONAL | EMAC_SATURATE); coldfire_set_macsr(EMAC_FRACTIONAL | EMAC_SATURATE);
@ -1642,8 +1646,8 @@ mpc_bool_t mpc_decoder_seek_seconds(mpc_decoder *d, double seconds)
void mpc_decoder_reset_state(mpc_decoder *d) { void mpc_decoder_reset_state(mpc_decoder *d) {
memset(d->Y_L , 0, sizeof d->Y_L ); memset(d->Y_L , 0, sizeof Y_L );
memset(d->Y_R , 0, sizeof d->Y_R ); memset(d->Y_R , 0, sizeof Y_R );
#ifdef SCF_HACK #ifdef SCF_HACK
memset(d->SCF_Index_L , -128, sizeof d->SCF_Index_L ); memset(d->SCF_Index_L , -128, sizeof d->SCF_Index_L );
memset(d->SCF_Index_R , -128, sizeof d->SCF_Index_R ); memset(d->SCF_Index_R , -128, sizeof d->SCF_Index_R );

View file

@ -63,7 +63,7 @@ mpc_bool_t canseek_impl(void *data)
return true; return true;
} }
MPC_SAMPLE_FORMAT sample_buffer[MPC_DECODER_BUFFER_LENGTH]; MPC_SAMPLE_FORMAT sample_buffer[MPC_DECODER_BUFFER_LENGTH] IBSS_ATTR;
mpc_uint32_t seek_table[10000]; mpc_uint32_t seek_table[10000];
#ifdef USE_IRAM #ifdef USE_IRAM