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)
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})
typedef struct {
char *ip;
char *port;
+ char *server_name;
bool use_hdcp;
int resolution;
/* To communicate with miracast server */
*/
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.
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);
}
#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;
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);
#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"
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)
{
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)
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");
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;
}
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
%{_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
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);
_scmirroring->channel = NULL;
_scmirroring->sock_path = NULL;
_scmirroring->current_state = SCMIRRORING_STATE_NONE;
+ _scmirroring->server_name = g_strdup("scmirroring");
*scmirroring = (scmirroring_src_h)_scmirroring;
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);