aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaranBr <maranbr@outlook.com>2025-11-04 00:23:03 +0100
committercrueter <crueter@eden-emu.dev>2025-11-04 00:23:03 +0100
commitac2287f261cf0f8920ed9bf0657ae3404cd4e39f (patch)
treec878b6fe50250e4c33bac0bb69e716748a28b27e
parentdd24ef244d363f856e764e205a7b6b9b3553d02d (diff)
[audio_core] Slightly increase audio latency (#2944)
This slightly increases audio latency to prevent audio skipping in some games, such as Super Mario Odyssey when playing videos. Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2944 Reviewed-by: Lizzie <lizzie@eden-emu.dev> Co-authored-by: MaranBr <maranbr@outlook.com> Co-committed-by: MaranBr <maranbr@outlook.com>
-rw-r--r--src/audio_core/sink/sink_stream.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/audio_core/sink/sink_stream.cpp b/src/audio_core/sink/sink_stream.cpp
index 2044a83d53..d6e8044d62 100644
--- a/src/audio_core/sink/sink_stream.cpp
+++ b/src/audio_core/sink/sink_stream.cpp
@@ -220,8 +220,8 @@ u64 SinkStream::GetExpectedPlayedSampleCount() {
auto time_delta{cur_time - last_sample_count_update_time};
auto exp_played_sample_count{min_played_sample_count + (TargetSampleRate * time_delta) / std::chrono::seconds{1}};
- // Add 15ms of latency in sample reporting to allow for some leeway in scheduler timings
- return std::min<u64>(exp_played_sample_count, max_played_sample_count) + TargetSampleCount * 3;
+ // Add 25ms of latency in sample reporting to allow for some leeway in scheduler timings
+ return std::min<u64>(exp_played_sample_count, max_played_sample_count) + TargetSampleCount * 5;
}
void SinkStream::WaitFreeSpace(std::stop_token stop_token) {
@@ -231,9 +231,9 @@ void SinkStream::WaitFreeSpace(std::stop_token stop_token) {
return paused || queued_buffers < max_queue_size;
};
- release_cv.wait_for(lk, std::chrono::milliseconds(8), can_continue);
+ release_cv.wait_for(lk, std::chrono::milliseconds(7), can_continue);
- if (queued_buffers > max_queue_size + 10) {
+ if (queued_buffers > max_queue_size + 3) {
release_cv.wait(lk, stop_token, can_continue);
}
}