lavd/lavfi: compute and use the used samples buffer size for the output audio packet...
authorStefano Sabatini <stefasab@gmail.com>
Sun, 16 Oct 2011 08:35:07 +0000 (10:35 +0200)
committerStefano Sabatini <stefasab@gmail.com>
Sun, 16 Oct 2011 19:18:44 +0000 (21:18 +0200)
Do not assume the used size is the same of the allocated size, as it was
wrongly assumed. Fix audio playback when the two values differ.

libavdevice/lavfi.c

index 4d7297b..0477081 100644 (file)
@@ -299,7 +299,9 @@ static int lavfi_read_packet(AVFormatContext *avctx, AVPacket *pkt)
         avpicture_layout(&pict, ref->format, ref->video->w,
                          ref->video->h, pkt->data, size);
     } else if (ref->audio) {
-        size = ref->linesize[0];
+        size = ref->audio->nb_samples *
+            av_get_bytes_per_sample(ref->format) *
+            av_get_channel_layout_nb_channels(ref->audio->channel_layout);
         if ((ret = av_new_packet(pkt, size)) < 0)
             return ret;
         memcpy(pkt->data, ref->data[0], size);