From 381ac7d1ef7e2f98701bc295164c8268e6123604 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sun, 26 Jul 2026 12:56:53 +1000 Subject: [PATCH] MediaCapture: Fix incorrect samples on buffer wrap-around --- src/util/media_capture.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/util/media_capture.cpp b/src/util/media_capture.cpp index 8ffa7e6f3..aea929d8d 100644 --- a/src/util/media_capture.cpp +++ b/src/util/media_capture.cpp @@ -464,12 +464,14 @@ bool MediaCaptureBase::DeliverAudioFrames(const s16* frames, u32 num_frames) return false; } + const s16* current_frames = frames; for (u32 remaining_frames = num_frames;;) { const u32 contig_frames = std::min(audio_buffer_size - m_audio_buffer_write_pos, remaining_frames); - std::memcpy(&m_audio_buffer[m_audio_buffer_write_pos * AUDIO_CHANNELS], frames, + std::memcpy(&m_audio_buffer[m_audio_buffer_write_pos * AUDIO_CHANNELS], current_frames, sizeof(s16) * AUDIO_CHANNELS * contig_frames); m_audio_buffer_write_pos = (m_audio_buffer_write_pos + contig_frames) % audio_buffer_size; + current_frames += contig_frames * AUDIO_CHANNELS; remaining_frames -= contig_frames; if (remaining_frames == 0) break;