mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
avcodec/adpcm_ima_amv: restrict to 1 channel
The format doesn't allow for anything else. Signed-off-by: Zane van Iperen <zane@zanevaniperen.com>
This commit is contained in:
parent
2fb764e1f3
commit
d6912294d3
@ -110,6 +110,7 @@ static av_cold int adpcm_decode_init(AVCodecContext * avctx)
|
||||
unsigned int max_channels = 2;
|
||||
|
||||
switch(avctx->codec->id) {
|
||||
case AV_CODEC_ID_ADPCM_IMA_AMV:
|
||||
case AV_CODEC_ID_ADPCM_IMA_CUNNING:
|
||||
max_channels = 1;
|
||||
break;
|
||||
@ -1681,6 +1682,8 @@ static int adpcm_decode_frame(AVCodecContext *avctx, void *data,
|
||||
}
|
||||
break;
|
||||
case AV_CODEC_ID_ADPCM_IMA_AMV:
|
||||
av_assert0(avctx->channels == 1);
|
||||
|
||||
c->status[0].predictor = sign_extend(bytestream2_get_le16u(&gb), 16);
|
||||
c->status[0].step_index = bytestream2_get_byteu(&gb);
|
||||
bytestream2_skipu(&gb, 5);
|
||||
@ -1690,7 +1693,7 @@ static int adpcm_decode_frame(AVCodecContext *avctx, void *data,
|
||||
return AVERROR_INVALIDDATA;
|
||||
}
|
||||
|
||||
for (n = nb_samples >> (1 - st); n > 0; n--) {
|
||||
for (n = nb_samples >> 1; n > 0; n--) {
|
||||
int v = bytestream2_get_byteu(&gb);
|
||||
|
||||
*samples++ = adpcm_ima_expand_nibble(&c->status[0], v >> 4, 3);
|
||||
|
@ -1696,7 +1696,7 @@ static int get_audio_frame_duration(enum AVCodecID id, int sr, int ch, int ba,
|
||||
case AV_CODEC_ID_ADPCM_IMA_SMJPEG:
|
||||
return (frame_bytes - 4) * 2 / ch;
|
||||
case AV_CODEC_ID_ADPCM_IMA_AMV:
|
||||
return (frame_bytes - 8) * 2 / ch;
|
||||
return (frame_bytes - 8) * 2;
|
||||
case AV_CODEC_ID_ADPCM_THP:
|
||||
case AV_CODEC_ID_ADPCM_THP_LE:
|
||||
if (extradata)
|
||||
|
Loading…
Reference in New Issue
Block a user