static void append_enabled_medias (KmsSdpHandler * handler, SdpGroupStrVal * val) { const GstSDPMedia *media; const gchar *mid; gchar *tmp; if (handler->index > gst_sdp_message_medias_len (val->msg)) { GST_ERROR_OBJECT (val->group, "Index %u for handler (%u) out of SDP range", handler->index, handler->id); return; } media = gst_sdp_message_get_media (val->msg, handler->index); if (media == NULL) { GST_ERROR_OBJECT (val->group, "No media got in SDP"); return; } mid = gst_sdp_media_get_attribute_val (media, "mid"); if (mid == NULL) { GST_WARNING_OBJECT (val->group, "No mid attribute for media %u. Skipping from group", handler->index); return; } tmp = val->str; val->str = g_strdup_printf ("%s %s", tmp, mid); g_free (tmp); }
static gboolean test_response_sdp (GstRTSPClient * client, GstRTSPMessage * response, gboolean close, gpointer user_data) { guint8 *data; guint size; GstSDPMessage *sdp_msg; const GstSDPMedia *sdp_media; const GstSDPBandwidth *bw; gint bandwidth_val = GPOINTER_TO_INT (user_data); fail_unless (gst_rtsp_message_get_body (response, &data, &size) == GST_RTSP_OK); gst_sdp_message_new (&sdp_msg); fail_unless (gst_sdp_message_parse_buffer (data, size, sdp_msg) == GST_SDP_OK); /* session description */ /* v= */ fail_unless (gst_sdp_message_get_version (sdp_msg) != NULL); /* o= */ fail_unless (gst_sdp_message_get_origin (sdp_msg) != NULL); /* s= */ fail_unless (gst_sdp_message_get_session_name (sdp_msg) != NULL); /* t=0 0 */ fail_unless (gst_sdp_message_times_len (sdp_msg) == 0); /* verify number of medias */ fail_unless (gst_sdp_message_medias_len (sdp_msg) == 1); /* media description */ sdp_media = gst_sdp_message_get_media (sdp_msg, 0); fail_unless (sdp_media != NULL); /* m= */ fail_unless (gst_sdp_media_get_media (sdp_media) != NULL); /* media bandwidth */ if (bandwidth_val) { fail_unless (gst_sdp_media_bandwidths_len (sdp_media) == 1); bw = gst_sdp_media_get_bandwidth (sdp_media, 0); fail_unless (bw != NULL); fail_unless (g_strcmp0 (bw->bwtype, "AS") == 0); fail_unless (bw->bandwidth == bandwidth_val); } else { fail_unless (gst_sdp_media_bandwidths_len (sdp_media) == 0); } gst_sdp_message_free (sdp_msg); return TRUE; }