[gst-cvs] gst-plugins-ugly: realrtsp: add more headers
Wim Taymans
wtay at kemper.freedesktop.org
Wed Mar 25 08:39:55 PDT 2009
Module: gst-plugins-ugly
Branch: master
Commit: 1731c58b9b7d021683bfc18a8dfbcc10b152e5e7
URL: http://cgit.freedesktop.org/gstreamer/gst-plugins-ugly/commit/?id=1731c58b9b7d021683bfc18a8dfbcc10b152e5e7
Author: Wim Taymans <wim.taymans at collabora.co.uk>
Date: Wed Mar 25 16:39:06 2009 +0100
realrtsp: add more headers
Parse the ETag from the describe method and pass the sessionid as the value for
the If-Match header is subsequent setup calls.
Fixes support for more RealMedia RTSP streams.
---
gst/realmedia/rtspreal.c | 16 ++++++++++++++++
gst/realmedia/rtspreal.h | 1 +
2 files changed, 17 insertions(+), 0 deletions(-)
diff --git a/gst/realmedia/rtspreal.c b/gst/realmedia/rtspreal.c
index 9de00a9..9b5228f 100644
--- a/gst/realmedia/rtspreal.c
+++ b/gst/realmedia/rtspreal.c
@@ -127,6 +127,8 @@ rtsp_ext_real_before_send (GstRTSPExtension * ext, GstRTSPMessage * request)
"Linux_2.4_6.0.9.1235_play32_RN01_EN_586");
gst_rtsp_message_add_header (request, GST_RTSP_HDR_MAX_ASM_WIDTH, "1");
gst_rtsp_message_add_header (request, GST_RTSP_HDR_LANGUAGE, "en-US");
+ gst_rtsp_message_add_header (request, GST_RTSP_HDR_REQUIRE,
+ "com.real.retain-entity-for-setup");
break;
}
case GST_RTSP_SETUP:
@@ -136,6 +138,7 @@ rtsp_ext_real_before_send (GstRTSPExtension * ext, GstRTSPMessage * request)
g_strdup_printf ("%s, sd=%s", ctx->challenge2, ctx->checksum);
gst_rtsp_message_add_header (request, GST_RTSP_HDR_REAL_CHALLENGE2,
value);
+ gst_rtsp_message_add_header (request, GST_RTSP_HDR_IF_MATCH, ctx->etag);
g_free (value);
}
break;
@@ -169,6 +172,19 @@ rtsp_ext_real_after_send (GstRTSPExtension * ext, GstRTSPMessage * req,
ctx->checksum, challenge1);
break;
}
+ case GST_RTSP_DESCRIBE:
+ {
+ gchar *etag = NULL;
+ guint len;
+
+ gst_rtsp_message_get_header (resp, GST_RTSP_HDR_ETAG, &etag, 0);
+ if (etag) {
+ len = sizeof (ctx->etag);
+ strncpy (ctx->etag, etag, len);
+ ctx->etag[len - 1] = '\0';
+ }
+ break;
+ }
default:
break;
}
diff --git a/gst/realmedia/rtspreal.h b/gst/realmedia/rtspreal.h
index 9f7dc42..6605f14 100644
--- a/gst/realmedia/rtspreal.h
+++ b/gst/realmedia/rtspreal.h
@@ -64,6 +64,7 @@ struct _GstRTSPReal {
gchar checksum[34];
gchar challenge2[64];
+ gchar etag[64];
gboolean isreal;
guint n_streams;
More information about the Gstreamer-commits
mailing list