diff options
author | Olivier CrĂȘte <olivier.crete@collabora.co.uk> | 2009-12-29 18:36:29 -0500 |
---|---|---|
committer | Olivier CrĂȘte <olivier.crete@collabora.co.uk> | 2010-01-05 13:20:49 -0500 |
commit | a4b0f2a1bd0fbea6b5ab4c6673f15fe37c824eb9 (patch) | |
tree | 27f4479a06fdffb301bb0eff0a3d0b0c6b06b121 | |
parent | 21151ba9407bca2f37a8e7e25ead0ca9d183f30f (diff) |
rtpbasepayload: Store ptime from caps
https://bugzilla.gnome.org/show_bug.cgi?id=606050
-rw-r--r-- | gst-libs/gst/rtp/gstbasertppayload.c | 8 | ||||
-rw-r--r-- | gst-libs/gst/rtp/gstbasertppayload.h | 7 |
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 |