This commit is contained in:
twinaphex 2020-06-24 10:47:30 +02:00
parent f6acc190f6
commit 6b854f8766

View File

@ -28070,13 +28070,12 @@ error:
**/ **/
static void audio_driver_flush( static void audio_driver_flush(
struct rarch_state *p_rarch, struct rarch_state *p_rarch,
float slowmotion_ratio,
bool audio_fastforward_mute,
const int16_t *data, size_t samples, const int16_t *data, size_t samples,
bool is_slowmotion, bool is_fastmotion) bool is_slowmotion, bool is_fastmotion)
{ {
struct resampler_data src_data; struct resampler_data src_data;
settings_t *settings = p_rarch->configuration_settings;
float slowmotion_ratio = settings->floats.slowmotion_ratio;
bool audio_fastforward_mute = settings->bools.audio_fastforward_mute;
float audio_volume_gain = (p_rarch->audio_driver_mute_enable || float audio_volume_gain = (p_rarch->audio_driver_mute_enable ||
(audio_fastforward_mute && is_fastmotion)) ? (audio_fastforward_mute && is_fastmotion)) ?
0.0f : p_rarch->audio_driver_volume_gain; 0.0f : p_rarch->audio_driver_volume_gain;
@ -28198,14 +28197,14 @@ static void audio_driver_flush(
unsigned output_frames = (unsigned)src_data.output_frames; unsigned output_frames = (unsigned)src_data.output_frames;
if (p_rarch->audio_driver_use_float) if (p_rarch->audio_driver_use_float)
output_frames *= sizeof(float); output_frames *= sizeof(float);
else else
{ {
convert_float_to_s16(p_rarch->audio_driver_output_samples_conv_buf, convert_float_to_s16(p_rarch->audio_driver_output_samples_conv_buf,
(const float*)output_data, output_frames * 2); (const float*)output_data, output_frames * 2);
output_data = p_rarch->audio_driver_output_samples_conv_buf; output_data = p_rarch->audio_driver_output_samples_conv_buf;
output_frames *= sizeof(int16_t); output_frames *= sizeof(int16_t);
} }
if (p_rarch->current_audio->write( if (p_rarch->current_audio->write(
@ -28252,6 +28251,8 @@ static void audio_driver_sample(int16_t left, int16_t right)
!p_rarch->audio_driver_output_samples_buf)) !p_rarch->audio_driver_output_samples_buf))
audio_driver_flush( audio_driver_flush(
p_rarch, p_rarch,
p_rarch->configuration_settings->floats.slowmotion_ratio,
p_rarch->configuration_settings->bools.audio_fastforward_mute,
p_rarch->audio_driver_output_samples_conv_buf, p_rarch->audio_driver_output_samples_conv_buf,
p_rarch->audio_driver_data_ptr, p_rarch->audio_driver_data_ptr,
p_rarch->runloop_slowmotion, p_rarch->runloop_slowmotion,
@ -28292,6 +28293,8 @@ static void audio_driver_menu_sample(void)
if (check_flush) if (check_flush)
audio_driver_flush( audio_driver_flush(
p_rarch, p_rarch,
p_rarch->configuration_settings->floats.slowmotion_ratio,
p_rarch->configuration_settings->bools.audio_fastforward_mute,
samples_buf, samples_buf,
1024, 1024,
p_rarch->runloop_slowmotion, p_rarch->runloop_slowmotion,
@ -28313,6 +28316,8 @@ static void audio_driver_menu_sample(void)
if (check_flush) if (check_flush)
audio_driver_flush( audio_driver_flush(
p_rarch, p_rarch,
p_rarch->configuration_settings->floats.slowmotion_ratio,
p_rarch->configuration_settings->bools.audio_fastforward_mute,
samples_buf, samples_buf,
sample_count, sample_count,
p_rarch->runloop_slowmotion, p_rarch->runloop_slowmotion,
@ -28359,6 +28364,8 @@ static size_t audio_driver_sample_batch(const int16_t *data, size_t frames)
!p_rarch->audio_driver_output_samples_buf)) !p_rarch->audio_driver_output_samples_buf))
audio_driver_flush( audio_driver_flush(
p_rarch, p_rarch,
p_rarch->configuration_settings->floats.slowmotion_ratio,
p_rarch->configuration_settings->bools.audio_fastforward_mute,
data, data,
frames << 1, frames << 1,
p_rarch->runloop_slowmotion, p_rarch->runloop_slowmotion,
@ -28425,14 +28432,15 @@ void audio_driver_dsp_filter_free(void)
bool audio_driver_dsp_filter_init(const char *device) bool audio_driver_dsp_filter_init(const char *device)
{ {
struct rarch_state *p_rarch = &rarch_st; retro_dsp_filter_t *audio_driver_dsp = NULL;
struct string_list *plugs = NULL; struct rarch_state *p_rarch = &rarch_st;
struct string_list *plugs = NULL;
#if defined(HAVE_DYLIB) && !defined(HAVE_FILTERS_BUILTIN) #if defined(HAVE_DYLIB) && !defined(HAVE_FILTERS_BUILTIN)
char *basedir = (char*) char *basedir = (char*)
calloc(PATH_MAX_LENGTH, sizeof(*basedir)); calloc(PATH_MAX_LENGTH, sizeof(*basedir));
char *ext_name = (char*) char *ext_name = (char*)
calloc(PATH_MAX_LENGTH, sizeof(*ext_name)); calloc(PATH_MAX_LENGTH, sizeof(*ext_name));
size_t str_size = PATH_MAX_LENGTH * sizeof(char); size_t str_size = PATH_MAX_LENGTH * sizeof(char);
fill_pathname_basedir(basedir, device, str_size); fill_pathname_basedir(basedir, device, str_size);
@ -28449,11 +28457,13 @@ bool audio_driver_dsp_filter_init(const char *device)
if (!plugs) if (!plugs)
return false; return false;
#endif #endif
p_rarch->audio_driver_dsp = retro_dsp_filter_new( audio_driver_dsp = retro_dsp_filter_new(
device, plugs, p_rarch->audio_driver_input); device, plugs, p_rarch->audio_driver_input);
if (!p_rarch->audio_driver_dsp) if (!audio_driver_dsp)
return false; return false;
p_rarch->audio_driver_dsp = audio_driver_dsp;
return true; return true;
} }
@ -29231,6 +29241,8 @@ void audio_driver_frame_is_reverse(void)
!p_rarch->audio_driver_output_samples_buf)) !p_rarch->audio_driver_output_samples_buf))
audio_driver_flush( audio_driver_flush(
p_rarch, p_rarch,
p_rarch->configuration_settings->floats.slowmotion_ratio,
p_rarch->configuration_settings->bools.audio_fastforward_mute,
p_rarch->audio_driver_rewind_buf + p_rarch->audio_driver_rewind_buf +
p_rarch->audio_driver_rewind_ptr, p_rarch->audio_driver_rewind_ptr,
p_rarch->audio_driver_rewind_size - p_rarch->audio_driver_rewind_size -