From a05bd3c47ef4d77411c150e5bdbd1efacc5bde68 Mon Sep 17 00:00:00 2001 From: Liam Date: Mon, 19 Feb 2024 23:13:19 -0500 Subject: audio: rewrite IAudioOut --- src/core/hle/service/audio/audio_in.cpp | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) (limited to 'src/core/hle/service/audio/audio_in.cpp') diff --git a/src/core/hle/service/audio/audio_in.cpp b/src/core/hle/service/audio/audio_in.cpp index d847e0fc8..31d136077 100644 --- a/src/core/hle/service/audio/audio_in.cpp +++ b/src/core/hle/service/audio/audio_in.cpp @@ -21,12 +21,12 @@ IAudioIn::IAudioIn(Core::System& system_, Manager& manager, size_t session_id, {2, C<&IAudioIn::Stop>, "Stop"}, {3, C<&IAudioIn::AppendAudioInBuffer>, "AppendAudioInBuffer"}, {4, C<&IAudioIn::RegisterBufferEvent>, "RegisterBufferEvent"}, - {5, C<&IAudioIn::GetReleasedAudioInBuffer>, "GetReleasedAudioInBuffer"}, + {5, C<&IAudioIn::GetReleasedAudioInBuffers>, "GetReleasedAudioInBuffers"}, {6, C<&IAudioIn::ContainsAudioInBuffer>, "ContainsAudioInBuffer"}, {7, C<&IAudioIn::AppendAudioInBuffer>, "AppendUacInBuffer"}, - {8, C<&IAudioIn::AppendAudioInBuffer>, "AppendAudioInBufferAuto"}, - {9, C<&IAudioIn::GetReleasedAudioInBuffer>, "GetReleasedAudioInBuffersAuto"}, - {10, C<&IAudioIn::AppendAudioInBuffer>, "AppendUacInBufferAuto"}, + {8, C<&IAudioIn::AppendAudioInBufferAuto>, "AppendAudioInBufferAuto"}, + {9, C<&IAudioIn::GetReleasedAudioInBuffersAuto>, "GetReleasedAudioInBuffersAuto"}, + {10, C<&IAudioIn::AppendAudioInBufferAuto>, "AppendUacInBufferAuto"}, {11, C<&IAudioIn::GetAudioInBufferCount>, "GetAudioInBufferCount"}, {12, C<&IAudioIn::SetDeviceGain>, "SetDeviceGain"}, {13, C<&IAudioIn::GetDeviceGain>, "GetDeviceGain"}, @@ -69,6 +69,11 @@ Result IAudioIn::Stop() { Result IAudioIn::AppendAudioInBuffer(InArray buffer, u64 buffer_client_ptr) { + R_RETURN(this->AppendAudioInBufferAuto(buffer, buffer_client_ptr)); +} + +Result IAudioIn::AppendAudioInBufferAuto(InArray buffer, + u64 buffer_client_ptr) { if (buffer.empty()) { LOG_ERROR(Service_Audio, "Input buffer is too small for an AudioInBuffer!"); R_THROW(Audio::ResultInsufficientBuffer); @@ -87,8 +92,17 @@ Result IAudioIn::RegisterBufferEvent(OutCopyHandle out_e R_SUCCEED(); } -Result IAudioIn::GetReleasedAudioInBuffer(OutArray out_audio_buffer, - Out out_count) { +Result IAudioIn::GetReleasedAudioInBuffers(OutArray out_audio_buffer, + Out out_count) { + R_RETURN(this->GetReleasedAudioInBuffersAuto(out_audio_buffer, out_count)); +} + +Result IAudioIn::GetReleasedAudioInBuffersAuto( + OutArray out_audio_buffer, Out out_count) { + + if (!out_audio_buffer.empty()) { + out_audio_buffer[0] = 0; + } *out_count = impl->GetReleasedBuffers(out_audio_buffer); LOG_TRACE(Service_Audio, "called. Session {} released {} buffers", -- cgit v1.2.3