From 5fd034ff1a517db7f629ffcc3ed16839c61f5c97 Mon Sep 17 00:00:00 2001 From: Sebastian Rasmussen Date: Wed, 22 May 2013 03:29:30 +0200 Subject: [PATCH] rtsp-sdp: Parse width/height from caps and set SDP attribute The SDP attribute and its format is described in RFC6064. Fixes https://bugzilla.gnome.org/show_bug.cgi?id=700747 --- gst/rtsp-server/rtsp-sdp.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/gst/rtsp-server/rtsp-sdp.c b/gst/rtsp-server/rtsp-sdp.c index 6384568..67f031b 100644 --- a/gst/rtsp-server/rtsp-sdp.c +++ b/gst/rtsp-server/rtsp-sdp.c @@ -100,6 +100,7 @@ gst_rtsp_sdp_from_media (GstSDPMessage * sdp, GstSDPInfo * info, gboolean first; GString *fmtp; GstCaps *caps; + gint width, height; stream = gst_rtsp_media_get_stream (media, i); caps = gst_rtsp_stream_get_caps (stream); @@ -150,6 +151,18 @@ gst_rtsp_sdp_from_media (GstSDPMessage * sdp, GstSDPInfo * info, g_free (tmp); } + /* create framesize SDP attribute */ + if (gst_structure_get_int (s, "width", &width) && width > 0 && + gst_structure_get_int (s, "height", &height) && height > 0) { + tmp = g_strdup_printf ("%d %d-%d", caps_pt, width, height); + gst_sdp_media_add_attribute (smedia, "framesize", tmp); + g_free (tmp); + + tmp = g_strdup_printf (" %d,%d", width, height); + gst_sdp_media_add_attribute (smedia, "x-dimensions", tmp); + g_free (tmp); + } + /* the config uri */ tmp = g_strdup_printf ("stream=%d", i); gst_sdp_media_add_attribute (smedia, "control", tmp); @@ -182,6 +195,10 @@ gst_rtsp_sdp_from_media (GstSDPMessage * sdp, GstSDPInfo * info, continue; if (!strcmp (fname, "seqnum-base")) continue; + if (!strcmp (fname, "width")) + continue; + if (!strcmp (fname, "height")) + continue; if ((fval = gst_structure_get_string (s, fname))) { g_string_append_printf (fmtp, "%s%s=%s", first ? "" : ";", fname, fval); -- 2.7.4