System: Fix sync to host refresh audio stretching

This commit is contained in:
Stenzek
2024-05-22 22:28:19 +10:00
parent e01efaa681
commit 14ba3b7312
5 changed files with 10 additions and 29 deletions

View File

@ -2681,6 +2681,11 @@ float System::GetTargetSpeed()
return s_target_speed;
}
float System::GetAudioNominalRate()
{
return s_throttler_enabled ? s_target_speed : 1.0f;
}
void System::UpdatePerformanceCounters()
{
const float frame_time = static_cast<float>(s_frame_timer.GetTimeMillisecondsAndReset());
@ -2869,15 +2874,7 @@ void System::UpdateSpeedLimiterState()
// Update audio output.
AudioStream* stream = SPU::GetOutputStream();
stream->SetOutputVolume(GetAudioOutputVolume());
// Adjust nominal rate when resampling, or syncing to host.
const bool rate_adjust =
(s_syncing_to_host || g_settings.audio_stream_parameters.stretch_mode == AudioStretchMode::Resample) &&
s_target_speed > 0.0f;
stream->SetNominalRate(rate_adjust ? s_target_speed : 1.0f);
if (old_target_speed < s_target_speed)
stream->UpdateTargetTempo(s_target_speed);
stream->SetNominalRate(GetAudioNominalRate());
UpdateThrottlePeriod();
ResetThrottler();