aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/dca_lbr.c
diff options
context:
space:
mode:
authorfoo86 <foobaz86@gmail.com>2016-05-13 12:48:27 +0300
committerJames Almer <jamrial@gmail.com>2016-05-20 23:12:37 -0300
commit64fe1eebddbbf705d0c25d000c102bfca5558682 (patch)
tree32575c102c14db86cbee45dd27fe10e3d413996f /libavcodec/dca_lbr.c
parent801dbf0269b1bb5bc70c550e971491e0aea9eb70 (diff)
downloadffmpeg-64fe1eebddbbf705d0c25d000c102bfca5558682.tar.gz
avcodec/dca: use LUT for LBR frequency ranges
Values for unsupported frequencies > 48000 Hz are still included (parser will make use of them). Also convert sampling frequencies array to unsigned. Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavcodec/dca_lbr.c')
-rw-r--r--libavcodec/dca_lbr.c15
1 files changed, 5 insertions, 10 deletions
diff --git a/libavcodec/dca_lbr.c b/libavcodec/dca_lbr.c
index 9a7f4cd819..f116ab9a02 100644
--- a/libavcodec/dca_lbr.c
+++ b/libavcodec/dca_lbr.c
@@ -1000,15 +1000,15 @@ static int parse_decoder_init(DCALbrDecoder *s, GetByteContext *gb)
int old_band_limit = s->band_limit;
int old_nchannels = s->nchannels;
int version, bit_rate_hi;
- unsigned int code;
+ unsigned int sr_code;
// Sample rate of LBR audio
- code = bytestream2_get_byte(gb);
- if (code >= FF_ARRAY_ELEMS(ff_dca_sampling_freqs)) {
+ sr_code = bytestream2_get_byte(gb);
+ if (sr_code >= FF_ARRAY_ELEMS(ff_dca_sampling_freqs)) {
av_log(s->avctx, AV_LOG_ERROR, "Invalid LBR sample rate\n");
return AVERROR_INVALIDDATA;
}
- s->sample_rate = ff_dca_sampling_freqs[code];
+ s->sample_rate = ff_dca_sampling_freqs[sr_code];
if (s->sample_rate > 48000) {
avpriv_report_missing_feature(s->avctx, "%d Hz LBR sample rate", s->sample_rate);
return AVERROR_PATCHWELCOME;
@@ -1076,12 +1076,7 @@ static int parse_decoder_init(DCALbrDecoder *s, GetByteContext *gb)
}
// Setup frequency range
- if (s->sample_rate < 14000)
- s->freq_range = 0;
- else if (s->sample_rate < 28000)
- s->freq_range = 1;
- else
- s->freq_range = 2;
+ s->freq_range = ff_dca_freq_ranges[sr_code];
// Setup resolution profile
if (s->bit_rate_orig >= 44000 * (s->nchannels_total + 2))