From cfdf2e6db53ece4456bd1594d66ca9f80c204c59 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Fri, 31 May 2013 15:41:55 +0200 Subject: [PATCH] rtsp: place a- and x- properties as attributes application/x-rtp has properties with a- and x- prefixes that should be placed as attributes in the SDP for the media instead of being added to the fmtp. --- gst/rtsp-server/rtsp-sdp.c | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/gst/rtsp-server/rtsp-sdp.c b/gst/rtsp-server/rtsp-sdp.c index 6b0a046..39b08bb 100644 --- a/gst/rtsp-server/rtsp-sdp.c +++ b/gst/rtsp-server/rtsp-sdp.c @@ -23,7 +23,7 @@ static gboolean get_info_from_tags (GstPad * pad, GstEvent ** event, gpointer user_data) { - GstSDPMedia * media = (GstSDPMedia *) user_data; + GstSDPMedia *media = (GstSDPMedia *) user_data; if (GST_EVENT_TYPE (*event) == GST_EVENT_TAG) { GstTagList *tags; @@ -35,13 +35,13 @@ get_info_from_tags (GstPad * pad, GstEvent ** event, gpointer user_data) return TRUE; if (!gst_tag_list_get_uint (tags, GST_TAG_MAXIMUM_BITRATE, - &bitrate) || bitrate == 0) + &bitrate) || bitrate == 0) if (!gst_tag_list_get_uint (tags, GST_TAG_BITRATE, &bitrate) || bitrate == 0) return TRUE; /* set bandwidth (kbits/s) */ - gst_sdp_media_add_bandwidth (media, GST_SDP_BWTYPE_AS, bitrate/1000); + gst_sdp_media_add_bandwidth (media, GST_SDP_BWTYPE_AS, bitrate / 1000); return FALSE; @@ -179,7 +179,7 @@ gst_rtsp_sdp_from_media (GstSDPMessage * sdp, GstSDPInfo * info, gst_sdp_media_add_attribute (smedia, "control", tmp); g_free (tmp); - /* collect all other properties and add them to fmtp */ + /* collect all other properties and add them to fmtp or attributes */ fmtp = g_string_new (""); g_string_append_printf (fmtp, "%d ", caps_pt); first = TRUE; @@ -213,6 +213,19 @@ gst_rtsp_sdp_from_media (GstSDPMessage * sdp, GstSDPInfo * info, if (!strcmp (fname, "framerate")) continue; + if (g_str_has_prefix (fname, "a-")) { + /* attribute */ + if ((fval = gst_structure_get_string (s, fname))) + gst_sdp_media_add_attribute (smedia, fname + 2, fval); + continue; + } + if (g_str_has_prefix (fname, "x-")) { + /* attribute */ + if ((fval = gst_structure_get_string (s, fname))) + gst_sdp_media_add_attribute (smedia, fname, fval); + continue; + } + if ((fval = gst_structure_get_string (s, fname))) { g_string_append_printf (fmtp, "%s%s=%s", first ? "" : ";", fname, fval); first = FALSE; -- 2.7.4