use base class' newsegment to properly timestamp
authorThomas Vander Stichele <thomas@apestaart.org>
Fri, 26 Aug 2005 17:35:28 +0000 (17:35 +0000)
committerThomas Vander Stichele <thomas@apestaart.org>
Fri, 26 Aug 2005 17:35:28 +0000 (17:35 +0000)
Original commit message from CVS:

use base class' newsegment to properly timestamp

ChangeLog
gst/audioresample/gstaudioresample.c

index 3674e52..c82f89f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2005-08-26  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/audioresample/gstaudioresample.c:
+         use base class' newsegment to properly timestamp
+
 2005-08-26  Wim Taymans  <wim@fluendo.com>
 
        * gst/audioconvert/audioconvert.c: (if), (float),
index 0253707..79a4d28 100644 (file)
@@ -295,9 +295,12 @@ gboolean
   } else {
     /* take a best guess, this is called cheating */
     *othersize = floor (size * state->i_rate / state->o_rate);
+    *othersize -= *othersize % state->sample_size;
   }
   *othersize += state->sample_size;
 
+  g_assert (*othersize % state->sample_size == 0);
+
   /* we make room for one extra sample, given that the resampling filter
    * can output an extra one for non-integral i_rate/o_rate */
   GST_DEBUG_OBJECT (base, "transformed size %d to %d", size, *othersize);
@@ -396,7 +399,7 @@ static GstFlowReturn
       outsize, outsamples);
 
   GST_BUFFER_OFFSET (outbuf) = audioresample->offset;
-  GST_BUFFER_TIMESTAMP (outbuf) =
+  GST_BUFFER_TIMESTAMP (outbuf) = base->segment_start +
       audioresample->offset * GST_SECOND / audioresample->o_rate;
 
   audioresample->offset += outsamples;
@@ -405,7 +408,7 @@ static GstFlowReturn
   /* we calculate DURATION as the difference between "next" timestamp
    * and current timestamp so we ensure a contiguous stream, instead of
    * having rounding errors. */
-  GST_BUFFER_DURATION (outbuf) =
+  GST_BUFFER_DURATION (outbuf) = base->segment_start +
       audioresample->offset * GST_SECOND / audioresample->o_rate -
       GST_BUFFER_TIMESTAMP (outbuf);