mirror of
https://github.com/libretro/RetroArch
synced 2025-04-01 04:20:27 +00:00
Refactor audio_flush
This commit is contained in:
parent
817bffcc57
commit
9f48a2bca2
26
retroarch.c
26
retroarch.c
@ -380,8 +380,9 @@ static bool audio_flush(const int16_t *data, size_t samples)
|
|||||||
if (!g_extern.audio_active)
|
if (!g_extern.audio_active)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
const float *output_data = NULL;
|
const void *output_data = NULL;
|
||||||
unsigned output_frames = 0;
|
unsigned output_frames = 0;
|
||||||
|
size_t output_size = sizeof(float);
|
||||||
|
|
||||||
struct resampler_data src_data = {0};
|
struct resampler_data src_data = {0};
|
||||||
RARCH_PERFORMANCE_INIT(audio_convert_s16);
|
RARCH_PERFORMANCE_INIT(audio_convert_s16);
|
||||||
@ -423,15 +424,7 @@ static bool audio_flush(const int16_t *data, size_t samples)
|
|||||||
output_data = g_extern.audio_data.outsamples;
|
output_data = g_extern.audio_data.outsamples;
|
||||||
output_frames = src_data.output_frames;
|
output_frames = src_data.output_frames;
|
||||||
|
|
||||||
if (g_extern.audio_data.use_float)
|
if (!g_extern.audio_data.use_float)
|
||||||
{
|
|
||||||
if (audio_write_func(output_data, output_frames * sizeof(float) * 2) < 0)
|
|
||||||
{
|
|
||||||
RARCH_ERR("Audio backend failed to write. Will continue without sound.\n");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
RARCH_PERFORMANCE_INIT(audio_convert_float);
|
RARCH_PERFORMANCE_INIT(audio_convert_float);
|
||||||
RARCH_PERFORMANCE_START(audio_convert_float);
|
RARCH_PERFORMANCE_START(audio_convert_float);
|
||||||
@ -439,11 +432,14 @@ static bool audio_flush(const int16_t *data, size_t samples)
|
|||||||
output_data, output_frames * 2);
|
output_data, output_frames * 2);
|
||||||
RARCH_PERFORMANCE_STOP(audio_convert_float);
|
RARCH_PERFORMANCE_STOP(audio_convert_float);
|
||||||
|
|
||||||
if (audio_write_func(g_extern.audio_data.conv_outsamples, output_frames * sizeof(int16_t) * 2) < 0)
|
output_data = g_extern.audio_data.conv_outsamples;
|
||||||
{
|
output_size = sizeof(int16_t);
|
||||||
RARCH_ERR("Audio backend failed to write. Will continue without sound.\n");
|
}
|
||||||
return false;
|
|
||||||
}
|
if (audio_write_func(output_data, output_frames * output_size * 2) < 0)
|
||||||
|
{
|
||||||
|
RARCH_ERR("Audio backend failed to write. Will continue without sound.\n");
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user