summaryrefslogtreecommitdiff
path: root/gst
diff options
context:
space:
mode:
authorLinus Svensson <linussn@axis.com>2014-02-27 10:52:16 +0100
committerSebastian Dröge <sebastian@centricular.com>2015-03-09 10:18:35 +0100
commit398296d9780fa7731d7be8db6f3dbbfa09e053a1 (patch)
tree8e42519623601fdc930cc8e521751ef276da3c54 /gst
parent38bf3d3808f13b604f979900f03d9fdb0cf40cfc (diff)
rtspsrc: Don't include payload type in the caps for framesize
When the sdp media attribute framesize are converted to caps the <payload> should not be included. Fixes https://bugzilla.gnome.org/show_bug.cgi?id=725335
Diffstat (limited to 'gst')
-rw-r--r--gst/rtsp/gstrtspsrc.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/gst/rtsp/gstrtspsrc.c b/gst/rtsp/gstrtspsrc.c
index 3d9852c85..621bb3ce5 100644
--- a/gst/rtsp/gstrtspsrc.c
+++ b/gst/rtsp/gstrtspsrc.c
@@ -1902,6 +1902,8 @@ gst_rtspsrc_sdp_attributes_to_caps (GArray * attributes, GstCaps * caps)
continue;
if (!strcmp (key, "range"))
continue;
+ if (!strcmp (key, "framesize"))
+ continue;
if (g_str_equal (key, "key-mgmt")) {
parse_keymgmt (attr->value, caps);
continue;
@@ -1949,6 +1951,7 @@ rtsp_get_attribute_for_pt (const GstSDPMedia * media, const gchar * name,
* Mapping of caps to and from SDP fields:
*
* a=rtpmap:<payload> <encoding_name>/<clock_rate>[/<encoding_params>]
+ * a=framesize:<payload> <width>-<height>
* a=fmtp:<payload> <param>[=<value>];...
*/
static GstCaps *
@@ -1957,6 +1960,7 @@ gst_rtspsrc_media_to_caps (gint pt, const GstSDPMedia * media)
GstCaps *caps;
const gchar *rtpmap;
const gchar *fmtp;
+ const gchar *framesize;
gchar *name = NULL;
gint rate = -1;
gchar *params = NULL;
@@ -2070,6 +2074,19 @@ gst_rtspsrc_media_to_caps (gint pt, const GstSDPMedia * media)
g_strfreev (pairs);
}
}
+
+ /* parse framesize: field */
+ if ((framesize = gst_sdp_media_get_attribute_val (media, "framesize"))) {
+ gchar *p;
+
+ /* p is now of the format <payload> <width>-<height> */
+ p = (gchar *) framesize;
+
+ PARSE_INT (p, " ", payload);
+ if (payload != -1 && payload == pt) {
+ gst_structure_set (s, "a-framesize", G_TYPE_STRING, p, NULL);
+ }
+ }
return caps;
/* ERRORS */