gst-libs/gst/audio/gstbaseaudiosink.c: Don't try to align a sample to an unknown...
authorWim Taymans <wim.taymans@gmail.com>
Mon, 24 Jul 2006 16:47:10 +0000 (16:47 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Mon, 24 Jul 2006 16:47:10 +0000 (16:47 +0000)
Original commit message from CVS:
* gst-libs/gst/audio/gstbaseaudiosink.c:
(gst_base_audio_sink_render):
Don't try to align a sample to an unknown value.

ChangeLog
gst-libs/gst/audio/gstbaseaudiosink.c

index 411ce18ba0a94060c0fcbb7506e2335ccd6a31d6..908063807bfd6bc9411cf3d0492a58c3ef8523da 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2006-07-24  Wim Taymans  <wim@fluendo.com>
+
+       * gst-libs/gst/audio/gstbaseaudiosink.c:
+       (gst_base_audio_sink_render):
+       Don't try to align a sample to an unknown value.
+
 2006-07-24  Wim Taymans  <wim@fluendo.com>
 
        * gst-libs/gst/audio/gstbaseaudiosink.c:
index 48406d1d3d8ddb81572386aae584fd22a3d76f25..07a386a8c99b40966c4ee7d1865854d09c60dec9 100644 (file)
@@ -593,6 +593,12 @@ gst_base_audio_sink_render (GstBaseSink * bsink, GstBuffer * buf)
     goto no_align;
   }
 
+  if (G_UNLIKELY (sink->next_sample == -1)) {
+    GST_DEBUG_OBJECT (sink,
+        "no align possible: no previous sample position known");
+    goto no_align;
+  }
+
   /* now try to align the sample to the previous one */
   diff = ABS ((gint64) render_offset - (gint64) sink->next_sample);
 
@@ -600,7 +606,7 @@ gst_base_audio_sink_render (GstBaseSink * bsink, GstBuffer * buf)
    * should be enough to compensate for various rounding errors in the timestamp
    * and sample offset position. We always resync if we got a discont anyway and
    * non-discont should be aligned by definition. */
-  if (diff < ringbuf->spec.rate / DIFF_TOLERANCE) {
+  if (G_LIKELY (diff < ringbuf->spec.rate / DIFF_TOLERANCE)) {
     GST_DEBUG_OBJECT (sink,
         "align with prev sample, %" G_GINT64_FORMAT " < %lu", diff,
         ringbuf->spec.rate / DIFF_TOLERANCE);