Support DRC even when using a vsync swap interval higher than 1

This commit is contained in:
Nikos Chantziaras 2019-12-13 23:22:51 +02:00
parent ac318f2c8c
commit 1617cd7e2a
No known key found for this signature in database
GPG Key ID: 15B600E72CA59238

View File

@ -18922,7 +18922,8 @@ static void audio_driver_monitor_adjust_system_rates(void)
{
float timing_skew;
settings_t *settings = configuration_settings;
float video_refresh_rate = settings->floats.video_refresh_rate;
const float target_video_sync_rate =
settings->floats.video_refresh_rate / settings->uints.video_swap_interval;
float max_timing_skew = settings->floats.audio_max_timing_skew;
struct retro_system_av_info *av_info = &video_driver_av_info;
const struct retro_system_timing *info =
@ -18931,11 +18932,11 @@ static void audio_driver_monitor_adjust_system_rates(void)
if (info->sample_rate <= 0.0)
return;
timing_skew = fabs(1.0f - info->fps / video_refresh_rate);
timing_skew = fabs(1.0f - info->fps / target_video_sync_rate);
audio_driver_input = info->sample_rate;
if (timing_skew <= max_timing_skew && !settings->bools.vrr_runloop_enable)
audio_driver_input *= (video_refresh_rate / info->fps);
audio_driver_input *= target_video_sync_rate / info->fps;
RARCH_LOG("[Audio]: Set audio input rate to: %.2f Hz.\n",
audio_driver_input);