summaryrefslogtreecommitdiffstats
path: root/gst
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@gmail.com>2007-02-16 12:32:01 +0000
committerWim Taymans <wim.taymans@gmail.com>2007-02-16 12:32:01 +0000
commit7fd025043d321be2377ebe5f964cacabf17cb764 (patch)
tree078e8b4c86e573eb6ba679c2357569b08b54adde /gst
parentdc325990e0f8dabd7dee80cc158ea018a86be276 (diff)
gst/rtsp/URLS: Add example H264 rtsp url.
Original commit message from CVS: * 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.
Diffstat (limited to 'gst')
-rw-r--r--gst/rtsp/URLS1
-rw-r--r--gst/rtsp/gstrtspsrc.c43
2 files changed, 26 insertions, 18 deletions
diff --git a/gst/rtsp/URLS b/gst/rtsp/URLS
index 4c08f804..125943eb 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 6870c2f2..ffbf005e 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 <param>;.. is translated into <param>=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;
}
+ GST_BIN_CLASS (parent_class)->handle_message (bin, message);
+ break;
+ }
+ case GST_MESSAGE_ERROR:
+ {
+ GST_BIN_CLASS (parent_class)->handle_message (bin, message);
+ break;
}
- /* Fallthrough */
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: