Add prepare/confirem resource vmethod to client-wfd 01/46301/1
authorHyunjun Ko <zzoon.ko@samsung.com>
Tue, 18 Aug 2015 05:37:11 +0000 (14:37 +0900)
committerSangkyu Park <sk1122.park@samsung.com>
Wed, 19 Aug 2015 05:10:09 +0000 (14:10 +0900)
Change-Id: Iac8f01a26f06ecd79268c2ba616faa30c45b9e03

gst/rtsp-server/rtsp-client-wfd.c
gst/rtsp-server/rtsp-client-wfd.h

index cbca991..bf87eb6 100644 (file)
@@ -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;
 }
 
index f34914b..25d96de 100644 (file)
@@ -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];