X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fon2avc.c;h=4e4be7530affe47907088da92f76327b79add971;hb=c03b9d6a62db4e45119e1170e83f26df1fba36df;hp=d545fea48a9cb9e573b082ec6e46ce22fc7a2c6f;hpb=c3e2e842fa9141a4776238803100b63e14c79368;p=ffmpeg diff --git a/libavcodec/on2avc.c b/libavcodec/on2avc.c index d545fea48a9..4e4be7530af 100644 --- a/libavcodec/on2avc.c +++ b/libavcodec/on2avc.c @@ -685,11 +685,11 @@ static void wtf_44(On2AVCContext *c, float *out, float *src, int size) } } -static int on2avc_reconstruct_stereo(On2AVCContext *c, AVFrame *dst, int offset) +static int on2avc_reconstruct_channel_ext(On2AVCContext *c, AVFrame *dst, int offset) { int ch, i; - for (ch = 0; ch < 2; ch++) { + for (ch = 0; ch < c->avctx->channels; ch++) { float *out = (float*)dst->extended_data[ch] + offset; float *in = c->coeffs[ch]; float *saved = c->delay[ch]; @@ -810,10 +810,6 @@ static int on2avc_decode_subframe(On2AVCContext *c, const uint8_t *buf, } c->prev_window_type = c->window_type; c->window_type = get_bits(&gb, 3); - if (c->window_type >= WINDOW_TYPE_EXT4 && c->avctx->channels == 1) { - av_log(c->avctx, AV_LOG_ERROR, "stereo mode window for mono audio\n"); - return AVERROR_INVALIDDATA; - } c->band_start = c->modes[c->window_type].band_start; c->num_windows = c->modes[c->window_type].num_windows; @@ -834,7 +830,7 @@ static int on2avc_decode_subframe(On2AVCContext *c, const uint8_t *buf, for (i = 0; i < c->avctx->channels; i++) on2avc_reconstruct_channel(c, i, dst, offset); } else { - on2avc_reconstruct_stereo(c, dst, offset); + on2avc_reconstruct_channel_ext(c, dst, offset); } return 0; @@ -923,10 +919,6 @@ static av_cold int on2avc_decode_init(AVCodecContext *avctx) : AV_CH_LAYOUT_MONO; c->is_av500 = (avctx->codec_tag == 0x500); - if (c->is_av500 && avctx->channels == 2) { - av_log(avctx, AV_LOG_ERROR, "0x500 version should be mono\n"); - return AVERROR_INVALIDDATA; - } if (avctx->channels == 2) av_log(avctx, AV_LOG_WARNING,