(Audio DSP) Make it no longer dependent on HAVE_DYLIB being

defined
This commit is contained in:
twinaphex 2014-04-28 06:45:50 +02:00
parent 8a77674efc
commit 6f13028aba
4 changed files with 16 additions and 21 deletions

View File

@ -966,14 +966,16 @@ void uninit_drivers(void)
driver.input_data_own = false;
}
#ifdef HAVE_DYLIB
void rarch_init_dsp_filter(void)
{
const rarch_dsp_plugin_t* (RARCH_API_CALLTYPE *plugin_init)(void);
if (!(*g_settings.audio.dsp_plugin))
return;
rarch_dsp_info_t info = {0};
plugin_init = NULL;
#ifdef HAVE_DYLIB
g_extern.audio_data.dsp_lib = dylib_load(g_settings.audio.dsp_plugin);
if (!g_extern.audio_data.dsp_lib)
{
@ -981,8 +983,8 @@ void rarch_init_dsp_filter(void)
return;
}
const rarch_dsp_plugin_t* (RARCH_API_CALLTYPE *plugin_init)(void) =
(const rarch_dsp_plugin_t *(RARCH_API_CALLTYPE*)(void))dylib_proc(g_extern.audio_data.dsp_lib, "rarch_dsp_plugin_init");
plugin_init = (const rarch_dsp_plugin_t *(RARCH_API_CALLTYPE*)(void))dylib_proc(g_extern.audio_data.dsp_lib, "rarch_dsp_plugin_init");
#endif
if (!plugin_init)
{
@ -1017,22 +1019,25 @@ void rarch_init_dsp_filter(void)
return;
error:
#ifdef HAVE_DYLIB
if (g_extern.audio_data.dsp_lib)
dylib_close(g_extern.audio_data.dsp_lib);
g_extern.audio_data.dsp_plugin = NULL;
g_extern.audio_data.dsp_lib = NULL;
#endif
g_extern.audio_data.dsp_plugin = NULL;
}
void rarch_deinit_dsp_filter(void)
{
if (g_extern.audio_data.dsp_plugin && g_extern.audio_data.dsp_plugin->free)
g_extern.audio_data.dsp_plugin->free(g_extern.audio_data.dsp_handle);
#ifdef HAVE_DYLIB
if (g_extern.audio_data.dsp_lib)
dylib_close(g_extern.audio_data.dsp_lib);
#endif
g_extern.audio_data.dsp_handle = NULL;
g_extern.audio_data.dsp_plugin = NULL;
}
#endif
void init_audio(void)
{

View File

@ -584,9 +584,10 @@ float driver_sensor_get_input(unsigned port, unsigned action);
#ifdef HAVE_DYLIB
void rarch_deinit_filter(void);
void rarch_init_filter(enum retro_pixel_format);
#endif
void rarch_init_dsp_filter(void);
void rarch_deinit_dsp_filter(void);
#endif
// Used by RETRO_ENVIRONMENT_GET_CAMERA_INTERFACE
#ifdef HAVE_CAMERA

View File

@ -337,9 +337,7 @@ static void menu_common_entries_init(void *data, unsigned menu_type)
break;
case RGUI_SETTINGS_AUDIO_OPTIONS:
file_list_clear(rgui->selection_buf);
#ifdef HAVE_DYLIB
file_list_push(rgui->selection_buf, "DSP Filter", RGUI_SETTINGS_AUDIO_DSP_FILTER, 0);
#endif
file_list_push(rgui->selection_buf, "Mute Audio", RGUI_SETTINGS_AUDIO_MUTE, 0);
file_list_push(rgui->selection_buf, "Rate Control Delta", RGUI_SETTINGS_AUDIO_CONTROL_RATE_DELTA, 0);
#ifdef __CELLOS_LV2__
@ -1457,11 +1455,11 @@ static int menu_common_iterate(void *data, unsigned action)
}
else if (menu_type == RGUI_SETTINGS_AUDIO_DSP_FILTER)
{
fill_pathname_join(g_settings.audio.dsp_plugin, dir, path, sizeof(g_settings.audio.dsp_plugin));
#ifdef HAVE_DYLIB
fill_pathname_join(g_settings.audio.dsp_plugin, dir, path, sizeof(g_settings.audio.dsp_plugin));
#endif
rarch_deinit_dsp_filter();
rarch_init_dsp_filter();
#endif
menu_flush_stack_type(rgui, RGUI_SETTINGS_AUDIO_OPTIONS);
}
else if (menu_type == RGUI_SAVESTATE_DIR_PATH)
@ -2531,11 +2529,11 @@ static int menu_common_setting_set(void *data, unsigned setting, unsigned action
rgui->need_refresh = true;
break;
case RGUI_ACTION_START:
strlcpy(g_settings.audio.dsp_plugin, "", sizeof(g_settings.audio.dsp_plugin));
#ifdef HAVE_DYLIB
strlcpy(g_settings.audio.dsp_plugin, "", sizeof(g_settings.audio.dsp_plugin));
#endif
rarch_deinit_dsp_filter();
rarch_init_dsp_filter();
#endif
break;
}
break;

View File

@ -386,7 +386,6 @@ static bool audio_flush(const int16_t *data, size_t samples)
g_extern.audio_data.volume_gain);
RARCH_PERFORMANCE_STOP(audio_convert_s16);
#if defined(HAVE_DYLIB)
rarch_dsp_output_t dsp_output = {0};
rarch_dsp_input_t dsp_input = {0};
dsp_input.samples = g_extern.audio_data.data;
@ -397,10 +396,6 @@ static bool audio_flush(const int16_t *data, size_t samples)
src_data.data_in = dsp_output.samples ? dsp_output.samples : g_extern.audio_data.data;
src_data.input_frames = dsp_output.samples ? dsp_output.frames : (samples >> 1);
#else
src_data.data_in = g_extern.audio_data.data;
src_data.input_frames = samples >> 1;
#endif
src_data.data_out = g_extern.audio_data.outsamples;
@ -2566,7 +2561,6 @@ static void check_screenshot(void)
}
#endif
#ifdef HAVE_DYLIB
static void check_dsp_config(void)
{
if (!g_extern.audio_data.dsp_plugin || !g_extern.audio_data.dsp_plugin->config)
@ -2579,7 +2573,6 @@ static void check_dsp_config(void)
old_pressed = pressed;
}
#endif
static void check_mute(void)
{
@ -2758,9 +2751,7 @@ static void do_state_checks(void)
check_cheats();
check_disk();
#ifdef HAVE_DYLIB
check_dsp_config();
#endif
check_reset();
#ifdef HAVE_NETPLAY
}