gst/law/mulaw-decode.*: Calculate outgoing buffer duration if incoming buffer didn...
authorEdward Hervey <bilboed@bilboed.com>
Fri, 2 Nov 2007 17:23:43 +0000 (17:23 +0000)
committerEdward Hervey <bilboed@bilboed.com>
Fri, 2 Nov 2007 17:23:43 +0000 (17:23 +0000)
Original commit message from CVS:
* gst/law/mulaw-decode.c: (mulawdec_sink_setcaps),
(gst_mulawdec_chain):
* gst/law/mulaw-decode.h:
Calculate outgoing buffer duration if incoming buffer didn't have a
valid duration.

ChangeLog
gst/law/mulaw-decode.c
gst/law/mulaw-decode.h

index 3be84fe..c26c75c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2007-11-02  Edward Hervey  <bilboed@bilboed.com>
+
+       * gst/law/mulaw-decode.c: (mulawdec_sink_setcaps),
+       (gst_mulawdec_chain):
+       * gst/law/mulaw-decode.h:
+       Calculate outgoing buffer duration if incoming buffer didn't have a
+       valid duration.
+
 2007-10-30  Wim Taymans  <wim.taymans@gmail.com>
 
        * gst/qtdemux/qtdemux.c: (gst_qtdemux_activate_segment),
index 20ccb52..d7a858e 100644 (file)
@@ -73,6 +73,9 @@ mulawdec_sink_setcaps (GstPad * pad, GstCaps * caps)
       "signed", G_TYPE_BOOLEAN, TRUE,
       "rate", G_TYPE_INT, rate, "channels", G_TYPE_INT, channels, NULL);
 
+  mulawdec->rate = rate;
+  mulawdec->channels = channels;
+
   return TRUE;
 }
 
@@ -163,7 +166,11 @@ gst_mulawdec_chain (GstPad * pad, GstBuffer * buffer)
     GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT);
 
   GST_BUFFER_TIMESTAMP (outbuf) = GST_BUFFER_TIMESTAMP (buffer);
-  GST_BUFFER_DURATION (outbuf) = GST_BUFFER_DURATION (buffer);
+  if (GST_BUFFER_DURATION (outbuf) == GST_CLOCK_TIME_NONE)
+    GST_BUFFER_DURATION (outbuf) = gst_util_uint64_scale_int (GST_SECOND,
+        mulaw_size * 2, 2 * mulawdec->rate * mulawdec->channels);
+  else
+    GST_BUFFER_DURATION (outbuf) = GST_BUFFER_DURATION (buffer);
   gst_buffer_set_caps (outbuf, mulawdec->srccaps);
 
   mulaw_decode (mulaw_data, linear_data, mulaw_size);
index ee1a14d..df44189 100644 (file)
@@ -43,6 +43,9 @@ struct _GstMuLawDec {
 
   GstPad *sinkpad,*srcpad;
   GstCaps *srccaps;
+
+  gint rate;
+  gint channels;
 };
 
 struct _GstMuLawDecClass {