mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 20:21:24 +00:00
rtspwms: reply to extension commands
Reply with OK to the extension commands for WMS.
This commit is contained in:
parent
4203f7189c
commit
ef31993f34
1 changed files with 51 additions and 0 deletions
|
@ -44,6 +44,7 @@ GST_ELEMENT_DETAILS ("WMS RTSP Extension",
|
||||||
|
|
||||||
#define SERVER_PREFIX "WMServer/"
|
#define SERVER_PREFIX "WMServer/"
|
||||||
#define HEADER_PREFIX "data:application/vnd.ms.wms-hdr.asfv1;base64,"
|
#define HEADER_PREFIX "data:application/vnd.ms.wms-hdr.asfv1;base64,"
|
||||||
|
#define EXTENSION_CMD "application/x-wms-extension-cmd"
|
||||||
|
|
||||||
static GstRTSPResult
|
static GstRTSPResult
|
||||||
gst_rtsp_wms_before_send (GstRTSPExtension * ext, GstRTSPMessage * request)
|
gst_rtsp_wms_before_send (GstRTSPExtension * ext, GstRTSPMessage * request)
|
||||||
|
@ -158,6 +159,55 @@ gst_rtsp_wms_configure_stream (GstRTSPExtension * ext, GstCaps * caps)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static GstRTSPResult
|
||||||
|
gst_rtsp_wms_receive_request (GstRTSPExtension * ext, GstRTSPMessage * request)
|
||||||
|
{
|
||||||
|
GstRTSPWMS *ctx;
|
||||||
|
GstRTSPResult res = GST_RTSP_ENOTIMPL;
|
||||||
|
GstRTSPMessage response = { 0 };
|
||||||
|
|
||||||
|
ctx = (GstRTSPWMS *) ext;
|
||||||
|
|
||||||
|
GST_DEBUG_OBJECT (ext, "before send");
|
||||||
|
|
||||||
|
switch (request->type_data.request.method) {
|
||||||
|
case GST_RTSP_SET_PARAMETER:
|
||||||
|
{
|
||||||
|
gchar *content_type = NULL;
|
||||||
|
|
||||||
|
gst_rtsp_message_get_header (request, GST_RTSP_HDR_CONTENT_TYPE,
|
||||||
|
&content_type, 0);
|
||||||
|
|
||||||
|
if (content_type && g_ascii_strcasecmp (content_type, EXTENSION_CMD)) {
|
||||||
|
/* parse the command */
|
||||||
|
|
||||||
|
/* default implementation, send OK */
|
||||||
|
res = gst_rtsp_message_init_response (&response, GST_RTSP_STS_OK, "OK",
|
||||||
|
request);
|
||||||
|
if (res < 0)
|
||||||
|
goto send_error;
|
||||||
|
|
||||||
|
GST_DEBUG_OBJECT (ctx, "replying with OK");
|
||||||
|
|
||||||
|
/* send reply */
|
||||||
|
if ((res = gst_rtsp_extension_send (ext, request, &response)) < 0)
|
||||||
|
goto send_error;
|
||||||
|
|
||||||
|
res = GST_RTSP_EEOF;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
|
||||||
|
send_error:
|
||||||
|
{
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void gst_rtsp_wms_finalize (GObject * object);
|
static void gst_rtsp_wms_finalize (GObject * object);
|
||||||
|
|
||||||
static GstStateChangeReturn gst_rtsp_wms_change_state (GstElement * element,
|
static GstStateChangeReturn gst_rtsp_wms_change_state (GstElement * element,
|
||||||
|
@ -245,4 +295,5 @@ gst_rtsp_wms_extension_init (gpointer g_iface, gpointer iface_data)
|
||||||
iface->before_send = gst_rtsp_wms_before_send;
|
iface->before_send = gst_rtsp_wms_before_send;
|
||||||
iface->after_send = gst_rtsp_wms_after_send;
|
iface->after_send = gst_rtsp_wms_after_send;
|
||||||
iface->configure_stream = gst_rtsp_wms_configure_stream;
|
iface->configure_stream = gst_rtsp_wms_configure_stream;
|
||||||
|
iface->receive_request = gst_rtsp_wms_receive_request;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue