summaryrefslogtreecommitdiff
path: root/libavcodec/ac3dec.c
diff options
context:
space:
mode:
authorJustin Ruggles <justin.ruggles@gmail.com>2009-08-05 01:13:42 +0000
committerJustin Ruggles <justin.ruggles@gmail.com>2009-08-05 01:13:42 +0000
commit3f9371680990e1eb8d9b76dde4d5fea82e4cd2ab (patch)
treece7b75e0e5f4c48b26c1b035a62212997bf9e298 /libavcodec/ac3dec.c
parent603139022d32be9a168ecf57f6577cf06daeb0bf (diff)
Modify decode_band_structure() so that the actual band structure is only
used within the function. This removes the need to have the coupling band structure stored in the AC3DecodeContext. Originally committed as revision 19585 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/ac3dec.c')
-rw-r--r--libavcodec/ac3dec.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/libavcodec/ac3dec.c b/libavcodec/ac3dec.c
index 808274adc5..7f7efe56ba 100644
--- a/libavcodec/ac3dec.c
+++ b/libavcodec/ac3dec.c
@@ -724,32 +724,34 @@ static void ac3_upmix_delay(AC3DecodeContext *s)
* @param[in] start_subband subband number for start of range
* @param[in] end_subband subband number for end of range
* @param[in] default_band_struct default band structure table
- * @param[out] band_struct decoded band structure
* @param[out] num_bands number of bands (optionally NULL)
* @param[out] band_sizes array containing the number of bins in each band (optionally NULL)
*/
static void decode_band_structure(GetBitContext *gbc, int blk, int eac3,
int ecpl, int start_subband, int end_subband,
const uint8_t *default_band_struct,
- uint8_t *band_struct, int *num_bands,
+ int *num_bands,
uint8_t *band_sizes)
{
int subbnd, bnd, n_subbands, n_bands=0;
uint8_t bnd_sz[22];
+ uint8_t coded_band_struct[22];
+ const uint8_t *band_struct;
n_subbands = end_subband - start_subband;
/* decode band structure from bitstream or use default */
if (!eac3 || get_bits1(gbc)) {
for (subbnd = 0; subbnd < n_subbands - 1; subbnd++) {
- band_struct[subbnd] = get_bits1(gbc);
+ coded_band_struct[subbnd] = get_bits1(gbc);
}
+ band_struct = coded_band_struct;
} else if (!blk) {
- memcpy(band_struct,
- &default_band_struct[start_subband+1],
- n_subbands-1);
+ band_struct = &default_band_struct[start_subband+1];
+ } else {
+ /* no change in band structure */
+ return;
}
- band_struct[n_subbands-1] = 0;
/* calculate number of bands and band sizes based on band structure.
note that the first 4 subbands in enhanced coupling span only 6 bins
@@ -879,7 +881,7 @@ static int decode_audio_block(AC3DecodeContext *s, int blk)
decode_band_structure(gbc, blk, s->eac3, 0, cpl_start_subband,
cpl_end_subband,
ff_eac3_default_cpl_band_struct,
- s->cpl_band_struct, &s->num_cpl_bands,
+ &s->num_cpl_bands,
s->cpl_band_sizes);
} else {
/* coupling not in use */