audiomixer: The pad's size is always supposed to be the whole buffer size
authorSebastian Dröge <sebastian@centricular.com>
Thu, 18 Dec 2014 21:42:14 +0000 (22:42 +0100)
committerSebastian Dröge <sebastian@centricular.com>
Thu, 18 Dec 2014 21:42:14 +0000 (22:42 +0100)
And the offset the offset into that buffer. Changing the size will
cause all kinds of assumptions to fail and cause crashes.

gst/audiomixer/gstaudiomixer.c

index 3559750..e219132 100644 (file)
@@ -1114,10 +1114,9 @@ gst_audio_mixer_fill_buffer (GstAudioMixer * audiomixer, GstAudioMixerPad * pad,
     if (start_running_time_offset < audiomixer->offset) {
       GstBuffer *buf;
       guint diff = (audiomixer->offset - start_running_time_offset) * bpf;
+
       pad->position += diff;
-      pad->size -= diff;
-      /* FIXME: This could only happen due to rounding errors */
-      if (pad->size == 0) {
+      if (pad->position >= pad->size) {
         /* Empty buffer, drop */
         gst_buffer_unref (inbuf);
         pad->buffer = NULL;