aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michael@niedermayer.cc>2015-10-27 13:47:12 +0100
committerLuca Barbato <lu_zero@gentoo.org>2015-10-28 16:59:57 +0100
commit6dcd82290438eb810936de4febd0558b38a08ec5 (patch)
tree965c54d3c0f79ad93090ca4ecc71d94c04cc6a74
parentf3aff31e5f66a4f1c4e34ce4944f4a402aca61ed (diff)
downloadffmpeg-6dcd82290438eb810936de4febd0558b38a08ec5.tar.gz
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 <michael@niedermayer.cc> Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
-rw-r--r--libavcodec/opusdec.c4
1 files 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;