audiosink: don't align when we clip
authorWim Taymans <wim.taymans@collabora.co.uk>
Mon, 8 Jun 2009 15:26:59 +0000 (17:26 +0200)
committerWim Taymans <wim.taymans@collabora.co.uk>
Mon, 8 Jun 2009 15:26:59 +0000 (17:26 +0200)
Don't align samples when they were clipped. Not entirely correct but better than
nothing for now.

gst-libs/gst/audio/gstbaseaudiosink.c

index 38c40e4..af712c4 100644 (file)
@@ -1327,6 +1327,9 @@ gst_base_audio_sink_render (GstBaseSink * bsink, GstBuffer * buf)
     samples -= diff;
     data += diff * bps;
     time = ctime;
+    /* don't align if we clipped */
+    if (bsink->segment.rate >= 0.0)
+      sink->next_sample = -1;
   }
   diff = stop - cstop;
   if (diff > 0) {
@@ -1336,6 +1339,9 @@ gst_base_audio_sink_render (GstBaseSink * bsink, GstBuffer * buf)
         G_GUINT64_FORMAT " samples", GST_TIME_ARGS (cstop), diff);
     samples -= diff;
     stop = cstop;
+    /* don't align if we clipped */
+    if (bsink->segment.rate <= 0.0)
+      sink->next_sample = -1;
   }
 
   /* figure out how to sync */