2007-09-19 Wim Taymans <wim.taymans@gmail.com>
+ * gst-libs/gst/rtp/gstbasertpdepayload.c:
+ (gst_base_rtp_depayload_chain),
+ (gst_base_rtp_depayload_set_gst_timestamp):
+ Only copy timestamp on outgoing packets if the depayloader did not set
+ one.
+ Also copy duration on outgoing packets.
+
+2007-09-19 Wim Taymans <wim.taymans@gmail.com>
+
* gst-libs/gst/rtp/gstbasertppayload.c: (copy_fixed),
(gst_basertppayload_set_outcaps):
Fix compilation because of missing %d in printf.
gboolean discont;
GstClockTime timestamp;
+ GstClockTime duration;
};
/* Filter signals and args */
timestamp = gst_segment_to_running_time (&filter->segment, GST_FORMAT_TIME,
timestamp);
priv->timestamp = timestamp;
+ priv->duration = GST_BUFFER_DURATION (in);
bclass = GST_BASE_RTP_DEPAYLOAD_GET_CLASS (filter);
guint32 rtptime, GstBuffer * buf)
{
GstBaseRTPDepayloadPrivate *priv;
+ GstClockTime timestamp, duration;
priv = filter->priv;
- /* apply incomming timestamp to outgoing buffer */
- GST_BUFFER_TIMESTAMP (buf) = priv->timestamp;
+ timestamp = GST_BUFFER_TIMESTAMP (buf);
+ duration = GST_BUFFER_DURATION (buf);
+
+ /* apply last incomming timestamp and duration to outgoing buffer if
+ * not otherwise set. */
+ if (!GST_CLOCK_TIME_IS_VALID (timestamp))
+ GST_BUFFER_TIMESTAMP (buf) = priv->timestamp;
+ if (!GST_CLOCK_TIME_IS_VALID (duration))
+ GST_BUFFER_DURATION (buf) = priv->duration;
/* if this is the first buffer send a NEWSEGMENT */
if (filter->need_newsegment) {