Add new function to set server name and make setup function inheritable 39/49339/1
authorHyunjun Ko <zzoon.ko@samsung.com>
Tue, 13 Oct 2015 01:04:52 +0000 (10:04 +0900)
committerHyunjun Ko <zzoon.ko@samsung.com>
Tue, 13 Oct 2015 01:04:52 +0000 (10:04 +0900)
Change-Id: Id404924568c58dac50a09356854d0ca50a37a064

CMakeLists.txt
include/scmirroring_private.h
include/scmirroring_src.h
miracast_server/miracast_server.c
miracast_server/miracast_server.h
miracast_server/miracast_server_impl.c
packaging/capi-media-screen-mirroring.spec
src/scmirroring_src.c

index e25a424737d4499daed52e1ba896dd9984f9f716..4640a66edea33f2e7bc384f7a8aa9fbdd89cb443 100644 (file)
@@ -20,6 +20,8 @@ SET(VERSION ${version})
 
 SET(INC_DIR include)
 INCLUDE_DIRECTORIES(${INC_DIR})
+SET(INC_DIR1 miracast_server)
+INCLUDE_DIRECTORIES(${INC_DIR1})
 
 INCLUDE(FindPkgConfig)
 pkg_check_modules(${fw_name} REQUIRED ${dependents} capi-system-info)
@@ -59,6 +61,11 @@ INSTALL(
         PATTERN "*_private.h" EXCLUDE
         PATTERN "${INC_DIR}/*.h"
         )
+INSTALL(
+        DIRECTORY ${INC_DIR1}/ DESTINATION include/${service}
+        FILES_MATCHING
+        PATTERN "${INC_DIR1}/*.h"
+        )
 
 SET(PC_NAME ${fw_name})
 SET(PC_REQUIRED ${dependents})
index 36e24f4f3c4988000c020ad8d1b1a9da3c291e6c..6fa8549def0146af0907e4f038578579029ab3ac 100755 (executable)
@@ -113,6 +113,7 @@ typedef struct {
 typedef struct {
        char *ip;
        char *port;
+       char *server_name;
        bool use_hdcp;
        int resolution;
        /* To communicate with miracast server */
index 326a074df20f2ddca7a565745bbc7a9174005308..120256f0010645f4cdae8e1897e2993ada9f5aac 100755 (executable)
@@ -127,6 +127,26 @@ int scmirroring_src_set_ip_and_port(scmirroring_src_h scmirroring_src, const cha
  */
 int scmirroring_src_set_resolution(scmirroring_src_h scmirroring_src, scmirroring_resolution_e resolution);
 
+/**
+ * @brief Sets name of screen mirroring source server.
+ *
+ * @param[in] scmirroring_src The handle to screen mirroring source
+ * @param[in] name Name of screen mirroring source server
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ *
+ * @retval #SCMIRRORING_ERROR_NONE Successful
+ * @retval #SCMIRRORING_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SCMIRRORING_ERROR_OUT_OF_MEMORY Not enough memory is available
+ * @retval #SCMIRRORING_ERROR_INVALID_OPERATION Invalid operation
+ *
+ * @pre Create a screen mirroring source handle by calling scmirroring_src_create().
+ *
+ * @see scmirroring_src_create()
+ */
+int scmirroring_src_set_server_name(scmirroring_src_h scmirroring_src, const char *name);
+
 /**
  * @brief Connects to server for screen mirroring as source, asynchronously.
  * @details This function launches server and connects to the server for screen mirroring as source to command server to start/pause/resume/stop.
index f135e75239a28d0338b9e1436503240a64a819ff..8833cbf196cde33fe054a17b3b89db8ecb9e3495 100755 (executable)
@@ -34,26 +34,24 @@ int main(int argc, char *argv[])
 
        server = miracast_server_new();
        if (NULL == server) {
-               scmirroring_error("Unable to create miracast server object! Aborting rtsp server\n");
+               scmirroring_error("Unable to create miracast server object! Aborting miracast server");
                exit(-1);
        }
 
        mainloop = g_main_loop_new(NULL, FALSE);
        if (NULL == mainloop) {
-               scmirroring_error("Unable to create gmain loop! Aborting rtsp server\n");
+               scmirroring_error("Unable to create gmain loop! Aborting miracast server");
                exit(-1);
        }
 
        if (!miracast_server_setup(server, mainloop)) {
-               scmirroring_error("Unable to initialize test server\n");
+               scmirroring_error("Unable to initialize miracast server");
                exit(-1);
        }
 
-
-
-       scmirroring_debug("miracast server run loop \n");
+       scmirroring_debug("miracast server run loop");
        g_main_loop_run(mainloop);
 
-       scmirroring_debug("MIRACAST SERVER EXIT \n");
+       scmirroring_debug("MIRACAST SERVER EXIT");
        exit(0);
 }
index 9a657d84a8ac427bbe2239048947f17f111d7f34..f6291bf5e135d5c610f676b9c7094a627e33e992 100644 (file)
@@ -22,8 +22,7 @@
 #ifndef __MIRACAST_SERVER_H__
 #define __MIRACAST_SERVER_H__
 
-#include <gst/rtsp-server/rtsp-server-wfd.h>
-#include <gst/rtsp-server/rtsp-media-factory-wfd.h>
+#include <gst/gst.h>
 
 typedef struct _MiracastServer MiracastServer;
 typedef struct _MiracastServerClass MiracastServerClass;
@@ -61,8 +60,9 @@ struct _MiracastServerClass {
        int      (*send_response) (MiracastServer *server, const gchar *cmd);
        int      (*server_start)  (MiracastServer *server);
        void     (*quit_server)   (MiracastServer *server);
+       gboolean (*server_setup)  (MiracastServer *server);
 
-       gpointer _gst_reserved[GST_PADDING_LARGE];
+       gpointer _gst_reserved[GST_PADDING_LARGE - 1];
 };
 
 GType            miracast_server_get_type(void);
index 03e433958f267ecc240a156a8e2b31e730ba1ba6..f586a1fa115fd369971d89dc920dfda92071709b 100644 (file)
@@ -31,6 +31,9 @@
 #include "scmirroring_private.h"
 #include "scmirroring_src_ini.h"
 
+#include <gst/rtsp-server/rtsp-server-wfd.h>
+#include <gst/rtsp-server/rtsp-media-factory-wfd.h>
+
 #define MAX_CLIENT_CNT 1
 #define MAX_MSG_LEN 128
 #define MEDIA_IPC_PATH "/tmp/.miracast_ipc_rtspserver"
@@ -153,6 +156,7 @@ static void __miracast_server_interpret(MiracastServer *server, gchar *buf);
 static int __miracast_server_send_resp(MiracastServer *server, const gchar *cmd);
 static void __miracast_server_quit_program(MiracastServer *server);
 static int __miracast_server_start(MiracastServer *server_obj);
+static gboolean __miracast_server_setup(MiracastServer *server_obj);
 
 static void miracast_server_init(MiracastServer *obj)
 {
@@ -179,6 +183,7 @@ static void miracast_server_class_init(MiracastServerClass *klass)
        klass->send_response = __miracast_server_send_resp;
        klass->quit_server = __miracast_server_quit_program;
        klass->server_start = __miracast_server_start;
+       klass->server_setup = __miracast_server_setup;
 }
 
 int __miracast_server_send_resp(MiracastServer *server, const gchar *cmd)
@@ -325,7 +330,7 @@ static void __miracast_server_set_signal()
        sigaction(SIGSYS, &act_new, NULL);
 }
 
-static bool __miracast_server_setup(MiracastServer* server)
+static gboolean __miracast_server_setup(MiracastServer* server)
 {
        scmirroring_debug("__miracast_server_setup start\n");
 
@@ -918,12 +923,19 @@ miracast_server_setup(MiracastServer *server, GMainLoop *mainloop)
        GSource *source = NULL;
        GIOChannel *channel = NULL;
        GMainContext *context = NULL;
+       MiracastServerClass *klass = NULL;
 
 #if !GLIB_CHECK_VERSION(2, 35, 0)
        g_type_init();
 #endif
 
-       if (!__miracast_server_setup(server)) {
+       klass = MIRACAST_SERVER_GET_CLASS(server);
+       if (klass == NULL) {
+               scmirroring_error("Unable to get miracast server class");
+               return FALSE;
+       }
+
+       if (!klass->server_setup(server)) {
                scmirroring_error("Unable to initialize test server\n");
                return FALSE;
        }
index 98ee2fd2166838f3b7681ec682433a496e741ccd..a10c632fdc8f8d9e530290f90aefc29f8e362689 100755 (executable)
@@ -1,6 +1,6 @@
 Name:       capi-media-screen-mirroring
 Summary:    A screen mirroring library in Tizen C API
-Version:    0.1.42
+Version:    0.1.43
 Release:    0
 Group:      Multimedia/API
 License:    Apache-2.0
@@ -86,6 +86,7 @@ cp -rf config/scmirroring_src.ini %{buildroot}/usr/etc/scmirroring_src.ini
 %{_includedir}/media/scmirroring_type.h
 %{_includedir}/media/scmirroring_src_ini.h
 %{_includedir}/media/scmirroring_internal.h
+%{_includedir}/media/miracast_server.h
 %{_libdir}/pkgconfig/*.pc
 %{_libdir}/libcapi-media-screen-mirroring.so
 %{_libdir}/libmiracast_server_lib.so
index c78b217aa69ea62e35ab9c748dcfd9b0b290ed91..1f43279f874eca0198d9a155f1ad6e05bce36b36 100755 (executable)
@@ -106,14 +106,34 @@ static int __miracast_server_launch(scmirroring_src_s *scmirroring)
                return SCMIRRORING_ERROR_INVALID_OPERATION;
        }
 
+       gchar *name = NULL;
+       gchar *if_name = NULL;
+       gchar *obj_path = NULL;
+
+       if (scmirroring->server_name) {
+               name = g_strdup_printf("org.tizen.%s.server", scmirroring->server_name);
+               if_name = g_strdup_printf("org.tizen.%s.server", scmirroring->server_name);
+               obj_path = g_strdup_printf("/org/tizen/%s/server", scmirroring->server_name);
+       } else {
+               name = g_strdup("org.tizen.scmirroring.server");
+               if_name = g_strdup("org.tizen.scmirroring.server");
+               obj_path = g_strdup("/org/tizen/scmirroring/server");
+       }
+
+       scmirroring_debug ("Server Name : %s", name);
+
        proxy = g_dbus_proxy_new_sync(conn,
                                      G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES | G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS,
                                      NULL,
-                                     "org.tizen.scmirroring.server",
-                                     "/org/tizen/scmirroring/server",
-                                     "org.tizen.scmirroring.server",
+                                     name,
+                                     obj_path,
+                                     if_name,
                                      NULL,
                                      &error);
+       g_free(name);
+       g_free(if_name);
+       g_free(obj_path);
+
        if (error) {
                scmirroring_error("g_dbus_proxy_new_sync failed : %s", error->message);
                g_error_free(error);
@@ -349,6 +369,7 @@ int scmirroring_src_create(scmirroring_src_h *scmirroring)
        _scmirroring->channel = NULL;
        _scmirroring->sock_path = NULL;
        _scmirroring->current_state = SCMIRRORING_STATE_NONE;
+       _scmirroring->server_name = g_strdup("scmirroring");
 
        *scmirroring = (scmirroring_src_h)_scmirroring;
 
@@ -496,6 +517,26 @@ int scmirroring_src_set_resolution(scmirroring_src_h scmirroring, scmirroring_re
        return ret;
 }
 
+int scmirroring_src_set_server_name(scmirroring_src_h scmirroring, const char *name)
+{
+       CHECK_FEATURE_SUPPORTED(WIFIDIRECT_DISPLAY_FEATURE);
+
+       int ret = SCMIRRORING_ERROR_NONE;
+
+       scmirroring_src_s *_scmirroring = (scmirroring_src_s *)scmirroring;
+
+       scmirroring_debug_fenter();
+
+       scmirroring_retvm_if(_scmirroring == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "Handle is NULL");
+
+       if (_scmirroring->server_name) g_free(_scmirroring->server_name);
+       _scmirroring->server_name = g_strdup(name);
+
+       scmirroring_debug_fleave();
+
+       return ret;
+}
+
 int scmirroring_src_connect(scmirroring_src_h scmirroring)
 {
        CHECK_FEATURE_SUPPORTED(WIFIDIRECT_DISPLAY_FEATURE);