diff --git a/nx/include/switch/services/audout.h b/nx/include/switch/services/audout.h index 2f18f676..9c82cf44 100644 --- a/nx/include/switch/services/audout.h +++ b/nx/include/switch/services/audout.h @@ -50,6 +50,11 @@ Result audoutAppendAudioOutBuffer(AudioOutBuffer *Buffer); Result audoutGetReleasedAudioOutBuffer(AudioOutBuffer **Buffer, u32 *ReleasedBuffersCount); Result audoutContainsAudioOutBuffer(AudioOutBuffer *Buffer, bool *ContainsBuffer); +Result audoutGetAudioOutBufferCount(u32 *count); +Result audoutGetAudioOutPlayedSampleCount(u64 *count); +Result audoutFlushAudioOutBuffers(bool *flushed); +Result audoutSetAudioOutVolume(float volume); +Result audoutGetAudioOutVolume(float *volume); /** * @brief Submits an audio sample data buffer for playing and waits for it to finish playing. diff --git a/nx/source/services/audout.c b/nx/source/services/audout.c index 607b7ee1..2e61b1a7 100644 --- a/nx/source/services/audout.c +++ b/nx/source/services/audout.c @@ -220,3 +220,26 @@ Result audoutContainsAudioOutBuffer(AudioOutBuffer *Buffer, bool *ContainsBuffer if (R_SUCCEEDED(rc) && ContainsBuffer) *ContainsBuffer = out & 1; return rc; } + +Result audoutGetAudioOutBufferCount(u32 *count) { + return serviceDispatchOut(&g_audoutIAudioOut, 9, *count); +} + +Result audoutGetAudioOutPlayedSampleCount(u64 *count) { + return serviceDispatchOut(&g_audoutIAudioOut, 10, *count); +} + +Result audoutFlushAudioOutBuffers(bool *flushed) { + u8 out=0; + Result rc = serviceDispatchOut(&g_audoutIAudioOut, 11, out); + if (R_SUCCEEDED(rc) && flushed) *flushed = out & 1; + return rc; +} + +Result audoutSetAudioOutVolume(float volume) { + return serviceDispatchIn(&g_audoutIAudioOut, 12, volume); +} + +Result audoutGetAudioOutVolume(float *volume) { + return serviceDispatchOut(&g_audoutIAudioOut, 13, *volume); +}