diff --git a/ffmpeg.c b/ffmpeg.c
index be93da9e4695b63cca3619ae7b76ea757e4dc06c..5cb702a9a6245036d2ecf399975e44685aea7854 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -1066,9 +1066,10 @@ static int output_packet(AVInputStream *ist, int ist_index,
             case CODEC_TYPE_AUDIO:{
                 if(pkt)
                     samples= av_fast_realloc(samples, &samples_size, FFMAX(pkt->size, AVCODEC_MAX_AUDIO_FRAME_SIZE));
+                data_size= samples_size;
                     /* XXX: could avoid copy if PCM 16 bits with same
                        endianness as CPU */
-                ret = avcodec_decode_audio(ist->st->codec, samples, &data_size,
+                ret = avcodec_decode_audio2(ist->st->codec, samples, &data_size,
                                            ptr, len);
                 if (ret < 0)
                     goto fail_decode;