version = get_option('version')
+config_data = configuration_data()
+
+audio_effect_include_dir = include_directories('./include')
+audio_effect_plugins_install_dir = join_paths(get_option('libdir'), 'audio-effect-plugins/')
+
platform_dep = []
+config_data.set_quoted('DL_PLUGIN_PATH', '')
if get_option('tizen').enabled()
add_global_arguments('-DUSE_DLOG', language : 'c')
add_global_arguments('-DUSE_DLOG', language : 'cpp')
platform_dep += [ dependency('dlog') ]
+ config_data.set_quoted('DL_PLUGIN_PATH', join_paths('/', audio_effect_plugins_install_dir))
endif
-audio_effect_include_dir = include_directories('./include')
-audio_effect_plugins_install_dir = get_option('libdir')/'audio-effect-plugins/'
-
-config_data = configuration_data()
-config_data.set_quoted('DL_PLUGIN_PATH', audio_effect_plugins_install_dir)
configure_file(output : 'config.h', configuration : config_data)
# It can't find dl library that's why i replaced with cc
link_with: [audio_effect_shared],
install: true,
install_dir: audio_effect_plugins_install_dir,
+ cpp_args: '-fno-gnu-unique',
)
endif
audio_effect_plugin_info_s *plugin_info;
} plugin_list[AUDIO_EFFECT_METHOD_MAX];
+static const char *get_plugin_name(const char *name)
+{
+ assert(name);
+ return name + strlen(DL_PLUGIN_PATH);
+}
+
audio_effect_interface_s *audio_effect_interface_new(audio_effect_method_e method,
int rate, int channels,
audio_effect_format_e format,
assert(method < AUDIO_EFFECT_METHOD_MAX);
+ LOG_INFO("Trying to create the plugin %s. plugin_info(%p), refcnt(%d)",
+ get_plugin_name(effect_path_list[method]), plugin_list[method].plugin_info, plugin_list[method].refcnt);
+
if (!plugin_list[method].plugin_info && plugin_list[method].refcnt == 0) {
handle = dlopen(effect_path_list[method], RTLD_LAZY);
if (!handle) {
- LOG_INFO("Failed to open handle. path(%s)", effect_path_list[method]);
+ LOG_INFO("Failed to open handle. path(%s) dlerror(%s)", get_plugin_name(effect_path_list[method]), dlerror());
return NULL;
}
- LOG_INFO("loaded module %s", effect_path_list[method]);
}
plugin_info = plugin_list[method].plugin_info;
/* TODO handle lock */
plugin_list[method].refcnt += 1;
+ LOG_INFO("plugin(%s) was created successfully. handle(%p) ref(%d)",
+ get_plugin_name(effect_path_list[method]), plugin_list[method].handle, plugin_list[method].refcnt);
+
return &plugin_info->interface;
fail:
if (handle)
dlclose(handle);
+ plugin_list[method].plugin_info = NULL;
+
return NULL;
}
plugin_list[intf->method].refcnt -= 1;
if (plugin_list[intf->method].refcnt == 0) {
- LOG_INFO("unloaded module %s", effect_path_list[intf->method]);
- dlclose(plugin_list[intf->method].handle);
+ int ret;
+ LOG_INFO("unloading the plugin. (%s). handle(%p)",
+ get_plugin_name(effect_path_list[intf->method]), plugin_list[intf->method].handle);
+
+ if ((ret = dlclose(plugin_list[intf->method].handle)) != 0)
+ LOG_ERROR("Failed to close plugin. ret(%d), dlerror(%s)", ret, dlerror());
}
}
method = plugin_info->interface.method;
plugin_list[method].plugin_info = plugin_info;
+
+ LOG_INFO("loaded the plugin. effect_path(%s)", effect_path_list[method]);
}
void audio_effect_unregister_module(audio_effect_plugin_info_s *plugin_info)
plugin_list[method].handle = NULL;
plugin_list[method].refcnt = 0;
plugin_list[method].plugin_info = NULL;
+
+ LOG_INFO("unloaded the plugin. effect_path(%s)", effect_path_list[method]);
}