|
|
|
@ -248,13 +248,14 @@ static av_cold int qdmc_decode_init(AVCodecContext *avctx) |
|
|
|
|
} |
|
|
|
|
bytestream2_skipu(&b, 4); |
|
|
|
|
|
|
|
|
|
avctx->channels = s->nb_channels = bytestream2_get_be32u(&b); |
|
|
|
|
s->nb_channels = bytestream2_get_be32u(&b); |
|
|
|
|
if (s->nb_channels <= 0 || s->nb_channels > 2) { |
|
|
|
|
av_log(avctx, AV_LOG_ERROR, "invalid number of channels\n"); |
|
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
|
} |
|
|
|
|
avctx->channel_layout = avctx->channels == 2 ? AV_CH_LAYOUT_STEREO : |
|
|
|
|
AV_CH_LAYOUT_MONO; |
|
|
|
|
av_channel_layout_uninit(&avctx->ch_layout); |
|
|
|
|
avctx->ch_layout = s->nb_channels == 2 ? (AVChannelLayout)AV_CHANNEL_LAYOUT_STEREO : |
|
|
|
|
(AVChannelLayout)AV_CHANNEL_LAYOUT_MONO; |
|
|
|
|
|
|
|
|
|
avctx->sample_rate = bytestream2_get_be32u(&b); |
|
|
|
|
avctx->bit_rate = bytestream2_get_be32u(&b); |
|
|
|
@ -280,7 +281,7 @@ static av_cold int qdmc_decode_init(AVCodecContext *avctx) |
|
|
|
|
s->frame_size = 1 << s->frame_bits; |
|
|
|
|
s->subframe_size = s->frame_size >> 5; |
|
|
|
|
|
|
|
|
|
if (avctx->channels == 2) |
|
|
|
|
if (avctx->ch_layout.nb_channels == 2) |
|
|
|
|
x = 3 * x / 2; |
|
|
|
|
s->band_index = noise_bands_selector[FFMIN(6, llrint(floor(avctx->bit_rate * 3.0 / (double)x + 0.5)))]; |
|
|
|
|
|
|
|
|
|