diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-11-02 14:15:28 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-11-02 14:20:33 +0100 |
commit | 6788350281c418f0f395a8279eee82f7abe7c63b (patch) | |
tree | 69cd76f699eff929f5b13f76b42eabc7f25f9355 /libavcodec/qdm2.c | |
parent | 00aa7fa786e41b5fc8404732453869aa3c14e33a (diff) | |
parent | 50a65e7a540ce6747f81d6dbf6a602ad35be77ff (diff) | |
download | ffmpeg-6788350281c418f0f395a8279eee82f7abe7c63b.tar.gz |
Merge commit '50a65e7a540ce6747f81d6dbf6a602ad35be77ff'
* commit '50a65e7a540ce6747f81d6dbf6a602ad35be77ff': (24 commits)
vmdaudio: set channel layout
twinvq: validate sample rate code
twinvq: set channel layout
twinvq: validate that channels is not <= 0
truespeech: set channel layout
sipr: set channel layout
shorten: validate that the channel count in the header is not <= 0
ra288dec: set channel layout
ra144dec: set channel layout
qdm2: remove unneeded checks for channel count
qdm2: make sure channels is not <= 0 and set channel layout
qcelpdec: set channel layout
nellymoserdec: set channels to 1
libopencore-amr: set channel layout for amr-nb or if not set by the user
libilbc: set channel layout
dpcm: use AVCodecContext.channels instead of keeping a private copy
imc: set channels to 1 instead of validating it
gsmdec: always set channel layout and sample rate at initialization
libgsmdec: always set channel layout and sample rate at initialization
g726dec: do not validate sample rate
...
Conflicts:
libavcodec/dpcm.c
libavcodec/qdm2.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/qdm2.c')
-rw-r--r-- | libavcodec/qdm2.c | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/libavcodec/qdm2.c b/libavcodec/qdm2.c index 3a77e7fe06..1d0fb3774e 100644 --- a/libavcodec/qdm2.c +++ b/libavcodec/qdm2.c @@ -36,6 +36,7 @@ #include <stdio.h> #define BITSTREAM_READER_LE +#include "libavutil/audioconvert.h" #include "avcodec.h" #include "get_bits.h" #include "dsputil.h" @@ -550,10 +551,6 @@ static void fill_tone_level_array (QDM2Context *q, int flag) int i, sb, ch, sb_used; int tmp, tab; - // This should never happen - if (q->nb_channels <= 0) - return; - for (ch = 0; ch < q->nb_channels; ch++) for (sb = 0; sb < 30; sb++) for (i = 0; i < 8; i++) { @@ -649,10 +646,6 @@ static void fill_coding_method_array (sb_int8_array tone_level_idx, sb_int8_arra int add1, add2, add3, add4; int64_t multres; - // This should never happen - if (nb_channels <= 0) - return; - if (!superblocktype_2_3) { /* This case is untested, no samples available */ SAMPLES_NEEDED @@ -1792,10 +1785,12 @@ static av_cold int qdm2_decode_init(AVCodecContext *avctx) avctx->channels = s->nb_channels = s->channels = AV_RB32(extradata); extradata += 4; - if (s->channels > MPA_MAX_CHANNELS) { - av_log(avctx, AV_LOG_ERROR, "Too many channels\n"); + if (s->channels <= 0 || s->channels > MPA_MAX_CHANNELS) { + 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; avctx->sample_rate = AV_RB32(extradata); extradata += 4; |