AudioStream: Reset resampler state on emptying buffers
This commit is contained in:
parent
43d01776dc
commit
bc5fb850d4
|
@ -252,6 +252,7 @@ void AudioStream::EmptyBuffers()
|
||||||
std::unique_lock<std::mutex> lock(m_buffer_mutex);
|
std::unique_lock<std::mutex> lock(m_buffer_mutex);
|
||||||
m_buffer.Clear();
|
m_buffer.Clear();
|
||||||
m_underflow_flag.store(false);
|
m_underflow_flag.store(false);
|
||||||
|
ResetResampler();
|
||||||
}
|
}
|
||||||
|
|
||||||
void AudioStream::CreateResampler()
|
void AudioStream::CreateResampler()
|
||||||
|
@ -273,6 +274,8 @@ void AudioStream::DestroyResampler()
|
||||||
void AudioStream::ResetResampler()
|
void AudioStream::ResetResampler()
|
||||||
{
|
{
|
||||||
m_resampled_buffer.Clear();
|
m_resampled_buffer.Clear();
|
||||||
|
m_resample_in_buffer.clear();
|
||||||
|
m_resample_out_buffer.clear();
|
||||||
src_reset(static_cast<SRC_STATE*>(m_resampler_state));
|
src_reset(static_cast<SRC_STATE*>(m_resampler_state));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -77,10 +77,11 @@ ConsoleSettingsWidget::ConsoleSettingsWidget(QtHostInterface* host_interface, QW
|
||||||
dialog->registerWidgetHelp(
|
dialog->registerWidgetHelp(
|
||||||
m_ui.turboSpeed, tr("Turbo Speed"), "100%",
|
m_ui.turboSpeed, tr("Turbo Speed"), "100%",
|
||||||
tr("Sets the turbo speed. This speed will be used when the turbo hotkey is pressed/toggled."));
|
tr("Sets the turbo speed. This speed will be used when the turbo hotkey is pressed/toggled."));
|
||||||
dialog->registerWidgetHelp(m_ui.syncToHostRefreshRate, tr("Sync To Host Refresh Rate"), "100%",
|
dialog->registerWidgetHelp(
|
||||||
tr("Adjusts the emulation speed so the console's refresh rate matches the host's refresh "
|
m_ui.syncToHostRefreshRate, tr("Sync To Host Refresh Rate"), "100%",
|
||||||
"rate, when VSync is enabled. This results in the smoothest animations possible, at "
|
tr("Adjusts the emulation speed so the console's refresh rate matches the host's refresh rate, when VSync and "
|
||||||
"the cost of potentially increasing the emulation speed by less than 1%."));
|
"Audio Resampling is enabled. This results in the smoothest animations possible, at the cost of potentially "
|
||||||
|
"increasing the emulation speed by less than 1%."));
|
||||||
|
|
||||||
m_ui.cpuClockSpeed->setEnabled(m_ui.enableCPUClockSpeedControl->checkState() == Qt::Checked);
|
m_ui.cpuClockSpeed->setEnabled(m_ui.enableCPUClockSpeedControl->checkState() == Qt::Checked);
|
||||||
m_ui.cdromReadSpeedup->setCurrentIndex(m_host_interface->GetIntSettingValue("CDROM", "ReadSpeedup", 1) - 1);
|
m_ui.cdromReadSpeedup->setCurrentIndex(m_host_interface->GetIntSettingValue("CDROM", "ReadSpeedup", 1) - 1);
|
||||||
|
|
|
@ -609,8 +609,8 @@ void CommonHostInterface::UpdateSpeedLimiterState()
|
||||||
(m_fast_forward_enabled ? g_settings.fast_forward_speed : g_settings.emulation_speed);
|
(m_fast_forward_enabled ? g_settings.fast_forward_speed : g_settings.emulation_speed);
|
||||||
m_speed_limiter_enabled = (target_speed != 0.0f);
|
m_speed_limiter_enabled = (target_speed != 0.0f);
|
||||||
|
|
||||||
if (g_settings.sync_to_host_refresh_rate && target_speed == 1.0f && g_settings.video_sync_enabled && m_display &&
|
if (g_settings.sync_to_host_refresh_rate && g_settings.audio_resampling && target_speed == 1.0f &&
|
||||||
System::IsRunning())
|
g_settings.video_sync_enabled && m_display && System::IsRunning())
|
||||||
{
|
{
|
||||||
float host_refresh_rate;
|
float host_refresh_rate;
|
||||||
if (m_display->GetHostRefreshRate(&host_refresh_rate))
|
if (m_display->GetHostRefreshRate(&host_refresh_rate))
|
||||||
|
|
Loading…
Reference in New Issue