Name: mused
Summary: A multimedia daemon
-Version: 0.3.102
+Version: 0.3.103
Release: 0
Group: System/Libraries
License: Apache-2.0
ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
ADD_DEFINITIONS("-DTIZEN_DEBUG")
-
+ADD_DEFINITIONS("-DLIBDIR=\"${LIBDIR}\"")
SET(CMAKE_EXE_LINKER_FLAGS "-Wl,-z,relro,--as-needed -pie")
#define MUSE_ON_DEMAND_LAUNCH "muse:on_demand"
#define MUSE_ON_DEMAND_MAX_IDLE_TIME "muse:on_demand_max_idle_time"
#define MUSE_ON_DEMAND_MAX_IDLE_MEMORY "muse:on_demand_max_idle_memory"
-#define MUSE_GST "muse:gstparam"
+#define MUSE_GST_PARAM "muse:gstparam"
+#define MUSE_GST_PRELOAD "muse:gstpreload"
#define INI_PARSER_COLON ":"
#define PATH "path"
#define PRELOADED "preloaded"
gboolean is_on_demand;
int max_idle_time;
int max_idle_memory;
+ char *gst_preload_plugins;
} ms_config_t;
void ms_config_init(ms_config_t *conf);
int ms_config_get_host_cnt(void);
int ms_config_get_gst_param_cnt(void);
char *ms_config_get_gst_param_str(int idx);
+char *ms_config_get_gst_preload_plugins(void);
char *ms_config_get_path(int idx);
char *ms_config_get_preloaded_value(int idx);
char *ms_config_get_lockfile(void);
pid_t ms_daemonize(int *notify_fd);
void ms_daemonize_complete(int notify_fd);
void ms_gst_init(char **cmd);
+void ms_gst_preload_plugin(void);
int ms_pidfile_create(const char *path, pid_t pid);
void ms_init(char **argv);
muse_server_h ms_get_instance(void);
MUSE_ON_DEMAND_MAX_IDLE_MEMORY, DEFAULT_ON_DEMAND_MAX_IDLE_MEMORY);
for (conf->gst_param_cnt = 0; conf->gst_param_cnt < MUSE_PARAM_MAX; conf->gst_param_cnt++) {
- memset(gst_param_key, 0, MUSE_MSG_LEN_MAX);
- snprintf(gst_param_key, MUSE_MSG_LEN_MAX, "%s%d", MUSE_GST, conf->gst_param_cnt + 1);
+ snprintf(gst_param_key, MUSE_MSG_LEN_MAX, "%s%d", MUSE_GST_PARAM, conf->gst_param_cnt + 1);
conf->gst_param_str[conf->gst_param_cnt] = _ms_config_get_str(conf->muse_dict, gst_param_key, NULL);
LOGD("gstparam%d: %s", conf->gst_param_cnt + 1, conf->gst_param_str[conf->gst_param_cnt]);
}
+ conf->gst_preload_plugins = _ms_config_get_str(conf->muse_dict, MUSE_GST_PRELOAD, NULL);
+
conf->host_cnt = 0;
host = strtok_r(hosts, INI_PARSER_COMMA, &ptr);
for (idx = 0; idx <= conf->gst_param_cnt; idx++)
MUSE_FREE(conf->gst_param_str[idx]);
+ MUSE_FREE(conf->gst_preload_plugins);
+
free(conf);
}
return conf->gst_param_str[idx];
}
+char *ms_config_get_gst_preload_plugins(void)
+{
+ ms_config_t *conf = _ms_config_get_instance();
+
+ muse_return_val_if_fail(conf, NULL);
+
+ return conf->gst_preload_plugins;
+}
+
char *ms_config_get_path(int idx)
{
char *path = NULL;
#endif
}
+void ms_gst_preload_plugin(void)
+{
+ char *token = NULL;
+ char *saveptr = NULL;
+ char plugin_path[128];
+ const char *delimeters = " ,";
+ gchar *gst_preload_plugins = g_strdup(ms_config_get_gst_preload_plugins());
+ GstPlugin *plugin = NULL;
+
+ muse_return_if_fail(gst_preload_plugins);
+
+ LOGI("preload plugins [%s]", gst_preload_plugins);
+
+ token = strtok_r(gst_preload_plugins, delimeters, &saveptr);
+ while (token) {
+ snprintf(plugin_path, sizeof(plugin_path), "%s/gstreamer-1.0/libgst%s.so", LIBDIR, token);
+
+ LOGI(" plugin path : %s", plugin_path);
+
+ plugin = gst_plugin_load_file(plugin_path, NULL);
+ if (plugin)
+ gst_object_unref(plugin);
+ else
+ LOGW("failed to load plugin [%s]", plugin_path);
+
+ token = strtok_r(NULL, delimeters, &saveptr);
+ }
+
+ g_free(gst_preload_plugins);
+
+ LOGI("Leave");
+}
+
int ms_pidfile_create(const char *path, pid_t pid)
{
int fd;
trace_end();
#endif
+#ifdef MUSE_TTRACE_LOG
+ trace_begin("MUSE:preloading GST module");
+#endif
+ ms_gst_preload_plugin();
+#ifdef MUSE_TTRACE_LOG
+ trace_end();
+#endif
+
LOGD("Leave");
}