guint64 base_offset;
gint64 base_rtime;
+ guint64 running_time;
gint64 prop_max_ptime;
gint64 caps_max_ptime;
#define DEFAULT_MIN_PTIME 0
#define DEFAULT_PERFECT_RTPTIME TRUE
#define DEFAULT_PTIME_MULTIPLE 0
+#define DEFAULT_RUNNING_TIME GST_CLOCK_TIME_NONE
enum
{
* stream</para></listitem>
* </varlistentry>
* <varlistentry>
+ * <term>running-time</term>
+ * <listitem><para>#G_TYPE_UINT64, running time
+ * </para></listitem>
+ * </varlistentry>
+ * <varlistentry>
* <term>seqnum</term>
* <listitem><para>#G_TYPE_UINT, sequence number, same as
* #GstRTPBasePayload:seqnum</para></listitem>
rtpbasepayload->seqnum_offset = DEFAULT_SEQNUM_OFFSET;
rtpbasepayload->ssrc = DEFAULT_SSRC;
rtpbasepayload->ts_offset = DEFAULT_TIMESTAMP_OFFSET;
+ priv->running_time = DEFAULT_RUNNING_TIME;
priv->seqnum_offset_random = (rtpbasepayload->seqnum_offset == -1);
priv->ts_offset_random = (rtpbasepayload->ts_offset == -1);
priv->ssrc_random = (rtpbasepayload->ssrc == -1);
data.offset - priv->base_offset;
GST_LOG_OBJECT (payload,
"Using offset %" G_GUINT64_FORMAT " for RTP timestamp", data.offset);
+
+ /* store buffer's running time */
+ GST_LOG_OBJECT (payload,
+ "setting running-time to %" G_GUINT64_FORMAT,
+ data.offset - priv->base_offset);
+ priv->running_time = priv->base_rtime + data.offset - priv->base_offset;
} else if (GST_CLOCK_TIME_IS_VALID (data.pts)) {
gint64 rtime;
}
/* add running_time in clock-rate units to the base timestamp */
data.rtptime = payload->ts_base + rtime;
+
+ /* store buffer's running time */
+ GST_LOG_OBJECT (payload,
+ "setting running-time to %" G_GUINT64_FORMAT, rtime);
+ priv->running_time = rtime;
} else {
GST_LOG_OBJECT (payload,
"Using previous RTP timestamp %" G_GUINT32_FORMAT, payload->timestamp);
static GstStructure *
gst_rtp_base_payload_create_stats (GstRTPBasePayload *rtpbasepayload)
{
+ GstRTPBasePayloadPrivate *priv;
GstStructure *s;
+ priv = rtpbasepayload->priv;
+
s = gst_structure_new ("application/x-rtp-payload-stats",
"clock-rate", G_TYPE_UINT, rtpbasepayload->clock_rate,
+ "running-time", G_TYPE_UINT64, priv->running_time,
"seqnum", G_TYPE_UINT, rtpbasepayload->seqnum,
"timestamp", G_TYPE_UINT, rtpbasepayload->timestamp,
NULL);
else
rtpbasepayload->ts_base = rtpbasepayload->ts_offset;
rtpbasepayload->timestamp = rtpbasepayload->ts_base;
+ priv->running_time = DEFAULT_RUNNING_TIME;
g_atomic_int_set (&rtpbasepayload->priv->notified_first_timestamp, 1);
priv->base_offset = GST_BUFFER_OFFSET_NONE;
priv->negotiated = FALSE;