diff options
author | foo86 <foobaz86@gmail.com> | 2016-05-13 12:48:27 +0300 |
---|---|---|
committer | James Almer <jamrial@gmail.com> | 2016-05-20 23:12:37 -0300 |
commit | 64fe1eebddbbf705d0c25d000c102bfca5558682 (patch) | |
tree | 32575c102c14db86cbee45dd27fe10e3d413996f /libavcodec/dca_lbr.c | |
parent | 801dbf0269b1bb5bc70c550e971491e0aea9eb70 (diff) | |
download | ffmpeg-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.c | 15 |
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)) |