From 6dcd82290438eb810936de4febd0558b38a08ec5 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Tue, 27 Oct 2015 13:47:12 +0100 Subject: [PATCH] opus: Buffer the samples from the correct offset When not all the opus stream have the same amount of decoded samples process the least amount and store what is left from the other streams. Bug-Id: 909 CC: libav-stable@libav.org Signed-off-by: Michael Niedermayer Signed-off-by: Luca Barbato --- libavcodec/opusdec.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libavcodec/opusdec.c b/libavcodec/opusdec.c index acae6e1f66..919e5e3303 100644 --- a/libavcodec/opusdec.c +++ b/libavcodec/opusdec.c @@ -567,8 +567,8 @@ static int opus_decode_packet(AVCodecContext *avctx, void *data, if (buffer_samples) { float *buf[2] = { c->out[2 * i + 0] ? c->out[2 * i + 0] : (float*)frame->extended_data[0], c->out[2 * i + 1] ? c->out[2 * i + 1] : (float*)frame->extended_data[0] }; - buf[0] += buffer_samples; - buf[1] += buffer_samples; + buf[0] += decoded_samples; + buf[1] += decoded_samples; ret = av_audio_fifo_write(c->sync_buffers[i], (void**)buf, buffer_samples); if (ret < 0) return ret;