diff --git a/ChangeLog b/ChangeLog index d6f488b7cd..821a331fc9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2007-02-16 Wim Taymans + + * gst/rtsp/URLS: + Add example H264 rtsp url. + + * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_media_to_caps), + (gst_rtspsrc_handle_message), (gst_rtspsrc_change_state): + Don't convert values to lowercase or we might mess up base64 encoded + properties. + 2007-02-16 Wim Taymans * gst/rtp/README: diff --git a/gst/rtsp/URLS b/gst/rtsp/URLS index 4c08f8040f..125943eb06 100644 --- a/gst/rtsp/URLS +++ b/gst/rtsp/URLS @@ -13,6 +13,7 @@ ASF (audio/video): MP4V-ES/mpeg4-generic(ACC): rtsp://vod.nwec.jp/quicktime/505.mov rtsp://203.140.68.241:554/hirakataeizou9.mp4 + rtsp://kmdi.utoronto.ca:555/osconf/2004_may9.1.mp4 REAL: rtsp://213.254.239.61/farm/*/encoder/tagesschau/live1high.rm diff --git a/gst/rtsp/gstrtspsrc.c b/gst/rtsp/gstrtspsrc.c index 6870c2f2e3..ffbf005e5a 100644 --- a/gst/rtsp/gstrtspsrc.c +++ b/gst/rtsp/gstrtspsrc.c @@ -610,7 +610,7 @@ gst_rtspsrc_media_to_caps (gint pt, SDPMedia * media) gchar *name = NULL; gint rate = -1; gchar *params = NULL; - gchar *tmp1, *tmp2; + gchar *tmp; GstStructure *s; /* dynamic payloads need rtpmap */ @@ -636,25 +636,27 @@ gst_rtspsrc_media_to_caps (gint pt, SDPMedia * media) goto no_rtpmap; } - tmp1 = g_ascii_strdown (media->media, -1); + tmp = g_ascii_strdown (media->media, -1); caps = gst_caps_new_simple ("application/x-unknown", - "media", G_TYPE_STRING, tmp1, "payload", G_TYPE_INT, pt, NULL); - g_free (tmp1); + "media", G_TYPE_STRING, tmp, "payload", G_TYPE_INT, pt, NULL); + g_free (tmp); s = gst_caps_get_structure (caps, 0); if (rate != -1) gst_structure_set (s, "clock-rate", G_TYPE_INT, rate, NULL); + /* encoding name must be upper case */ if (name != NULL) { - tmp1 = g_ascii_strup (name, -1); - gst_structure_set (s, "encoding-name", G_TYPE_STRING, tmp1, NULL); - g_free (tmp1); + tmp = g_ascii_strup (name, -1); + gst_structure_set (s, "encoding-name", G_TYPE_STRING, tmp, NULL); + g_free (tmp); } + /* params must be lower case */ if (params != NULL) { - tmp1 = g_ascii_strdown (params, -1); - gst_structure_set (s, "encoding-params", G_TYPE_STRING, tmp1, NULL); - g_free (tmp1); + tmp = g_ascii_strdown (params, -1); + gst_structure_set (s, "encoding-params", G_TYPE_STRING, tmp, NULL); + g_free (tmp); } /* parse optional fmtp: field */ @@ -687,13 +689,11 @@ gst_rtspsrc_media_to_caps (gint pt, SDPMedia * media) /* simple ;.. is translated into =1;... */ val = "1"; } - /* strip the key of spaces */ + /* strip the key of spaces, convert key to lowercase but not the value. */ key = g_strstrip (pairs[i]); - tmp1 = g_ascii_strdown (key, -1); - tmp2 = g_ascii_strdown (val, -1); - gst_structure_set (s, tmp1, G_TYPE_STRING, tmp2, NULL); - g_free (tmp1); - g_free (tmp2); + tmp = g_ascii_strdown (key, -1); + gst_structure_set (s, tmp, G_TYPE_STRING, val, NULL); + g_free (tmp); } g_strfreev (pairs); } @@ -2422,11 +2422,19 @@ gst_rtspsrc_handle_message (GstBin * bin, GstMessage * message) gst_rtspsrc_loop_send_cmd (rtspsrc, CMD_RECONNECT); return; } - } - /* Fallthrough */ - default: GST_BIN_CLASS (parent_class)->handle_message (bin, message); break; + } + case GST_MESSAGE_ERROR: + { + GST_BIN_CLASS (parent_class)->handle_message (bin, message); + break; + } + default: + { + GST_BIN_CLASS (parent_class)->handle_message (bin, message); + break; + } } } @@ -2448,7 +2456,6 @@ gst_rtspsrc_change_state (GstElement * element, GstStateChange transition) break; case GST_STATE_CHANGE_PAUSED_TO_PLAYING: rtsp_connection_flush (rtspsrc->connection, FALSE); - /* copy configuerd protocols */ gst_rtspsrc_play (rtspsrc); break; case GST_STATE_CHANGE_PLAYING_TO_PAUSED: