diff --git a/gst/rtsp/gstrtspsrc.c b/gst/rtsp/gstrtspsrc.c index 3d9852c855..621bb3ce53 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: /[/] + * a=framesize: - * a=fmtp: [=];... */ 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 - */ + 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 */