From: Hyunjun Ko Date: Tue, 18 Aug 2015 05:37:11 +0000 (+0900) Subject: Add prepare/confirem resource vmethod to client-wfd X-Git-Tag: accepted/tizen/mobile/20150819.235550~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=eb3b5a5c593eb384258094c770a2393bb9a7b644;p=platform%2Fupstream%2Fgst-rtsp-server.git Add prepare/confirem resource vmethod to client-wfd Change-Id: Iac8f01a26f06ecd79268c2ba616faa30c45b9e03 --- diff --git a/gst/rtsp-server/rtsp-client-wfd.c b/gst/rtsp-server/rtsp-client-wfd.c index cbca991..bf87eb6 100644 --- a/gst/rtsp-server/rtsp-client-wfd.c +++ b/gst/rtsp-server/rtsp-client-wfd.c @@ -172,8 +172,8 @@ static void send_generic_wfd_response (GstRTSPWFDClient * client, GstRTSPStatusCode code, GstRTSPContext * ctx); static gchar *wfd_make_path_from_uri (GstRTSPClient * client, const GstRTSPUrl * uri); -static void wfd_options_request_done (GstRTSPWFDClient * client); -static void wfd_get_param_request_done (GstRTSPWFDClient * client); +static void wfd_options_request_done (GstRTSPWFDClient * client, GstRTSPContext *ctx); +static void wfd_get_param_request_done (GstRTSPWFDClient * client, GstRTSPContext *ctx); static void handle_wfd_response (GstRTSPClient * client, GstRTSPContext * ctx); static void handle_wfd_play (GstRTSPClient * client, GstRTSPContext * ctx); static void wfd_set_keep_alive_condition(GstRTSPWFDClient * client); @@ -236,13 +236,13 @@ gst_rtsp_wfd_client_class_init (GstRTSPWFDClientClass * klass) g_signal_new ("wfd-options-request", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstRTSPWFDClientClass, wfd_options_request), NULL, NULL, g_cclosure_marshal_VOID__POINTER, - G_TYPE_NONE, 1, G_TYPE_POINTER); + G_TYPE_NONE, 2, GST_TYPE_RTSP_WFD_CLIENT, GST_TYPE_RTSP_CONTEXT); gst_rtsp_client_wfd_signals[SIGNAL_WFD_GET_PARAMETER_REQUEST] = g_signal_new ("wfd-get-parameter-request", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstRTSPWFDClientClass, wfd_get_param_request), NULL, NULL, g_cclosure_marshal_VOID__POINTER, - G_TYPE_NONE, 1, G_TYPE_POINTER); + G_TYPE_NONE, 2, GST_TYPE_RTSP_WFD_CLIENT, GST_TYPE_RTSP_CONTEXT); klass->wfd_options_request = wfd_options_request_done; klass->wfd_get_param_request = wfd_get_param_request_done; @@ -448,9 +448,13 @@ wfd_configure_client_media (GstRTSPClient * client, GstRTSPMedia * media, return GST_RTSP_CLIENT_CLASS (gst_rtsp_wfd_client_parent_class)->configure_client_media (client, media, stream, ctx); } static void -wfd_options_request_done (GstRTSPWFDClient * client) +wfd_options_request_done (GstRTSPWFDClient * client, GstRTSPContext *ctx) { GstRTSPResult res = GST_RTSP_OK; + GstRTSPWFDClientClass *klass = GST_RTSP_WFD_CLIENT_GET_CLASS (client); + + g_return_if_fail (klass != NULL); + GST_INFO_OBJECT (client, "M2 done.."); res = handle_M3_message (client); @@ -458,16 +462,21 @@ wfd_options_request_done (GstRTSPWFDClient * client) GST_ERROR_OBJECT (client, "handle_M3_message failed : %d", res); } + if (klass->prepare_resource) { + klass->prepare_resource (client, ctx); + } + return; } static void -wfd_get_param_request_done (GstRTSPWFDClient * client) +wfd_get_param_request_done (GstRTSPWFDClient * client, GstRTSPContext *ctx) { GstRTSPResult res = GST_RTSP_OK; GstRTSPWFDClientPrivate *priv = GST_RTSP_WFD_CLIENT_GET_PRIVATE (client); + GstRTSPWFDClientClass *klass = GST_RTSP_WFD_CLIENT_GET_CLASS (client); - g_return_if_fail (priv != NULL); + g_return_if_fail (priv != NULL && klass != NULL); priv->m3_done = TRUE; GST_INFO_OBJECT (client, "M3 done.."); @@ -477,6 +486,10 @@ wfd_get_param_request_done (GstRTSPWFDClient * client) GST_ERROR_OBJECT (client, "handle_M4_message failed : %d", res); } + if (klass->confirm_resource) { + klass->confirm_resource (client, ctx); + } + return; } diff --git a/gst/rtsp-server/rtsp-client-wfd.h b/gst/rtsp-server/rtsp-client-wfd.h index f34914b..25d96de 100644 --- a/gst/rtsp-server/rtsp-client-wfd.h +++ b/gst/rtsp-server/rtsp-client-wfd.h @@ -105,9 +105,12 @@ struct _GstRTSPWFDClient { struct _GstRTSPWFDClientClass { GstRTSPClientClass parent_class; + GstRTSPResult (*prepare_resource) (GstRTSPWFDClient *client, GstRTSPContext *ctx); + GstRTSPResult (*confirm_resource) (GstRTSPWFDClient *client, GstRTSPContext *ctx); + /* signals */ - void (*wfd_options_request) (GstRTSPWFDClient *client); - void (*wfd_get_param_request) (GstRTSPWFDClient *client); + void (*wfd_options_request) (GstRTSPWFDClient *client, GstRTSPContext *ctx); + void (*wfd_get_param_request) (GstRTSPWFDClient *client, GstRTSPContext *ctx); /*< private >*/ gpointer _gst_reserved[GST_PADDING_LARGE];