summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlivier CrĂȘte <olivier.crete@collabora.co.uk>2009-12-29 18:36:29 -0500
committerOlivier CrĂȘte <olivier.crete@collabora.co.uk>2010-01-05 13:20:49 -0500
commita4b0f2a1bd0fbea6b5ab4c6673f15fe37c824eb9 (patch)
tree27f4479a06fdffb301bb0eff0a3d0b0c6b06b121
parent21151ba9407bca2f37a8e7e25ead0ca9d183f30f (diff)
rtpbasepayload: Store ptime from caps
https://bugzilla.gnome.org/show_bug.cgi?id=606050
-rw-r--r--gst-libs/gst/rtp/gstbasertppayload.c8
-rw-r--r--gst-libs/gst/rtp/gstbasertppayload.h7
2 files changed, 12 insertions, 3 deletions
diff --git a/gst-libs/gst/rtp/gstbasertppayload.c b/gst-libs/gst/rtp/gstbasertppayload.c
index 8b42c9ee..a6d8eb3c 100644
--- a/gst-libs/gst/rtp/gstbasertppayload.c
+++ b/gst-libs/gst/rtp/gstbasertppayload.c
@@ -530,6 +530,7 @@ gst_basertppayload_set_outcaps (GstBaseRTPPayload * payload, gchar * fieldname,
}
payload->priv->caps_max_ptime = DEFAULT_MAX_PTIME;
+ payload->abidata.ABI.ptime = 0;
/* the peer caps can override some of the defaults */
peercaps = gst_pad_peer_get_caps (payload->srcpad);
@@ -547,7 +548,7 @@ gst_basertppayload_set_outcaps (GstBaseRTPPayload * payload, gchar * fieldname,
GstStructure *s, *d;
const GValue *value;
gint pt;
- guint max_ptime;
+ gint max_ptime, ptime;
/* peer provides caps we can use to fixate, intersect. This always returns a
* writable caps. */
@@ -561,9 +562,12 @@ gst_basertppayload_set_outcaps (GstBaseRTPPayload * payload, gchar * fieldname,
/* get first structure */
s = gst_caps_get_structure (temp, 0);
- if (gst_structure_get_uint (s, "maxptime", &max_ptime))
+ if (gst_structure_get_int (s, "maxptime", &max_ptime) && max_ptime > 0)
payload->priv->caps_max_ptime = max_ptime * GST_MSECOND;
+ if (gst_structure_get_int (s, "ptime", &ptime) && ptime > 0)
+ payload->abidata.ABI.ptime = ptime;
+
if (gst_structure_get_int (s, "payload", &pt)) {
/* use peer pt */
GST_BASE_RTP_PAYLOAD_PT (payload) = pt;
diff --git a/gst-libs/gst/rtp/gstbasertppayload.h b/gst-libs/gst/rtp/gstbasertppayload.h
index e57f74ea..1591c104 100644
--- a/gst-libs/gst/rtp/gstbasertppayload.h
+++ b/gst-libs/gst/rtp/gstbasertppayload.h
@@ -111,7 +111,12 @@ struct _GstBaseRTPPayload
/*< private >*/
GstBaseRTPPayloadPrivate *priv;
- gpointer _gst_reserved[GST_PADDING - (sizeof(guint64)/sizeof(gpointer)) - 1];
+ union {
+ struct {
+ guint ptime; /* in ms */
+ } ABI;
+ gpointer _gst_reserved[GST_PADDING - (sizeof(guint64)/sizeof(gpointer)) - 1];
+ } abidata;
};
struct _GstBaseRTPPayloadClass