From: Michael Niedermayer <[email protected]>

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: [email protected]

Signed-off-by: Michael Niedermayer <[email protected]>
Signed-off-by: Luca Barbato <[email protected]>
---
 libavcodec/opusdec.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libavcodec/opusdec.c b/libavcodec/opusdec.c
index acae6e1..919e5e3 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;
-- 
2.5.0

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to