diff options
author | Andree Buschmann <AndreeBuschmann@t-online.de> | 2011-04-24 20:19:05 +0000 |
---|---|---|
committer | Andree Buschmann <AndreeBuschmann@t-online.de> | 2011-04-24 20:19:05 +0000 |
commit | a602f46d69d9d18756b7f317470f654f695faa80 (patch) | |
tree | f111cc29197def94d5404d15c7febfd06efed9f7 /apps/codecs/libfaad/sbr_dec.h | |
parent | 69580a96eb816d9b811c542d38181126243d8563 (diff) | |
download | rockbox-a602f46d69d9d18756b7f317470f654f695faa80.tar.gz rockbox-a602f46d69d9d18756b7f317470f654f695faa80.zip |
Rework of libfaad in several areas. Allow removal of malloc with a new define FAAD_STATIC_ALLOC (in common.h). For now malloc is not fully removed but used by a few arrays needed for AAC-HE SBR+PS only. Reason to keep malloc is to have this amount of memory available for AAC-LC files which might require large m4a tables. The changes make the allocation routines much smaller, better centralized and allow to move duplicated code from aac.c/raa.c to libfaad. The rework includes removal of (now and former) unused code as well.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29778 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs/libfaad/sbr_dec.h')
-rw-r--r-- | apps/codecs/libfaad/sbr_dec.h | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/apps/codecs/libfaad/sbr_dec.h b/apps/codecs/libfaad/sbr_dec.h index aa145fe34a..81dac32946 100644 --- a/apps/codecs/libfaad/sbr_dec.h +++ b/apps/codecs/libfaad/sbr_dec.h | |||
@@ -48,15 +48,13 @@ extern "C" { | |||
48 | #define MAX_L_E 5 | 48 | #define MAX_L_E 5 |
49 | 49 | ||
50 | typedef struct { | 50 | typedef struct { |
51 | real_t *x; | 51 | real_t x[2*32*10]; |
52 | int16_t x_index; | 52 | int16_t x_index; |
53 | uint8_t channels; | ||
54 | } qmfa_info; | 53 | } qmfa_info; |
55 | 54 | ||
56 | typedef struct { | 55 | typedef struct { |
57 | real_t *v; | 56 | real_t v[2*64*20]; /* Size was "(downSampledSBR)?32:64". We use 64 now. */ |
58 | int16_t v_index; | 57 | int16_t v_index; |
59 | uint8_t channels; | ||
60 | } qmfs_info; | 58 | } qmfs_info; |
61 | 59 | ||
62 | typedef struct | 60 | typedef struct |
@@ -105,8 +103,8 @@ typedef struct | |||
105 | uint8_t f[2][MAX_L_E+1]; | 103 | uint8_t f[2][MAX_L_E+1]; |
106 | uint8_t f_prev[2]; | 104 | uint8_t f_prev[2]; |
107 | 105 | ||
108 | real_t *G_temp_prev[2][5]; | 106 | real_t G_temp_prev[2][5][64]; |
109 | real_t *Q_temp_prev[2][5]; | 107 | real_t Q_temp_prev[2][5][64]; |
110 | int8_t GQ_ringbuf_index[2]; | 108 | int8_t GQ_ringbuf_index[2]; |
111 | 109 | ||
112 | int16_t E[2][64][MAX_L_E]; | 110 | int16_t E[2][64][MAX_L_E]; |
@@ -160,10 +158,10 @@ typedef struct | |||
160 | uint32_t header_count; | 158 | uint32_t header_count; |
161 | 159 | ||
162 | uint8_t id_aac; | 160 | uint8_t id_aac; |
163 | qmfa_info *qmfa[2]; | 161 | qmfa_info qmfa[2] MEM_ALIGN_ATTR; |
164 | qmfs_info *qmfs[2]; | 162 | qmfs_info qmfs[2] MEM_ALIGN_ATTR; |
165 | 163 | ||
166 | qmf_t Xsbr[2][MAX_NTSRHFG][64]; | 164 | qmf_t Xsbr[2][MAX_NTSRHFG][64] MEM_ALIGN_ATTR; |
167 | 165 | ||
168 | #ifdef DRM | 166 | #ifdef DRM |
169 | uint8_t Is_DRM_SBR; | 167 | uint8_t Is_DRM_SBR; |
@@ -223,13 +221,12 @@ typedef struct | |||
223 | uint8_t bs_df_noise[2][3]; | 221 | uint8_t bs_df_noise[2][3]; |
224 | } sbr_info; | 222 | } sbr_info; |
225 | 223 | ||
226 | sbr_info *sbrDecodeInit(uint16_t framelength, uint8_t id_aac, | 224 | sbr_info *sbrDecodeInit(uint16_t framelength, uint8_t id_aac, uint8_t id_ele, |
227 | uint32_t sample_rate, uint8_t downSampledSBR | 225 | uint32_t sample_rate, uint8_t downSampledSBR |
228 | #ifdef DRM | 226 | #ifdef DRM |
229 | , uint8_t IsDRM | 227 | , uint8_t IsDRM |
230 | #endif | 228 | #endif |
231 | ); | 229 | ); |
232 | void sbrDecodeEnd(sbr_info *sbr); | ||
233 | 230 | ||
234 | uint8_t sbrDecodeCoupleFrame(sbr_info *sbr, real_t *left_chan, real_t *right_chan, | 231 | uint8_t sbrDecodeCoupleFrame(sbr_info *sbr, real_t *left_chan, real_t *right_chan, |
235 | const uint8_t just_seeked, const uint8_t downSampledSBR); | 232 | const uint8_t just_seeked, const uint8_t downSampledSBR); |