diff options
Diffstat (limited to 'apps/codecs/libatrac')
-rw-r--r-- | apps/codecs/libatrac/atrac3.c | 18 | ||||
-rw-r--r-- | apps/codecs/libatrac/atrac3.h | 10 |
2 files changed, 20 insertions, 8 deletions
diff --git a/apps/codecs/libatrac/atrac3.c b/apps/codecs/libatrac/atrac3.c index b2f675ef18..3c6ecc9197 100644 --- a/apps/codecs/libatrac/atrac3.c +++ b/apps/codecs/libatrac/atrac3.c | |||
@@ -55,9 +55,12 @@ | |||
55 | #define FFMIN(a,b) ((a) > (b) ? (b) : (a)) | 55 | #define FFMIN(a,b) ((a) > (b) ? (b) : (a)) |
56 | #define FFSWAP(type,a,b) do{type SWAP_tmp= b; b= a; a= SWAP_tmp;}while(0) | 56 | #define FFSWAP(type,a,b) do{type SWAP_tmp= b; b= a; a= SWAP_tmp;}while(0) |
57 | 57 | ||
58 | static int32_t qmf_window[48] IBSS_ATTR; | 58 | static VLC spectral_coeff_tab[7]; |
59 | static VLC spectral_coeff_tab[7]; | 59 | static int32_t qmf_window[48] IBSS_ATTR; |
60 | static channel_unit channel_units[2] IBSS_ATTR_LARGE_IRAM; | 60 | static int32_t atrac3_spectrum [2][1024] IBSS_ATTR __attribute__((aligned(16))); |
61 | static int32_t atrac3_IMDCT_buf[2][ 512] IBSS_ATTR __attribute__((aligned(16))); | ||
62 | static int32_t atrac3_prevFrame[2][1024] IBSS_ATTR; | ||
63 | static channel_unit channel_units[2] IBSS_ATTR_LARGE_IRAM; | ||
61 | 64 | ||
62 | 65 | ||
63 | /** | 66 | /** |
@@ -425,7 +428,7 @@ static void inverseQuantizeSpectrum(int *mantissas, int32_t *pOut, | |||
425 | * @return outSubbands subband counter, fix for broken specification/files | 428 | * @return outSubbands subband counter, fix for broken specification/files |
426 | */ | 429 | */ |
427 | 430 | ||
428 | int decodeSpectrum (GetBitContext *gb, int32_t *pOut) ICODE_ATTR; | 431 | int decodeSpectrum (GetBitContext *gb, int32_t *pOut) ICODE_ATTR_LARGE_IRAM; |
429 | int decodeSpectrum (GetBitContext *gb, int32_t *pOut) | 432 | int decodeSpectrum (GetBitContext *gb, int32_t *pOut) |
430 | { | 433 | { |
431 | int numSubbands, codingMode, cnt, first, last, subbWidth; | 434 | int numSubbands, codingMode, cnt, first, last, subbWidth; |
@@ -1228,7 +1231,14 @@ int atrac3_decode_init(ATRAC3Context *q, RMContext *rmctx) | |||
1228 | q->matrix_coeff_index_next[i] = 3; | 1231 | q->matrix_coeff_index_next[i] = 3; |
1229 | } | 1232 | } |
1230 | 1233 | ||
1234 | /* Link the iram'ed arrays to the decoder's data structure */ | ||
1231 | q->pUnits = channel_units; | 1235 | q->pUnits = channel_units; |
1236 | q->pUnits[0].spectrum = &atrac3_spectrum [0][0]; | ||
1237 | q->pUnits[1].spectrum = &atrac3_spectrum [1][0]; | ||
1238 | q->pUnits[0].IMDCT_buf = &atrac3_IMDCT_buf[0][0]; | ||
1239 | q->pUnits[1].IMDCT_buf = &atrac3_IMDCT_buf[1][0]; | ||
1240 | q->pUnits[0].prevFrame = &atrac3_prevFrame[0][0]; | ||
1241 | q->pUnits[1].prevFrame = &atrac3_prevFrame[1][0]; | ||
1232 | 1242 | ||
1233 | return 0; | 1243 | return 0; |
1234 | } | 1244 | } |
diff --git a/apps/codecs/libatrac/atrac3.h b/apps/codecs/libatrac/atrac3.h index a817db2b55..5bed9c60bf 100644 --- a/apps/codecs/libatrac/atrac3.h +++ b/apps/codecs/libatrac/atrac3.h | |||
@@ -3,10 +3,12 @@ | |||
3 | 3 | ||
4 | #if (CONFIG_CPU == PP5022) || (CONFIG_CPU == PP5024) || (CONFIG_CPU == MCF5250) | 4 | #if (CONFIG_CPU == PP5022) || (CONFIG_CPU == PP5024) || (CONFIG_CPU == MCF5250) |
5 | /* PP5022/24 and MCF5250 have larger IRAM */ | 5 | /* PP5022/24 and MCF5250 have larger IRAM */ |
6 | #define IBSS_ATTR_LARGE_IRAM IBSS_ATTR | 6 | #define IBSS_ATTR_LARGE_IRAM IBSS_ATTR |
7 | #define ICODE_ATTR_LARGE_IRAM ICODE_ATTR | ||
7 | #else | 8 | #else |
8 | /* other CPUs IRAM is not large enough */ | 9 | /* other CPUs IRAM is not large enough */ |
9 | #define IBSS_ATTR_LARGE_IRAM | 10 | #define IBSS_ATTR_LARGE_IRAM |
11 | #define ICODE_ATTR_LARGE_IRAM | ||
10 | #endif | 12 | #endif |
11 | 13 | ||
12 | /* These structures are needed to store the parsed gain control data. */ | 14 | /* These structures are needed to store the parsed gain control data. */ |
@@ -30,12 +32,12 @@ typedef struct { | |||
30 | int bandsCoded; | 32 | int bandsCoded; |
31 | int numComponents; | 33 | int numComponents; |
32 | tonal_component components[64]; | 34 | tonal_component components[64]; |
33 | int32_t prevFrame[1024]; | 35 | int32_t *prevFrame; |
34 | int gcBlkSwitch; | 36 | int gcBlkSwitch; |
35 | gain_block gainBlock[2]; | 37 | gain_block gainBlock[2]; |
36 | 38 | ||
37 | int32_t spectrum[1024] __attribute__((aligned(16))); | 39 | int32_t *spectrum; |
38 | int32_t IMDCT_buf[1024] __attribute__((aligned(16))); | 40 | int32_t *IMDCT_buf; |
39 | 41 | ||
40 | int32_t delayBuf1[46]; ///<qmf delay buffers | 42 | int32_t delayBuf1[46]; ///<qmf delay buffers |
41 | int32_t delayBuf2[46]; | 43 | int32_t delayBuf2[46]; |