aboutsummaryrefslogtreecommitdiffstats
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
parent603139022d32be9a168ecf57f6577cf06daeb0bf (diff)
downloadffmpeg-3f9371680990e1eb8d9b76dde4d5fea82e4cd2ab.tar.gz
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
-rw-r--r--libavcodec/ac3dec.c18
-rw-r--r--libavcodec/ac3dec.h1
2 files changed, 10 insertions, 9 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 */
diff --git a/libavcodec/ac3dec.h b/libavcodec/ac3dec.h
index b5367b2fa4..8b42f986d7 100644
--- a/libavcodec/ac3dec.h
+++ b/libavcodec/ac3dec.h
@@ -82,7 +82,6 @@ typedef struct {
int phase_flags_in_use; ///< phase flags in use (phsflginu)
int phase_flags[18]; ///< phase flags (phsflg)
int num_cpl_bands; ///< number of coupling bands (ncplbnd)
- uint8_t cpl_band_struct[18]; ///< coupling band structure (cplbndstrc)
uint8_t cpl_band_sizes[18]; ///< number of coeffs in each coupling band
int firstchincpl; ///< first channel in coupling
int first_cpl_coords[AC3_MAX_CHANNELS]; ///< first coupling coordinates states (firstcplcos)