mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-03-03 14:32:16 +02:00
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>
This commit is contained in:
parent
801dbf0269
commit
64fe1eebdd
@ -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))
|
||||
|
@ -8725,11 +8725,15 @@ const int32_t ff_dca_xll_band_coeff[20] = {
|
||||
3259333, -5074941, 6928550, -8204883
|
||||
};
|
||||
|
||||
const int32_t ff_dca_sampling_freqs[16] = {
|
||||
const uint32_t ff_dca_sampling_freqs[16] = {
|
||||
8000, 16000, 32000, 64000, 128000, 22050, 44100, 88200,
|
||||
176400, 352800, 12000, 24000, 48000, 96000, 192000, 384000,
|
||||
};
|
||||
|
||||
const uint8_t ff_dca_freq_ranges[16] = {
|
||||
0, 1, 2, 3, 4, 1, 2, 3, 4, 4, 0, 1, 2, 3, 4, 4
|
||||
};
|
||||
|
||||
const uint16_t ff_dca_avg_g3_freqs[3] = { 16000, 18000, 24000 };
|
||||
|
||||
const uint16_t ff_dca_fst_amp[44] = {
|
||||
|
@ -71,7 +71,8 @@ extern const uint16_t ff_dca_xll_refl_coeff[128];
|
||||
|
||||
extern const int32_t ff_dca_xll_band_coeff[20];
|
||||
|
||||
extern const int32_t ff_dca_sampling_freqs[16];
|
||||
extern const uint32_t ff_dca_sampling_freqs[16];
|
||||
extern const uint8_t ff_dca_freq_ranges[16];
|
||||
|
||||
extern const uint16_t ff_dca_avg_g3_freqs[3];
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user