!g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_FLIP) ||
!g_strcmp0(param->param_name, MEDIA_STREAMER_PARAM_DISPLAY_GEOMETRY_METHOD)) {
string_val = g_strdup_printf("%d", g_value_get_enum(&value));
+ } else {
+ ms_error("should not be reached here, could not find the param name[%s] of the node[%s]", param->param_name, node->name);
+ ret = MEDIA_STREAMER_ERROR_INVALID_OPERATION;
+ goto end;
}
- *string_value = strdup(string_val);
+ *string_value = string_val ? strdup(string_val) : NULL;
g_free(string_val);
+end:
g_value_reset(&value);
g_value_unset(&value);
{MEDIA_FORMAT_MAX, NULL}
};
+static dictionary *g_ini_instance = NULL;
+
static dictionary *__ms_get_ini_instance(void)
{
- static dictionary *instance = NULL;
- dictionary *ms_dict = NULL;
-
- ms_debug_fenter();
-
- if (!instance) {
- /* loading existing ini file */
- ms_dict = iniparser_load(MEDIA_STREAMER_INI_PATH);
-
- if (!ms_dict)
+ if (!g_ini_instance) {
+ g_ini_instance = iniparser_load(MEDIA_STREAMER_INI_PATH);
+ if (!g_ini_instance)
ms_warning("Could not open ini [%s]. Media-streamer will use default values.", MEDIA_STREAMER_INI_PATH);
else
- ms_debug("Open ini file [%s].", MEDIA_STREAMER_INI_PATH);
- instance = ms_dict;
+ ms_debug("Open ini file [%s], instance[%p]", MEDIA_STREAMER_INI_PATH, g_ini_instance);
}
- ms_debug_fleave();
+ return g_ini_instance;
+}
- return instance;
+static void __ms_free_ini_instance(void)
+{
+ if (g_ini_instance) {
+ iniparser_freedict(g_ini_instance);
+ ms_debug("ini instance[%p] is freed", g_ini_instance);
+ g_ini_instance = NULL;
+ }
}
gchar *ms_ini_get_string(const char *ini_path, const char *default_str)
void ms_load_ini_settings(media_streamer_ini_t *ini)
{
- ms_debug_fenter();
-
- /* get ini values */
memset(ini, 0, sizeof(media_streamer_ini_t));
if (__ms_get_ini_instance()) {
- /* general */
ini->generate_dot = iniparser_getboolean(__ms_get_ini_instance(), "general:generate dot", DEFAULT_GENERATE_DOT);
if (ini->generate_dot == TRUE) {
const gchar *dot_path = iniparser_getstring(__ms_get_ini_instance(), "general:dot dir", MEDIA_STREAMER_DEFAULT_DOT_DIR);
/* Read gstreamer arguments list */
ms_ini_read_list("general:gstreamer arguments", &ini->gst_args);
+ __ms_free_ini_instance();
} else {
/* if dict is not available just fill the structure with default values */
ini->generate_dot = DEFAULT_GENERATE_DOT;
ini->use_decodebin = DEFAULT_USE_DECODEBIN;
}
- /* general */
+ /* TODO: dump all ini settings */
ms_debug("Media Streamer param [generate_dot] : %d", ini->generate_dot);
ms_debug("Media Streamer param [use_decodebin] : %d", ini->use_decodebin);
-
- ms_debug_fleave();
-
}
void ms_unload_ini_settings(media_streamer_ini_t *ini)
{
- dictionary *dict;
-
ms_retm_if(!ini, "ini is null");
/* Clean up exclude elements list */
/* Clean up gstreamer arguments list */
g_strfreev(ini->gst_args);
-
- if ((dict = __ms_get_ini_instance()))
- iniparser_freedict(dict);
}
static const gchar *__ms_find_item(const format_s table[], media_format_mimetype_e mime)