Browse Source

lavd/lavfi: compute and use the used samples buffer size for the output audio packet size

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.
Stefano Sabatini 13 years ago
parent
commit
477718f40b
1 changed files with 3 additions and 1 deletions
  1. 3 1
      libavdevice/lavfi.c

+ 3 - 1
libavdevice/lavfi.c

@@ -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);