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

View File

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

View File

@ -337,9 +337,7 @@ static void menu_common_entries_init(void *data, unsigned menu_type)
break; break;
case RGUI_SETTINGS_AUDIO_OPTIONS: case RGUI_SETTINGS_AUDIO_OPTIONS:
file_list_clear(rgui->selection_buf); file_list_clear(rgui->selection_buf);
#ifdef HAVE_DYLIB
file_list_push(rgui->selection_buf, "DSP Filter", RGUI_SETTINGS_AUDIO_DSP_FILTER, 0); 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, "Mute Audio", RGUI_SETTINGS_AUDIO_MUTE, 0);
file_list_push(rgui->selection_buf, "Rate Control Delta", RGUI_SETTINGS_AUDIO_CONTROL_RATE_DELTA, 0); file_list_push(rgui->selection_buf, "Rate Control Delta", RGUI_SETTINGS_AUDIO_CONTROL_RATE_DELTA, 0);
#ifdef __CELLOS_LV2__ #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) 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 #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_deinit_dsp_filter();
rarch_init_dsp_filter(); rarch_init_dsp_filter();
#endif
menu_flush_stack_type(rgui, RGUI_SETTINGS_AUDIO_OPTIONS); menu_flush_stack_type(rgui, RGUI_SETTINGS_AUDIO_OPTIONS);
} }
else if (menu_type == RGUI_SAVESTATE_DIR_PATH) 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; rgui->need_refresh = true;
break; break;
case RGUI_ACTION_START: case RGUI_ACTION_START:
strlcpy(g_settings.audio.dsp_plugin, "", sizeof(g_settings.audio.dsp_plugin));
#ifdef HAVE_DYLIB #ifdef HAVE_DYLIB
strlcpy(g_settings.audio.dsp_plugin, "", sizeof(g_settings.audio.dsp_plugin));
#endif
rarch_deinit_dsp_filter(); rarch_deinit_dsp_filter();
rarch_init_dsp_filter(); rarch_init_dsp_filter();
#endif
break; break;
} }
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); g_extern.audio_data.volume_gain);
RARCH_PERFORMANCE_STOP(audio_convert_s16); RARCH_PERFORMANCE_STOP(audio_convert_s16);
#if defined(HAVE_DYLIB)
rarch_dsp_output_t dsp_output = {0}; rarch_dsp_output_t dsp_output = {0};
rarch_dsp_input_t dsp_input = {0}; rarch_dsp_input_t dsp_input = {0};
dsp_input.samples = g_extern.audio_data.data; 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.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); 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; src_data.data_out = g_extern.audio_data.outsamples;
@ -2566,7 +2561,6 @@ static void check_screenshot(void)
} }
#endif #endif
#ifdef HAVE_DYLIB
static void check_dsp_config(void) static void check_dsp_config(void)
{ {
if (!g_extern.audio_data.dsp_plugin || !g_extern.audio_data.dsp_plugin->config) 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; old_pressed = pressed;
} }
#endif
static void check_mute(void) static void check_mute(void)
{ {
@ -2758,9 +2751,7 @@ static void do_state_checks(void)
check_cheats(); check_cheats();
check_disk(); check_disk();
#ifdef HAVE_DYLIB
check_dsp_config(); check_dsp_config();
#endif
check_reset(); check_reset();
#ifdef HAVE_NETPLAY #ifdef HAVE_NETPLAY
} }