aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaufeat <sahyno1996@gmail.com>2026-01-18 16:20:32 +0100
committercrueter <crueter@eden-emu.dev>2026-01-18 16:20:32 +0100
commit84e11a52ba4584a58b8aacefc063a2002d09fc40 (patch)
treebff75d32c6997d33d4d48bd0f46555f22dd25041 /src
parentd72553f519b99a56eeeeaa894cf304136d2b758e (diff)
[audio] Fix release buffer for audio input (#3336)
fixes microphone release buffer and data. Tested with Let's Sing 2025 Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3336 Reviewed-by: MaranBr <maranbr@eden-emu.dev> Reviewed-by: CamilleLaVey <camillelavey99@gmail.com> Co-authored-by: Maufeat <sahyno1996@gmail.com> Co-committed-by: Maufeat <sahyno1996@gmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/audio_core/device/audio_buffers.h2
-rw-r--r--src/audio_core/sink/sink_stream.cpp12
2 files changed, 13 insertions, 1 deletions
diff --git a/src/audio_core/device/audio_buffers.h b/src/audio_core/device/audio_buffers.h
index 0ee3225bf6..34a396e2dc 100644
--- a/src/audio_core/device/audio_buffers.h
+++ b/src/audio_core/device/audio_buffers.h
@@ -113,6 +113,8 @@ public:
break;
}
+ session.ReleaseBuffer(buffers[index]);
+
ReleaseBuffer(index, core_timing.GetGlobalTimeNs().count());
buffer_released = true;
}
diff --git a/src/audio_core/sink/sink_stream.cpp b/src/audio_core/sink/sink_stream.cpp
index 3655ae8f69..2c41e7f2c8 100644
--- a/src/audio_core/sink/sink_stream.cpp
+++ b/src/audio_core/sink/sink_stream.cpp
@@ -151,7 +151,17 @@ void SinkStream::ProcessAudioIn(std::span<const s16> input_buffer, std::size_t n
playing_buffer.consumed = true;
}
- std::memcpy(&last_frame[0], &input_buffer[(frames_written - 1) * frame_size], frame_size_bytes);
+ if (frames_written > 0) {
+ std::memcpy(&last_frame[0], &input_buffer[(frames_written - 1) * frame_size], frame_size_bytes);
+ }
+
+ // update sample counts für audio-ins
+ {
+ std::scoped_lock lk{sample_count_lock};
+ last_sample_count_update_time = system.CoreTiming().GetGlobalTimeNs();
+ min_played_sample_count = max_played_sample_count;
+ max_played_sample_count += frames_written;
+ }
}
void SinkStream::ProcessAudioOutAndRender(std::span<s16> output_buffer, std::size_t num_frames) {