1
0
Fork 0
forked from len0rd/rockbox

Added macros controlling what goes to IRAM on different targets.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11483 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Tomasz Malesinski 2006-11-09 21:59:27 +00:00
parent 2e383a430d
commit 5c54ba49d5
31 changed files with 128 additions and 62 deletions

View file

@ -49,7 +49,7 @@ void oggpack_readinit(oggpack_buffer *b,ogg_reference *r){
} }
/* Read in bits without advancing the bitptr; bits <= 32 */ /* Read in bits without advancing the bitptr; bits <= 32 */
long oggpack_look_full(oggpack_buffer *b,int bits) ICODE_ATTR; long oggpack_look_full(oggpack_buffer *b,int bits) ICODE_ATTR_TREMOR_NOT_MDCT;
long oggpack_look_full(oggpack_buffer *b,int bits){ long oggpack_look_full(oggpack_buffer *b,int bits){
unsigned long m=oggpack_mask[bits]; unsigned long m=oggpack_mask[bits];
unsigned long ret=-1; unsigned long ret=-1;
@ -136,7 +136,7 @@ int oggpack_eop(oggpack_buffer *b){
} }
/* bits <= 32 */ /* bits <= 32 */
long oggpack_read(oggpack_buffer *b,int bits) ICODE_ATTR; long oggpack_read(oggpack_buffer *b,int bits) ICODE_ATTR_TREMOR_NOT_MDCT;
long oggpack_read(oggpack_buffer *b,int bits){ long oggpack_read(oggpack_buffer *b,int bits){
unsigned long m=oggpack_mask[bits]; unsigned long m=oggpack_mask[bits];
ogg_uint32_t ret=-1; ogg_uint32_t ret=-1;

View file

@ -256,7 +256,8 @@ void vorbis_dsp_clear(vorbis_dsp_state *v){
block. The time domain envelope is not yet handled at the point of block. The time domain envelope is not yet handled at the point of
calling (as it relies on the previous block). */ calling (as it relies on the previous block). */
int vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb) ICODE_ATTR; int vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb)
ICODE_ATTR_TREMOR_NOT_MDCT;
int vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb){ int vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb){
vorbis_info *vi=v->vi; vorbis_info *vi=v->vi;
codec_setup_info *ci=(codec_setup_info *)vi->codec_setup; codec_setup_info *ci=(codec_setup_info *)vi->codec_setup;

View file

@ -13,12 +13,16 @@
#define BIG_ENDIAN 0 #define BIG_ENDIAN 0
#endif #endif
/* As of 28 Dec 2005, the Tremor code is too big for IRAM on the iPod, #ifndef ICONST_ATTR_TREMOR_WINDOW
so we temporarily disable ICODE_ATTR - this needs reviewing when it comes #define ICONST_ATTR_TREMOR_WINDOW ICONST_ATTR
to optimising Tremor for the iPod */ #endif
#ifdef CPU_ARM
#undef ICODE_ATTR #ifndef ICODE_ATTR_TREMOR_MDCT
#define ICODE_ATTR #define ICODE_ATTR_TREMOR_MDCT ICODE_ATTR
#endif
#ifndef ICODE_ATTR_TREMOR_NOT_MDCT
#define ICODE_ATTR_TREMOR_NOT_MDCT ICODE_ATTR
#endif #endif
// #define _LOW_ACCURACY_ // #define _LOW_ACCURACY_

View file

@ -312,7 +312,8 @@ static void render_line(int x0,register int x1,int y0,int y1,ogg_int32_t *d){
} }
} }
static void *floor1_inverse1(vorbis_block *vb,vorbis_look_floor *in) ICODE_ATTR; static void *floor1_inverse1(vorbis_block *vb,vorbis_look_floor *in)
ICODE_ATTR_TREMOR_NOT_MDCT;
static void *floor1_inverse1(vorbis_block *vb,vorbis_look_floor *in){ static void *floor1_inverse1(vorbis_block *vb,vorbis_look_floor *in){
vorbis_look_floor1 *look=(vorbis_look_floor1 *)in; vorbis_look_floor1 *look=(vorbis_look_floor1 *)in;
vorbis_info_floor1 *info=look->vi; vorbis_info_floor1 *info=look->vi;
@ -399,7 +400,7 @@ static void *floor1_inverse1(vorbis_block *vb,vorbis_look_floor *in){
} }
static int floor1_inverse2(vorbis_block *vb,vorbis_look_floor *in,void *memo, static int floor1_inverse2(vorbis_block *vb,vorbis_look_floor *in,void *memo,
ogg_int32_t *out) ICODE_ATTR; ogg_int32_t *out) ICODE_ATTR_TREMOR_NOT_MDCT;
static int floor1_inverse2(vorbis_block *vb,vorbis_look_floor *in,void *memo, static int floor1_inverse2(vorbis_block *vb,vorbis_look_floor *in,void *memo,
ogg_int32_t *out){ ogg_int32_t *out){
vorbis_look_floor1 *look=(vorbis_look_floor1 *)in; vorbis_look_floor1 *look=(vorbis_look_floor1 *)in;

View file

@ -105,7 +105,8 @@ static ogg_buffer *_fetch_buffer(ogg_buffer_state *bs,long bytes){
return ob; return ob;
} }
static ogg_reference *_fetch_ref(ogg_buffer_state *bs) ICODE_ATTR; static ogg_reference *_fetch_ref(ogg_buffer_state *bs)
ICODE_ATTR_TREMOR_NOT_MDCT;
static ogg_reference *_fetch_ref(ogg_buffer_state *bs){ static ogg_reference *_fetch_ref(ogg_buffer_state *bs){
ogg_reference *or; ogg_reference *or;
bs->outstanding++; bs->outstanding++;
@ -857,7 +858,7 @@ static void _next_lace(oggbyte_buffer *ob,ogg_stream_state *os){
} }
} }
static void _span_queued_page(ogg_stream_state *os) ICODE_ATTR; static void _span_queued_page(ogg_stream_state *os) ICODE_ATTR_TREMOR_NOT_MDCT;
static void _span_queued_page(ogg_stream_state *os){ static void _span_queued_page(ogg_stream_state *os){
while( !(os->body_fill&FINFLAG) ){ while( !(os->body_fill&FINFLAG) ){
@ -1016,7 +1017,8 @@ int ogg_stream_reset_serialno(ogg_stream_state *os,int serialno){
return OGG_SUCCESS; return OGG_SUCCESS;
} }
static int _packetout(ogg_stream_state *os,ogg_packet *op,int adv) ICODE_ATTR; static int _packetout(ogg_stream_state *os,ogg_packet *op,int adv)
ICODE_ATTR_TREMOR_NOT_MDCT;
static int _packetout(ogg_stream_state *os,ogg_packet *op,int adv){ static int _packetout(ogg_stream_state *os,ogg_packet *op,int adv){
ogg_packet_release(op); ogg_packet_release(op);

View file

@ -144,7 +144,8 @@ STIN void mdct_butterfly_32(DATA_TYPE *x){
} }
/* N/stage point generic N stage butterfly (in place, 4 register) */ /* N/stage point generic N stage butterfly (in place, 4 register) */
void mdct_butterfly_generic(DATA_TYPE *x,int points, int step) ICODE_ATTR; void mdct_butterfly_generic(DATA_TYPE *x,int points, int step)
ICODE_ATTR_TREMOR_MDCT;
void mdct_butterfly_generic(DATA_TYPE *x,int points, int step){ void mdct_butterfly_generic(DATA_TYPE *x,int points, int step){
LOOKUP_T *T = sincos_lookup0; LOOKUP_T *T = sincos_lookup0;
DATA_TYPE *x1 = x + points - 8; DATA_TYPE *x1 = x + points - 8;
@ -332,7 +333,8 @@ STIN void mdct_bitreverse(DATA_TYPE *x,int n,int step,int shift) {
} }
void mdct_backward(int n, DATA_TYPE *in, DATA_TYPE *out) ICODE_ATTR; void mdct_backward(int n, DATA_TYPE *in, DATA_TYPE *out)
ICODE_ATTR_TREMOR_MDCT;
void mdct_backward(int n, DATA_TYPE *in, DATA_TYPE *out) { void mdct_backward(int n, DATA_TYPE *in, DATA_TYPE *out) {
int n2=n>>1; int n2=n>>1;
int n4=n>>2; int n4=n>>2;

View file

@ -259,7 +259,8 @@ int res1_inverse(vorbis_block *vb,vorbis_look_residue *vl,
/* duplicate code here as speed is somewhat more important */ /* duplicate code here as speed is somewhat more important */
int res2_inverse(vorbis_block *vb,vorbis_look_residue *vl, int res2_inverse(vorbis_block *vb,vorbis_look_residue *vl,
ogg_int32_t **in,int *nonzero,int ch) ICODE_ATTR; ogg_int32_t **in,int *nonzero,int ch)
ICODE_ATTR_TREMOR_NOT_MDCT;
int res2_inverse(vorbis_block *vb,vorbis_look_residue *vl, int res2_inverse(vorbis_block *vb,vorbis_look_residue *vl,
ogg_int32_t **in,int *nonzero,int ch){ ogg_int32_t **in,int *nonzero,int ch){
long i,k,l,s; long i,k,l,s;

View file

@ -35,7 +35,8 @@
static ogg_int32_t *ipcm_vect[CHANNELS] IBSS_ATTR; static ogg_int32_t *ipcm_vect[CHANNELS] IBSS_ATTR;
static ogg_int32_t ipcm_buff[CHANNELS*IRAM_PCM_END] IBSS_ATTR LINE_ATTR; static ogg_int32_t ipcm_buff[CHANNELS*IRAM_PCM_END] IBSS_ATTR LINE_ATTR;
int vorbis_synthesis(vorbis_block *vb,ogg_packet *op,int decodep) ICODE_ATTR; int vorbis_synthesis(vorbis_block *vb,ogg_packet *op,int decodep)
ICODE_ATTR_TREMOR_NOT_MDCT;
int vorbis_synthesis(vorbis_block *vb,ogg_packet *op,int decodep){ int vorbis_synthesis(vorbis_block *vb,ogg_packet *op,int decodep){
vorbis_dsp_state *vd=vb->vd; vorbis_dsp_state *vd=vb->vd;
private_state *b=(private_state *)vd->backend_state; private_state *b=(private_state *)vd->backend_state;

View file

@ -478,7 +478,7 @@ static void _decode_clear(OggVorbis_File *vf){
static int _fetch_and_process_packet(OggVorbis_File *vf, static int _fetch_and_process_packet(OggVorbis_File *vf,
int readp, int readp,
int spanp) ICODE_ATTR; int spanp) ICODE_ATTR_TREMOR_NOT_MDCT;
static int _fetch_and_process_packet(OggVorbis_File *vf, static int _fetch_and_process_packet(OggVorbis_File *vf,
int readp, int readp,
int spanp){ int spanp){
@ -1458,7 +1458,7 @@ ogg_int64_t ov_pcm_tell(OggVorbis_File *vf){
} }
/* return time offset (milliseconds) of next PCM sample to be read */ /* return time offset (milliseconds) of next PCM sample to be read */
ogg_int64_t ov_time_tell(OggVorbis_File *vf) ICODE_ATTR; ogg_int64_t ov_time_tell(OggVorbis_File *vf) ICODE_ATTR_TREMOR_NOT_MDCT;
ogg_int64_t ov_time_tell(OggVorbis_File *vf){ ogg_int64_t ov_time_tell(OggVorbis_File *vf){
int link=0; int link=0;
ogg_int64_t pcm_total=0; ogg_int64_t pcm_total=0;

View file

@ -51,7 +51,7 @@ static LOOKUP_T vwin128[64] = {
X(0x7ffdcf39), X(0x7fff6dac), X(0x7fffed01), X(0x7fffffc4), X(0x7ffdcf39), X(0x7fff6dac), X(0x7fffed01), X(0x7fffffc4),
}; };
static LOOKUP_T vwin256[128] ICONST_ATTR = { static LOOKUP_T vwin256[128] ICONST_ATTR_TREMOR_WINDOW = {
X(0x0001f018), X(0x00117066), X(0x00306e9e), X(0x005ee5f1), X(0x0001f018), X(0x00117066), X(0x00306e9e), X(0x005ee5f1),
X(0x009ccf26), X(0x00ea208b), X(0x0146cdea), X(0x01b2c87f), X(0x009ccf26), X(0x00ea208b), X(0x0146cdea), X(0x01b2c87f),
X(0x022dfedf), X(0x02b85ced), X(0x0351cbbd), X(0x03fa317f), X(0x022dfedf), X(0x02b85ced), X(0x0351cbbd), X(0x03fa317f),
@ -284,7 +284,7 @@ static LOOKUP_T vwin1024[512] = {
X(0x7fffffdd), X(0x7ffffff7), X(0x7fffffff), X(0x7fffffff), X(0x7fffffdd), X(0x7ffffff7), X(0x7fffffff), X(0x7fffffff),
}; };
static LOOKUP_T vwin2048[1024] ICONST_ATTR = { static LOOKUP_T vwin2048[1024] ICONST_ATTR_TREMOR_WINDOW = {
X(0x000007c0), X(0x000045c4), X(0x0000c1ca), X(0x00017bd3), X(0x000007c0), X(0x000045c4), X(0x0000c1ca), X(0x00017bd3),
X(0x000273de), X(0x0003a9eb), X(0x00051df9), X(0x0006d007), X(0x000273de), X(0x0003a9eb), X(0x00051df9), X(0x0006d007),
X(0x0008c014), X(0x000aee1e), X(0x000d5a25), X(0x00100428), X(0x0008c014), X(0x000aee1e), X(0x000d5a25), X(0x00100428),

View file

@ -34,7 +34,7 @@ struct codec_api* rb;
struct codec_api* ci; struct codec_api* ci;
/* The output buffers containing the decoded samples (channels 0 and 1) */ /* The output buffers containing the decoded samples (channels 0 and 1) */
int32_t decoded0[MAX_BLOCKSIZE] IBSS_ATTR; int32_t decoded0[MAX_BLOCKSIZE] IBSS_ATTR_FLAC_DECODED0;
int32_t decoded1[MAX_BLOCKSIZE] IBSS_ATTR; int32_t decoded1[MAX_BLOCKSIZE] IBSS_ATTR;
#define MAX_SUPPORTED_SEEKTABLE_SIZE 5000 #define MAX_SUPPORTED_SEEKTABLE_SIZE 5000

View file

@ -226,7 +226,7 @@ void basterdised_rice_decompress(alac_file *alac,
int rice_kmodifier, /* arg424->d */ int rice_kmodifier, /* arg424->d */
int rice_historymult, /* arg424->c */ int rice_historymult, /* arg424->c */
int rice_kmodifier_mask /* arg424->e */ int rice_kmodifier_mask /* arg424->e */
) ICODE_ATTR; ) ICODE_ATTR_ALAC;
void basterdised_rice_decompress(alac_file *alac, void basterdised_rice_decompress(alac_file *alac,
int32_t *output_buffer, int32_t *output_buffer,
int output_size, int output_size,
@ -373,7 +373,7 @@ static void predictor_decompress_fir_adapt(int32_t *error_buffer,
int readsamplesize, int readsamplesize,
int16_t *predictor_coef_table, int16_t *predictor_coef_table,
int predictor_coef_num, int predictor_coef_num,
int predictor_quantitization) ICODE_ATTR; int predictor_quantitization) ICODE_ATTR_ALAC;
static void predictor_decompress_fir_adapt(int32_t *error_buffer, static void predictor_decompress_fir_adapt(int32_t *error_buffer,
int32_t *buffer_out, int32_t *buffer_out,
int output_size, int output_size,
@ -645,7 +645,7 @@ void deinterlace_16(int32_t* buffer0,
int32_t* buffer1, int32_t* buffer1,
int numsamples, int numsamples,
uint8_t interlacing_shift, uint8_t interlacing_shift,
uint8_t interlacing_leftweight) ICODE_ATTR; uint8_t interlacing_leftweight) ICODE_ATTR_ALAC;
void deinterlace_16(int32_t* buffer0, void deinterlace_16(int32_t* buffer0,
int32_t* buffer1, int32_t* buffer1,
int numsamples, int numsamples,

View file

@ -1,6 +1,10 @@
#ifndef __ALAC__DECOMP_H #ifndef __ALAC__DECOMP_H
#define __ALAC__DECOMP_H #define __ALAC__DECOMP_H
#ifndef ICODE_ATTR_ALAC
#define ICODE_ATTR_ALAC ICODE_ATTR
#endif
/* Always output samples shifted to 28 bits + sign*/ /* Always output samples shifted to 28 bits + sign*/
#define ALAC_OUTPUT_DEPTH 29 #define ALAC_OUTPUT_DEPTH 29
#define SCALE16 (ALAC_OUTPUT_DEPTH - 16) #define SCALE16 (ALAC_OUTPUT_DEPTH - 16)
@ -31,12 +35,13 @@ typedef struct
/* end setinfo stuff */ /* end setinfo stuff */
} alac_file; } alac_file;
void create_alac(int samplesize, int numchannels, alac_file* alac) ICODE_ATTR; void create_alac(int samplesize, int numchannels, alac_file* alac)
ICODE_ATTR_ALAC;
int alac_decode_frame(alac_file *alac, int alac_decode_frame(alac_file *alac,
unsigned char *inbuffer, unsigned char *inbuffer,
int32_t outputbuffer[ALAC_MAX_CHANNELS][ALAC_BLOCKSIZE], int32_t outputbuffer[ALAC_MAX_CHANNELS][ALAC_BLOCKSIZE],
void (*yield)(void)) ICODE_ATTR; void (*yield)(void)) ICODE_ATTR_ALAC;
void alac_set_info(alac_file *alac, char *inputbuffer) ICODE_ATTR; void alac_set_info(alac_file *alac, char *inputbuffer) ICODE_ATTR_ALAC;
#endif /* __ALAC__DECOMP_H */ #endif /* __ALAC__DECOMP_H */

View file

@ -18,6 +18,14 @@
#define ICODE_ATTR #define ICODE_ATTR
#endif #endif
#ifndef ICODE_ATTR_FLAC
#define ICODE_ATTR_FLAC ICODE_ATTR
#endif
#ifndef IBSS_ATTR_FLAC_DECODED0
#define IBSS_ATTR_FLAC_DECODED0 IBSS_ATTR
#endif
/* Endian conversion routines for standalone compilation */ /* Endian conversion routines for standalone compilation */
#ifdef BUILD_STANDALONE #ifdef BUILD_STANDALONE
#ifdef BUILD_BIGENDIAN #ifdef BUILD_BIGENDIAN
@ -252,7 +260,7 @@ static inline unsigned int get_bits(GetBitContext *s, int n){
return tmp; return tmp;
} }
unsigned int get_bits_long(GetBitContext *s, int n) ICODE_ATTR; unsigned int get_bits_long(GetBitContext *s, int n) ICODE_ATTR_FLAC;
/** /**
* shows 0-17 bits. * shows 0-17 bits.
@ -267,7 +275,7 @@ static inline unsigned int show_bits(GetBitContext *s, int n){
return tmp; return tmp;
} }
unsigned int show_bits_long(GetBitContext *s, int n) ICODE_ATTR; unsigned int show_bits_long(GetBitContext *s, int n) ICODE_ATTR_FLAC;
static inline void skip_bits(GetBitContext *s, int n){ static inline void skip_bits(GetBitContext *s, int n){
//Note gcc seems to optimize this to s->index+=n for the ALT_READER :)) //Note gcc seems to optimize this to s->index+=n for the ALT_READER :))
@ -328,6 +336,6 @@ static inline void init_get_bits(GetBitContext *s,
} }
} }
void align_get_bits(GetBitContext *s) ICODE_ATTR; void align_get_bits(GetBitContext *s) ICODE_ATTR_FLAC;
#endif /* BITSTREAM_H */ #endif /* BITSTREAM_H */

View file

@ -99,7 +99,7 @@ static const uint8_t table_crc8[256] ICONST_ATTR = {
0xe6, 0xe1, 0xe8, 0xef, 0xfa, 0xfd, 0xf4, 0xf3 0xe6, 0xe1, 0xe8, 0xef, 0xfa, 0xfd, 0xf4, 0xf3
}; };
static int64_t get_utf8(GetBitContext *gb) ICODE_ATTR; static int64_t get_utf8(GetBitContext *gb) ICODE_ATTR_FLAC;
static int64_t get_utf8(GetBitContext *gb) static int64_t get_utf8(GetBitContext *gb)
{ {
uint64_t val; uint64_t val;
@ -124,7 +124,7 @@ static int64_t get_utf8(GetBitContext *gb)
return val; return val;
} }
static int get_crc8(const uint8_t *buf, int count) ICODE_ATTR; static int get_crc8(const uint8_t *buf, int count) ICODE_ATTR_FLAC;
static int get_crc8(const uint8_t *buf, int count) static int get_crc8(const uint8_t *buf, int count)
{ {
int crc=0; int crc=0;
@ -137,7 +137,7 @@ static int get_crc8(const uint8_t *buf, int count)
return crc; return crc;
} }
static int decode_residuals(FLACContext *s, int32_t* decoded, int pred_order) ICODE_ATTR; static int decode_residuals(FLACContext *s, int32_t* decoded, int pred_order) ICODE_ATTR_FLAC;
static int decode_residuals(FLACContext *s, int32_t* decoded, int pred_order) static int decode_residuals(FLACContext *s, int32_t* decoded, int pred_order)
{ {
int i, tmp, partition, method_type, rice_order; int i, tmp, partition, method_type, rice_order;
@ -177,7 +177,7 @@ static int decode_residuals(FLACContext *s, int32_t* decoded, int pred_order)
return 0; return 0;
} }
static int decode_subframe_fixed(FLACContext *s, int32_t* decoded, int pred_order) ICODE_ATTR; static int decode_subframe_fixed(FLACContext *s, int32_t* decoded, int pred_order) ICODE_ATTR_FLAC;
static int decode_subframe_fixed(FLACContext *s, int32_t* decoded, int pred_order) static int decode_subframe_fixed(FLACContext *s, int32_t* decoded, int pred_order)
{ {
int i; int i;
@ -224,7 +224,7 @@ static int decode_subframe_fixed(FLACContext *s, int32_t* decoded, int pred_orde
return 0; return 0;
} }
static int decode_subframe_lpc(FLACContext *s, int32_t* decoded, int pred_order) ICODE_ATTR; static int decode_subframe_lpc(FLACContext *s, int32_t* decoded, int pred_order) ICODE_ATTR_FLAC;
static int decode_subframe_lpc(FLACContext *s, int32_t* decoded, int pred_order) static int decode_subframe_lpc(FLACContext *s, int32_t* decoded, int pred_order)
{ {
int sum, i, j; int sum, i, j;
@ -386,7 +386,7 @@ static inline int decode_subframe(FLACContext *s, int channel, int32_t* decoded)
static int decode_frame(FLACContext *s, static int decode_frame(FLACContext *s,
int32_t* decoded0, int32_t* decoded0,
int32_t* decoded1, int32_t* decoded1,
void (*yield)(void)) ICODE_ATTR; void (*yield)(void)) ICODE_ATTR_FLAC;
static int decode_frame(FLACContext *s, static int decode_frame(FLACContext *s,
int32_t* decoded0, int32_t* decoded0,
int32_t* decoded1, int32_t* decoded1,

View file

@ -44,6 +44,6 @@ int flac_decode_frame(FLACContext *s,
int32_t* decoded0, int32_t* decoded0,
int32_t* decoded1, int32_t* decoded1,
uint8_t *buf, int buf_size, uint8_t *buf, int buf_size,
void (*yield)(void)) ICODE_ATTR; void (*yield)(void)) ICODE_ATTR_FLAC;
#endif #endif

View file

@ -83,7 +83,7 @@ static unsigned int get_uint(ShortenContext *s, int k)
} }
#if defined(CPU_COLDFIRE) && !defined(SIMULATOR) #if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
static void coldfire_lshift_samples(int n, int shift, int32_t *samples) ICODE_ATTR; static void coldfire_lshift_samples(int n, int shift, int32_t *samples) ICODE_ATTR_FLAC;
static void coldfire_lshift_samples(int n, int shift, int32_t *samples) static void coldfire_lshift_samples(int n, int shift, int32_t *samples)
{ {
/* /*

View file

@ -66,4 +66,8 @@
# endif # endif
# endif # endif
#ifndef ICONST_ATTR_MPA_HUFFMAN
#define ICONST_ATTR_MPA_HUFFMAN ICONST_ATTR
#endif
# endif # endif

View file

@ -50,7 +50,7 @@
# endif # endif
static static
union huffquad const hufftabA[] ICONST_ATTR = { union huffquad const hufftabA[] ICONST_ATTR_MPA_HUFFMAN = {
/* 0000 */ PTR(16, 2), /* 0000 */ PTR(16, 2),
/* 0001 */ PTR(20, 2), /* 0001 */ PTR(20, 2),
/* 0010 */ PTR(24, 1), /* 0010 */ PTR(24, 1),
@ -90,7 +90,7 @@ union huffquad const hufftabA[] ICONST_ATTR = {
}; };
static static
union huffquad const hufftabB[] ICONST_ATTR = { union huffquad const hufftabB[] ICONST_ATTR_MPA_HUFFMAN = {
/* 0000 */ V(1, 1, 1, 1, 4), /* 0000 */ V(1, 1, 1, 1, 4),
/* 0001 */ V(1, 1, 1, 0, 4), /* 0001 */ V(1, 1, 1, 0, 4),
/* 0010 */ V(1, 1, 0, 1, 4), /* 0010 */ V(1, 1, 0, 1, 4),
@ -126,12 +126,12 @@ union huffquad const hufftabB[] ICONST_ATTR = {
# endif # endif
static static
union huffpair const hufftab0[] ICONST_ATTR = { union huffpair const hufftab0[] ICONST_ATTR_MPA_HUFFMAN = {
/* */ V(0, 0, 0) /* */ V(0, 0, 0)
}; };
static static
union huffpair const hufftab1[] ICONST_ATTR = { union huffpair const hufftab1[] ICONST_ATTR_MPA_HUFFMAN = {
/* 000 */ V(1, 1, 3), /* 000 */ V(1, 1, 3),
/* 001 */ V(0, 1, 3), /* 001 */ V(0, 1, 3),
/* 010 */ V(1, 0, 2), /* 010 */ V(1, 0, 2),
@ -143,7 +143,7 @@ union huffpair const hufftab1[] ICONST_ATTR = {
}; };
static static
union huffpair const hufftab2[] ICONST_ATTR = { union huffpair const hufftab2[] ICONST_ATTR_MPA_HUFFMAN = {
/* 000 */ PTR(8, 3), /* 000 */ PTR(8, 3),
/* 001 */ V(1, 1, 3), /* 001 */ V(1, 1, 3),
/* 010 */ V(0, 1, 3), /* 010 */ V(0, 1, 3),
@ -165,7 +165,7 @@ union huffpair const hufftab2[] ICONST_ATTR = {
}; };
static static
union huffpair const hufftab3[] ICONST_ATTR = { union huffpair const hufftab3[] ICONST_ATTR_MPA_HUFFMAN = {
/* 000 */ PTR(8, 3), /* 000 */ PTR(8, 3),
/* 001 */ V(1, 0, 3), /* 001 */ V(1, 0, 3),
/* 010 */ V(1, 1, 2), /* 010 */ V(1, 1, 2),
@ -187,7 +187,7 @@ union huffpair const hufftab3[] ICONST_ATTR = {
}; };
static static
union huffpair const hufftab5[] ICONST_ATTR = { union huffpair const hufftab5[] ICONST_ATTR_MPA_HUFFMAN = {
/* 000 */ PTR(8, 4), /* 000 */ PTR(8, 4),
/* 001 */ V(1, 1, 3), /* 001 */ V(1, 1, 3),
/* 010 */ V(0, 1, 3), /* 010 */ V(0, 1, 3),
@ -221,7 +221,7 @@ union huffpair const hufftab5[] ICONST_ATTR = {
}; };
static static
union huffpair const hufftab6[] ICONST_ATTR = { union huffpair const hufftab6[] ICONST_ATTR_MPA_HUFFMAN = {
/* 0000 */ PTR(16, 3), /* 0000 */ PTR(16, 3),
/* 0001 */ PTR(24, 1), /* 0001 */ PTR(24, 1),
/* 0010 */ PTR(26, 1), /* 0010 */ PTR(26, 1),
@ -259,7 +259,7 @@ union huffpair const hufftab6[] ICONST_ATTR = {
}; };
static static
union huffpair const hufftab7[] ICONST_ATTR = { union huffpair const hufftab7[] ICONST_ATTR_MPA_HUFFMAN = {
/* 0000 */ PTR(16, 4), /* 0000 */ PTR(16, 4),
/* 0001 */ PTR(32, 4), /* 0001 */ PTR(32, 4),
/* 0010 */ PTR(48, 2), /* 0010 */ PTR(48, 2),
@ -346,7 +346,7 @@ union huffpair const hufftab7[] ICONST_ATTR = {
/* this version saves 8 entries (16 bytes) at the expense of /* this version saves 8 entries (16 bytes) at the expense of
an extra lookup in 4 out of 36 cases */ an extra lookup in 4 out of 36 cases */
static static
union huffpair const hufftab8[] ICONST_ATTR = { union huffpair const hufftab8[] ICONST_ATTR_MPA_HUFFMAN = {
/* 0000 */ PTR(16, 4), /* 0000 */ PTR(16, 4),
/* 0001 */ PTR(32, 2), /* 0001 */ PTR(32, 2),
/* 0010 */ V(1, 2, 4), /* 0010 */ V(1, 2, 4),
@ -424,7 +424,7 @@ union huffpair const hufftab8[] ICONST_ATTR = {
}; };
# else # else
static static
union huffpair const hufftab8[] ICONST_ATTR = { union huffpair const hufftab8[] ICONST_ATTR_MPA_HUFFMAN = {
/* 0000 */ PTR(16, 4), /* 0000 */ PTR(16, 4),
/* 0001 */ PTR(32, 4), /* 0001 */ PTR(32, 4),
/* 0010 */ V(1, 2, 4), /* 0010 */ V(1, 2, 4),
@ -509,7 +509,7 @@ union huffpair const hufftab8[] ICONST_ATTR = {
# endif # endif
static static
union huffpair const hufftab9[] ICONST_ATTR = { union huffpair const hufftab9[] ICONST_ATTR_MPA_HUFFMAN = {
/* 0000 */ PTR(16, 4), /* 0000 */ PTR(16, 4),
/* 0001 */ PTR(32, 3), /* 0001 */ PTR(32, 3),
/* 0010 */ PTR(40, 2), /* 0010 */ PTR(40, 2),
@ -581,7 +581,7 @@ union huffpair const hufftab9[] ICONST_ATTR = {
}; };
static static
union huffpair const hufftab10[] ICONST_ATTR = { union huffpair const hufftab10[] ICONST_ATTR_MPA_HUFFMAN = {
/* 0000 */ PTR(16, 4), /* 0000 */ PTR(16, 4),
/* 0001 */ PTR(32, 4), /* 0001 */ PTR(32, 4),
/* 0010 */ PTR(48, 2), /* 0010 */ PTR(48, 2),
@ -719,7 +719,7 @@ union huffpair const hufftab10[] ICONST_ATTR = {
}; };
static static
union huffpair const hufftab11[] ICONST_ATTR = { union huffpair const hufftab11[] ICONST_ATTR_MPA_HUFFMAN = {
/* 0000 */ PTR(16, 4), /* 0000 */ PTR(16, 4),
/* 0001 */ PTR(32, 4), /* 0001 */ PTR(32, 4),
/* 0010 */ PTR(48, 4), /* 0010 */ PTR(48, 4),
@ -855,7 +855,7 @@ union huffpair const hufftab11[] ICONST_ATTR = {
}; };
static static
union huffpair const hufftab12[] ICONST_ATTR = { union huffpair const hufftab12[] ICONST_ATTR_MPA_HUFFMAN = {
/* 0000 */ PTR(16, 4), /* 0000 */ PTR(16, 4),
/* 0001 */ PTR(32, 4), /* 0001 */ PTR(32, 4),
/* 0010 */ PTR(48, 4), /* 0010 */ PTR(48, 4),
@ -983,7 +983,7 @@ union huffpair const hufftab12[] ICONST_ATTR = {
}; };
static static
union huffpair const hufftab13[] ICONST_ATTR = { union huffpair const hufftab13[] ICONST_ATTR_MPA_HUFFMAN = {
/* 0000 */ PTR(16, 4), /* 0000 */ PTR(16, 4),
/* 0001 */ PTR(32, 4), /* 0001 */ PTR(32, 4),
/* 0010 */ PTR(48, 4), /* 0010 */ PTR(48, 4),
@ -1509,7 +1509,7 @@ union huffpair const hufftab13[] ICONST_ATTR = {
}; };
static static
union huffpair const hufftab15[] ICONST_ATTR = { union huffpair const hufftab15[] ICONST_ATTR_MPA_HUFFMAN = {
/* 0000 */ PTR(16, 4), /* 0000 */ PTR(16, 4),
/* 0001 */ PTR(32, 4), /* 0001 */ PTR(32, 4),
/* 0010 */ PTR(48, 4), /* 0010 */ PTR(48, 4),
@ -2017,7 +2017,7 @@ union huffpair const hufftab15[] ICONST_ATTR = {
}; };
static static
union huffpair const hufftab16[] ICONST_ATTR = { union huffpair const hufftab16[] ICONST_ATTR_MPA_HUFFMAN = {
/* 0000 */ PTR(16, 4), /* 0000 */ PTR(16, 4),
/* 0001 */ PTR(32, 4), /* 0001 */ PTR(32, 4),
/* 0010 */ PTR(48, 4), /* 0010 */ PTR(48, 4),
@ -2551,7 +2551,7 @@ union huffpair const hufftab16[] ICONST_ATTR = {
}; };
static static
union huffpair const hufftab24[] ICONST_ATTR = { union huffpair const hufftab24[] ICONST_ATTR_MPA_HUFFMAN = {
/* 0000 */ PTR(16, 4), /* 0000 */ PTR(16, 4),
/* 0001 */ PTR(32, 4), /* 0001 */ PTR(32, 4),
/* 0010 */ PTR(48, 4), /* 0010 */ PTR(48, 4),

View file

@ -52,6 +52,10 @@ extern "C" {
#include "reader.h" #include "reader.h"
#include "streaminfo.h" #include "streaminfo.h"
#ifndef IBSS_ATTR_MPC_SAMPLE_BUF
#define IBSS_ATTR_MPC_SAMPLE_BUF IBSS_ATTR
#endif
#ifdef ROCKBOX_LITTLE_ENDIAN #ifdef ROCKBOX_LITTLE_ENDIAN
#define MPC_LITTLE_ENDIAN #define MPC_LITTLE_ENDIAN
#endif #endif

View file

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

View file

@ -20,6 +20,10 @@
#include "codeclib.h" #include "codeclib.h"
#include <codecs/libffmpegFLAC/shndec.h> #include <codecs/libffmpegFLAC/shndec.h>
#ifndef IBSS_ATTR_SHORTEN_DECODED0
#define IBSS_ATTR_SHORTEN_DECODED0 IBSS_ATTR
#endif
CODEC_HEADER CODEC_HEADER
#ifdef USE_IRAM #ifdef USE_IRAM
@ -33,7 +37,7 @@ extern char iend[];
struct codec_api* rb; struct codec_api* rb;
struct codec_api* ci; struct codec_api* ci;
int32_t decoded0[MAX_DECODE_SIZE] IBSS_ATTR; int32_t decoded0[MAX_DECODE_SIZE] IBSS_ATTR_SHORTEN_DECODED0;
int32_t decoded1[MAX_DECODE_SIZE] IBSS_ATTR; int32_t decoded1[MAX_DECODE_SIZE] IBSS_ATTR;
int32_t offset0[MAX_OFFSET_SIZE] IBSS_ATTR; int32_t offset0[MAX_OFFSET_SIZE] IBSS_ATTR;

View file

@ -176,6 +176,10 @@ enum {
#endif #endif
#define CODEC_IRAM_SIZE 0xc000 #define CODEC_IRAM_SIZE 0xc000
#ifndef IBSS_ATTR_VOICE_STACK
#define IBSS_ATTR_VOICE_STACK IBSS_ATTR
#endif
#ifndef SIMULATOR #ifndef SIMULATOR
extern bool audio_is_initialized; extern bool audio_is_initialized;
#else #else
@ -278,7 +282,7 @@ extern struct codec_api ci_voice;
static struct thread_entry *voice_thread_p = NULL; static struct thread_entry *voice_thread_p = NULL;
static struct event_queue voice_queue; static struct event_queue voice_queue;
static long voice_stack[(DEFAULT_STACK_SIZE + 0x2000)/sizeof(long)] static long voice_stack[(DEFAULT_STACK_SIZE + 0x2000)/sizeof(long)]
IBSS_ATTR; IBSS_ATTR_VOICE_STACK;
static const char voice_thread_name[] = "voice codec"; static const char voice_thread_name[] = "voice codec";
/* Voice codec swapping control */ /* Voice codec swapping control */

View file

@ -97,4 +97,14 @@
#define BOOTFILE_EXT "iriver" #define BOOTFILE_EXT "iriver"
#define BOOTFILE "rockbox." BOOTFILE_EXT #define BOOTFILE "rockbox." BOOTFILE_EXT
#define IBSS_ATTR_VOICE_STACK
#define ICODE_ATTR_TREMOR_NOT_MDCT
#define ICODE_ATTR_TREMOR_MDCT
#define ICODE_ATTR_FLAC
#define IBSS_ATTR_FLAC_DECODED0
#define ICONST_ATTR_MPA_HUFFMAN
#define IBSS_ATTR_MPC_SAMPLE_BUF
#define ICODE_ATTR_ALAC
#define IBSS_ATTR_SHORTEN_DECODED0
#endif #endif

View file

@ -123,4 +123,6 @@
#define BOOTFILE_EXT "ipod" #define BOOTFILE_EXT "ipod"
#define BOOTFILE "rockbox." BOOTFILE_EXT #define BOOTFILE "rockbox." BOOTFILE_EXT
#define ICODE_ATTR_TREMOR_NOT_MDCT
#endif /* SIMULATOR */ #endif /* SIMULATOR */

View file

@ -128,4 +128,6 @@
#define BOOTFILE_EXT "ipod" #define BOOTFILE_EXT "ipod"
#define BOOTFILE "rockbox." BOOTFILE_EXT #define BOOTFILE "rockbox." BOOTFILE_EXT
#define ICODE_ATTR_TREMOR_NOT_MDCT
#endif #endif

View file

@ -119,4 +119,6 @@
#define BOOTFILE_EXT "ipod" #define BOOTFILE_EXT "ipod"
#define BOOTFILE "rockbox." BOOTFILE_EXT #define BOOTFILE "rockbox." BOOTFILE_EXT
#define ICODE_ATTR_TREMOR_NOT_MDCT
#endif #endif

View file

@ -125,4 +125,6 @@
#define BOOTFILE_EXT "ipod" #define BOOTFILE_EXT "ipod"
#define BOOTFILE "rockbox." BOOTFILE_EXT #define BOOTFILE "rockbox." BOOTFILE_EXT
#define ICODE_ATTR_TREMOR_NOT_MDCT
#endif #endif

View file

@ -131,4 +131,6 @@
#define BOOTFILE_EXT "ipod" #define BOOTFILE_EXT "ipod"
#define BOOTFILE "rockbox." BOOTFILE_EXT #define BOOTFILE "rockbox." BOOTFILE_EXT
#define ICODE_ATTR_TREMOR_NOT_MDCT
#endif #endif

View file

@ -124,4 +124,6 @@
#define BOOTFILE_EXT "ipod" #define BOOTFILE_EXT "ipod"
#define BOOTFILE "rockbox." BOOTFILE_EXT #define BOOTFILE "rockbox." BOOTFILE_EXT
#define ICODE_ATTR_TREMOR_NOT_MDCT
#endif #endif

View file

@ -124,4 +124,6 @@
#define BOOTFILE_EXT "ipod" #define BOOTFILE_EXT "ipod"
#define BOOTFILE "rockbox." BOOTFILE_EXT #define BOOTFILE "rockbox." BOOTFILE_EXT
#define ICODE_ATTR_TREMOR_NOT_MDCT
#endif #endif