Commit ff99cc1a authored by jbr's avatar jbr

move mix level tables from parser to decoder. have parser read bitstream value...

move mix level tables from parser to decoder. have parser read bitstream value instead of using an index to a table in the decoder.


git-svn-id: file:///var/local/repositories/ffmpeg/trunk@13696 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent 16605a68
......@@ -33,18 +33,6 @@ static const uint8_t eac3_blocks[4] = {
1, 2, 3, 6
};
/**
* Table for center mix levels
* reference: Section 5.4.2.4 cmixlev
*/
static const uint8_t center_levels[4] = { 4, 5, 6, 5 };
/**
* Table for surround mix levels
* reference: Section 5.4.2.5 surmixlev
*/
static const uint8_t surround_levels[4] = { 4, 6, 7, 6 };
int ff_ac3_parse_header(GetBitContext *gbc, AC3HeaderInfo *hdr)
{
......@@ -64,8 +52,8 @@ int ff_ac3_parse_header(GetBitContext *gbc, AC3HeaderInfo *hdr)
hdr->num_blocks = 6;
/* set default mix levels */
hdr->center_mix_level = 3; // -4.5dB
hdr->surround_mix_level = 4; // -6.0dB
hdr->center_mix_level = 1; // -4.5dB
hdr->surround_mix_level = 1; // -6.0dB
if(hdr->bitstream_id <= 10) {
/* Normal AC-3 */
......@@ -87,9 +75,9 @@ int ff_ac3_parse_header(GetBitContext *gbc, AC3HeaderInfo *hdr)
skip_bits(gbc, 2); // skip dsurmod
} else {
if((hdr->channel_mode & 1) && hdr->channel_mode != AC3_CHMODE_MONO)
hdr->center_mix_level = center_levels[get_bits(gbc, 2)];
hdr->center_mix_level = get_bits(gbc, 2);
if(hdr->channel_mode & 4)
hdr->surround_mix_level = surround_levels[get_bits(gbc, 2)];
hdr->surround_mix_level = get_bits(gbc, 2);
}
hdr->lfe_on = get_bits1(gbc);
......
......@@ -94,6 +94,18 @@ static const float gain_levels[9] = {
LEVEL_MINUS_9DB
};
/**
* Table for center mix levels
* reference: Section 5.4.2.4 cmixlev
*/
static const uint8_t center_levels[4] = { 4, 5, 6, 5 };
/**
* Table for surround mix levels
* reference: Section 5.4.2.5 surmixlev
*/
static const uint8_t surround_levels[4] = { 4, 6, 7, 6 };
/**
* Table for default stereo downmixing coefficients
* reference: Section 7.8.2 Downmixing Into Two Channels
......@@ -383,8 +395,8 @@ static int ac3_parse_header(AC3DecodeContext *s)
static void set_downmix_coeffs(AC3DecodeContext *s)
{
int i;
float cmix = gain_levels[s->center_mix_level];
float smix = gain_levels[s->surround_mix_level];
float cmix = gain_levels[center_levels[s->center_mix_level]];
float smix = gain_levels[surround_levels[s->surround_mix_level]];
for(i=0; i<s->fbw_channels; i++) {
s->downmix_coeffs[i][0] = gain_levels[ac3_default_coeffs[s->channel_mode][i][0]];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment