mirror of
https://github.com/libretro/RetroArch
synced 2025-02-20 06:40:18 +00:00
Updates pt. 2
This commit is contained in:
parent
e996d5d51f
commit
950f15ac2c
@ -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);
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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));
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user