diff --git a/audio/drivers/alsa_qsa.c b/audio/drivers/alsa_qsa.c index 6fb522bbde..e0e8f22ef7 100644 --- a/audio/drivers/alsa_qsa.c +++ b/audio/drivers/alsa_qsa.c @@ -52,16 +52,15 @@ static void *alsa_qsa_init(const char *device, snd_pcm_channel_params_t params = {0}; snd_pcm_channel_info_t pi; snd_pcm_channel_setup_t setup = {0}; - alsa_t *alsa; + settings_t *settings = config_get_ptr(); + alsa_t *alsa = (alsa_t*)calloc(1, sizeof(alsa_t)); + if (!alsa) + return NULL; (void)device; (void)rate; (void)latency; - alsa = (alsa_t*)calloc(1, sizeof(alsa_t)); - if (!alsa) - return NULL; - if ((err = snd_pcm_open_preferred(&alsa->pcm, &card, &dev, SND_PCM_OPEN_PLAYBACK)) < 0) { @@ -123,8 +122,8 @@ static void *alsa_qsa_init(const char *device, goto error; } - if (g_settings.audio.block_frames) - alsa->buf_size = g_settings.audio.block_frames * 4; + if (settings->audio.block_frames) + alsa->buf_size = settings->audio.block_frames * 4; else alsa->buf_size = next_pow2(32 * latency); diff --git a/audio/drivers/coreaudio.c b/audio/drivers/coreaudio.c index 23cb5eb5a5..3debd7ce02 100644 --- a/audio/drivers/coreaudio.c +++ b/audio/drivers/coreaudio.c @@ -196,6 +196,7 @@ static void *coreaudio_init(const char *device, AudioStreamBasicDescription stream_desc = {0}; static bool session_initialized = false; coreaudio_t *dev = NULL; + settings_t *settings = config_get_ptr(); #ifdef OSX_PPC ComponentDescription desc = {0}; #else @@ -300,7 +301,7 @@ static void *coreaudio_init(const char *device, RARCH_LOG("[CoreAudio]: Using output sample rate of %.1f Hz\n", (float)real_desc.mSampleRate); - g_settings.audio.out_rate = real_desc.mSampleRate; + settings->audio.out_rate = real_desc.mSampleRate; /* Set channel layout (fails on iOS). */ #ifndef IOS @@ -321,7 +322,7 @@ static void *coreaudio_init(const char *device, if (AudioUnitInitialize(dev->dev) != noErr) goto error; - fifo_size = (latency * g_settings.audio.out_rate) / 1000; + fifo_size = (latency * settings->audio.out_rate) / 1000; fifo_size *= 2 * sizeof(float); dev->buffer_size = fifo_size; diff --git a/audio/drivers/gx_audio.c b/audio/drivers/gx_audio.c index 07f3453b8c..35606cdbb3 100644 --- a/audio/drivers/gx_audio.c +++ b/audio/drivers/gx_audio.c @@ -83,7 +83,8 @@ static void dma_callback(void) static void *gx_audio_init(const char *device, unsigned rate, unsigned latency) { - gx_audio_t *wa = (gx_audio_t*)memalign(32, sizeof(*wa)); + settings_t *settings = config_get_ptr(); + gx_audio_t *wa = (gx_audio_t*)memalign(32, sizeof(*wa)); if (!wa) return NULL; @@ -97,12 +98,12 @@ static void *gx_audio_init(const char *device, if (rate < 33000) { AISetDSPSampleRate(AI_SAMPLERATE_32KHZ); - g_settings.audio.out_rate = 32000; + settings->audio.out_rate = 32000; } else { AISetDSPSampleRate(AI_SAMPLERATE_48KHZ); - g_settings.audio.out_rate = 48000; + settings->audio.out_rate = 48000; } OSInitThreadQueue(&wa->cond); diff --git a/audio/drivers/jack.c b/audio/drivers/jack.c index 3a62e4cb3e..eadd5ce3c8 100644 --- a/audio/drivers/jack.c +++ b/audio/drivers/jack.c @@ -89,9 +89,10 @@ static void shutdown_cb(void *data) static int parse_ports(char **dest_ports, const char **jports) { int i; - char *save; + char *save = NULL; int parsed = 0; - const char *con = strtok_r(g_settings.audio.device, ",", &save); + settings_t *settings = config_get_ptr(); + const char *con = strtok_r(settings->audio.device, ",", &save); if (con) dest_ports[parsed++] = strdup(con); @@ -107,9 +108,10 @@ static int parse_ports(char **dest_ports, const char **jports) static size_t find_buffersize(jack_t *jd, int latency) { - int i, buffer_frames, min_buffer_frames, jack_latency = 0; jack_latency_range_t range; - int frames = latency * g_settings.audio.out_rate / 1000; + int i, buffer_frames, min_buffer_frames, jack_latency = 0; + settings_t *settings = config_get_ptr(); + int frames = latency * settings->audio.out_rate / 1000; for (i = 0; i < 2; i++) { @@ -138,6 +140,7 @@ static void *ja_init(const char *device, unsigned rate, unsigned latency) char *dest_ports[2]; size_t bufsize = 0; int parsed = 0; + settings_t *settings = config_get_ptr(); jack_t *jd = (jack_t*)calloc(1, sizeof(jack_t)); if (!jd) @@ -150,7 +153,7 @@ static void *ja_init(const char *device, unsigned rate, unsigned latency) if (jd->client == NULL) goto error; - g_settings.audio.out_rate = jack_get_sample_rate(jd->client); + settings->audio.out_rate = jack_get_sample_rate(jd->client); jack_set_process_callback(jd->client, process_cb, jd); jack_on_shutdown(jd->client, shutdown_cb, jd); diff --git a/audio/drivers/opensl.c b/audio/drivers/opensl.c index 76292016f3..042006c730 100644 --- a/audio/drivers/opensl.c +++ b/audio/drivers/opensl.c @@ -109,6 +109,7 @@ static void *sl_init(const char *device, unsigned rate, unsigned latency) SLDataSink audio_sink = {0}; SLDataLocator_AndroidSimpleBufferQueue loc_bufq = {0}; SLDataLocator_OutputMix loc_outmix = {0}; + settings_t *settings = config_get_ptr(); (void)device; @@ -129,8 +130,8 @@ static void *sl_init(const char *device, unsigned rate, unsigned latency) GOTO_IF_FAIL(SLEngineItf_CreateOutputMix(sl->engine, &sl->output_mix, 0, NULL, NULL)); GOTO_IF_FAIL(SLObjectItf_Realize(sl->output_mix, SL_BOOLEAN_FALSE)); - if (g_settings.audio.block_frames) - sl->buf_size = g_settings.audio.block_frames * 4; + if (settings->audio.block_frames) + sl->buf_size = settings->audio.block_frames * 4; else sl->buf_size = next_pow2(32 * latency); diff --git a/audio/drivers/oss.c b/audio/drivers/oss.c index 7ba2baaf65..6e0707f43c 100644 --- a/audio/drivers/oss.c +++ b/audio/drivers/oss.c @@ -45,6 +45,7 @@ static void *oss_init(const char *device, unsigned rate, unsigned latency) { int frags, frag, channels, format, new_rate; int *fd = (int*)calloc(1, sizeof(int)); + settings_t *settings = config_get_ptr(); if (fd == NULL) return NULL; @@ -99,7 +100,7 @@ static void *oss_init(const char *device, unsigned rate, unsigned latency) if (new_rate != (int)rate) { RARCH_WARN("Requested sample rate not supported. Adjusting output rate to %d Hz.\n", new_rate); - g_settings.audio.out_rate = new_rate; + settings->audio.out_rate = new_rate; } return fd; diff --git a/audio/drivers/rwebaudio.c b/audio/drivers/rwebaudio.c index e3b9cef65e..803e84c251 100644 --- a/audio/drivers/rwebaudio.c +++ b/audio/drivers/rwebaudio.c @@ -27,13 +27,14 @@ static void rwebaudio_free(void *data) static void *rwebaudio_init(const char *device, unsigned rate, unsigned latency) { - void *data; + settings_t *settings = config_get_ptr(); + void *data = RWebAudioInit(latency); + (void)device; (void)rate; - data = RWebAudioInit(latency); if (data) - g_settings.audio.out_rate = RWebAudioSampleRate(); + settings->audio.out_rate = RWebAudioSampleRate(); return data; } diff --git a/audio/drivers/sdl_audio.c b/audio/drivers/sdl_audio.c index a090916abf..e93345b207 100644 --- a/audio/drivers/sdl_audio.c +++ b/audio/drivers/sdl_audio.c @@ -69,7 +69,9 @@ static void *sdl_audio_init(const char *device, void *tmp; SDL_AudioSpec out; SDL_AudioSpec spec = {0}; - sdl_audio_t *sdl = NULL; + settings_t *settings = config_get_ptr(); + sdl_audio_t *sdl = NULL; + (void)device; if (SDL_WasInit(0) == 0) @@ -103,13 +105,14 @@ static void *sdl_audio_init(const char *device, free(sdl); return 0; } - g_settings.audio.out_rate = out.freq; + + settings->audio.out_rate = out.freq; sdl->lock = slock_new(); sdl->cond = scond_new(); RARCH_LOG("SDL audio: Requested %u ms latency, got %d ms\n", - latency, (int)(out.samples * 4 * 1000 / g_settings.audio.out_rate)); + latency, (int)(out.samples * 4 * 1000 / settings->audio.out_rate)); /* Create a buffer twice as big as needed and prefill the buffer. */ bufsize = out.samples * 4 * sizeof(int16_t); diff --git a/audio/drivers/xenon360_audio.c b/audio/drivers/xenon360_audio.c index f97698ace6..b8515bc23e 100644 --- a/audio/drivers/xenon360_audio.c +++ b/audio/drivers/xenon360_audio.c @@ -36,6 +36,7 @@ static void *xenon360_audio_init(const char *device, unsigned rate, unsigned latency) { static bool inited = false; + settings_t *settings = config_get_ptr(); if (!inited) { @@ -43,7 +44,7 @@ static void *xenon360_audio_init(const char *device, inited = true; } - g_settings.audio.out_rate = SOUND_FREQUENCY; + settings->audio.out_rate = SOUND_FREQUENCY; return calloc(1, sizeof(xenon_audio_t)); }