mirror of https://git.ffmpeg.org/ffmpeg.git
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;
|
unsigned int max_channels = 2;
|
||||||
|
|
||||||
switch(avctx->codec->id) {
|
switch(avctx->codec->id) {
|
||||||
|
case AV_CODEC_ID_ADPCM_IMA_AMV:
|
||||||
case AV_CODEC_ID_ADPCM_IMA_CUNNING:
|
case AV_CODEC_ID_ADPCM_IMA_CUNNING:
|
||||||
max_channels = 1;
|
max_channels = 1;
|
||||||
break;
|
break;
|
||||||
|
@ -1681,6 +1682,8 @@ static int adpcm_decode_frame(AVCodecContext *avctx, void *data,
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case AV_CODEC_ID_ADPCM_IMA_AMV:
|
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].predictor = sign_extend(bytestream2_get_le16u(&gb), 16);
|
||||||
c->status[0].step_index = bytestream2_get_byteu(&gb);
|
c->status[0].step_index = bytestream2_get_byteu(&gb);
|
||||||
bytestream2_skipu(&gb, 5);
|
bytestream2_skipu(&gb, 5);
|
||||||
|
@ -1690,7 +1693,7 @@ static int adpcm_decode_frame(AVCodecContext *avctx, void *data,
|
||||||
return AVERROR_INVALIDDATA;
|
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);
|
int v = bytestream2_get_byteu(&gb);
|
||||||
|
|
||||||
*samples++ = adpcm_ima_expand_nibble(&c->status[0], v >> 4, 3);
|
*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:
|
case AV_CODEC_ID_ADPCM_IMA_SMJPEG:
|
||||||
return (frame_bytes - 4) * 2 / ch;
|
return (frame_bytes - 4) * 2 / ch;
|
||||||
case AV_CODEC_ID_ADPCM_IMA_AMV:
|
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:
|
||||||
case AV_CODEC_ID_ADPCM_THP_LE:
|
case AV_CODEC_ID_ADPCM_THP_LE:
|
||||||
if (extradata)
|
if (extradata)
|
||||||
|
|
Loading…
Reference in New Issue