|
|
|
@@ -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 */ |
|
|
|
|