|
@@ -1394,7 +1394,7 @@ static int decode_scalefactors(AACContext *ac, float sf[120], GetBitContext *gb, |
|
|
int band_type_run_end[120]) |
|
|
int band_type_run_end[120]) |
|
|
{ |
|
|
{ |
|
|
int g, i, idx = 0; |
|
|
int g, i, idx = 0; |
|
|
int offset[3] = { global_gain, global_gain - 90, 0 }; |
|
|
|
|
|
|
|
|
int offset[3] = { global_gain, global_gain - NOISE_OFFSET, 0 }; |
|
|
int clipped_offset; |
|
|
int clipped_offset; |
|
|
int noise_flag = 1; |
|
|
int noise_flag = 1; |
|
|
for (g = 0; g < ics->num_window_groups; g++) { |
|
|
for (g = 0; g < ics->num_window_groups; g++) { |
|
@@ -1406,7 +1406,7 @@ static int decode_scalefactors(AACContext *ac, float sf[120], GetBitContext *gb, |
|
|
} else if ((band_type[idx] == INTENSITY_BT) || |
|
|
} else if ((band_type[idx] == INTENSITY_BT) || |
|
|
(band_type[idx] == INTENSITY_BT2)) { |
|
|
(band_type[idx] == INTENSITY_BT2)) { |
|
|
for (; i < run_end; i++, idx++) { |
|
|
for (; i < run_end; i++, idx++) { |
|
|
offset[2] += get_vlc2(gb, vlc_scalefactors.table, 7, 3) - 60; |
|
|
|
|
|
|
|
|
offset[2] += get_vlc2(gb, vlc_scalefactors.table, 7, 3) - SCALE_DIFF_ZERO; |
|
|
clipped_offset = av_clip(offset[2], -155, 100); |
|
|
clipped_offset = av_clip(offset[2], -155, 100); |
|
|
if (offset[2] != clipped_offset) { |
|
|
if (offset[2] != clipped_offset) { |
|
|
avpriv_request_sample(ac->avctx, |
|
|
avpriv_request_sample(ac->avctx, |
|
@@ -1419,9 +1419,9 @@ static int decode_scalefactors(AACContext *ac, float sf[120], GetBitContext *gb, |
|
|
} else if (band_type[idx] == NOISE_BT) { |
|
|
} else if (band_type[idx] == NOISE_BT) { |
|
|
for (; i < run_end; i++, idx++) { |
|
|
for (; i < run_end; i++, idx++) { |
|
|
if (noise_flag-- > 0) |
|
|
if (noise_flag-- > 0) |
|
|
offset[1] += get_bits(gb, 9) - 256; |
|
|
|
|
|
|
|
|
offset[1] += get_bits(gb, NOISE_PRE_BITS) - NOISE_PRE; |
|
|
else |
|
|
else |
|
|
offset[1] += get_vlc2(gb, vlc_scalefactors.table, 7, 3) - 60; |
|
|
|
|
|
|
|
|
offset[1] += get_vlc2(gb, vlc_scalefactors.table, 7, 3) - SCALE_DIFF_ZERO; |
|
|
clipped_offset = av_clip(offset[1], -100, 155); |
|
|
clipped_offset = av_clip(offset[1], -100, 155); |
|
|
if (offset[1] != clipped_offset) { |
|
|
if (offset[1] != clipped_offset) { |
|
|
avpriv_request_sample(ac->avctx, |
|
|
avpriv_request_sample(ac->avctx, |
|
@@ -1433,7 +1433,7 @@ static int decode_scalefactors(AACContext *ac, float sf[120], GetBitContext *gb, |
|
|
} |
|
|
} |
|
|
} else { |
|
|
} else { |
|
|
for (; i < run_end; i++, idx++) { |
|
|
for (; i < run_end; i++, idx++) { |
|
|
offset[0] += get_vlc2(gb, vlc_scalefactors.table, 7, 3) - 60; |
|
|
|
|
|
|
|
|
offset[0] += get_vlc2(gb, vlc_scalefactors.table, 7, 3) - SCALE_DIFF_ZERO; |
|
|
if (offset[0] > 255U) { |
|
|
if (offset[0] > 255U) { |
|
|
av_log(ac->avctx, AV_LOG_ERROR, |
|
|
av_log(ac->avctx, AV_LOG_ERROR, |
|
|
"Scalefactor (%d) out of range.\n", offset[0]); |
|
|
"Scalefactor (%d) out of range.\n", offset[0]); |
|
|