Audio services

From Nintendo Switch Brew
Revision as of 20:34, 13 February 2018 by Hexkyz (talk | contribs)
Jump to navigation Jump to search

audout:u

This is "nn::audio::detail::IAudioOutManager".

Cmd Name
0 #ListAudioOuts
1 #OpenAudioOut

ListAudioOuts

Takes a type-6 output buffer. Populates the output buffer with the available audio output devices' names and returns an u32 with the number of device names written.

OpenAudioOut

Takes a type-5 input buffer (DeviceNameIn), a type-6 output buffer (DeviceNameOut), two u32s SampleRate (must be 48000) and ChannelCount (high u16 can't be 0, official apps pass 0xCAFE0000), one u64 ClientPID, a PID and a copy-handle. Returns an #IAudioOut object and four u32s: the sample rate, channel count, PCM format, and the initial AudioOutState.

PCM format

Value Name
0 Invalid
1 INT8
2 INT16
3 INT24
4 INT32
5 PCM Float
6 ADPCM

IAudioOut

This is "nn::audio::detail::IAudioOut".

Cmd Name
0 #GetAudioOutState
1 #StartAudioOut
2 #StopAudioOut
3 #AppendAudioOutBuffer
4 #RegisterBufferEvent
5 #GetReleasedAudioOutBuffer
6 #ContainsAudioOutBuffer
7 #AppendAudioOutBufferEx
8 #GetReleasedAudioOutBufferEx

GetAudioOutState

Returns an u32 AudioOutState (0x00=Started, 0x01=Stopped).

StartAudioOut

Starts audio playback using data from appended buffers.

StopAudioOut

Stops audio playback.

AppendAudioOutBuffer

Takes a type-5 input buffer for sample data and a u64 which acts as a tag for the supplied buffer (official apps use the buffer's address).

The format of the input buffer is as follows:

Offset Size Description
0x00 8 Pointer to next buffer
0x08 8 Pointer to sample buffer
0x10 8 Capacity of sample buffer
0x18 8 Size of data in the sample buffer
0x20 8 Offset of data in the sample buffer

RegisterBufferEvent

Returns an event handle that is signalled when a buffer is released.

GetReleasedAudioOutBuffer

Takes a type-6 output buffer which will be filled with the identifiers from #AppendAudioOutBuffer of audio buffers that have been released. Returns an u32 ReleasedBuffersCount.

ContainsAudioOutBuffer

Takes an u64 tag for the desired buffer. Returns 1 if the buffer was appended and not yet released.

AppendAudioOutBufferEx

Same as #AppendAudioOutBuffer but takes a type-0x21 buffer instead.

GetReleasedAudioOutBufferEx

Same as #GetReleasedAudioOutBuffer but takes a type-0x22 buffer instead.

audin:u

This is "nn::audio::detail::IAudioInManagerForDebugger".

Cmd Name
0 ListAudioIns
1 OpenAudioIn

IAudioIn

This is "nn::audio::detail::IAudioIn".

Cmd Name
0 #GetAudioInState
1 StartAudioIn
2 StopAudioIn
3 AppendAudioInBuffer
4 RegisterBufferEvent
5 GetReleasedAudioInBuffer
6 ContainsAudioInBuffer

GetAudioInState

Returns an AudioInState, 0x00=Started 0x01=Stopped (u32)

audrec:u

This is "nn::audio::detail::IFinalOutputRecorderManager".

Cmd Name
0 OpenFinalOutputRecorder

IFinalOutputRecorder

This is "nn::audio::detail::IFinalOutputRecorder".

Cmd Name
0 GetFinalOutputRecorderState
1 StartFinalOutputRecorder
2 StopFinalOutputRecorder
3 AppendFinalOutputRecorderBuffer
4 RegisterBufferEvent
5 GetReleasedFinalOutputRecorderBuffer
6 ContainsFinalOutputRecorderBuffer

audren:u

This is "nn::audio::detail::IAudioRendererManager".

Cmd Name
0 OpenAudioRenderer
1 GetAudioRendererWorkBufferSize
2 GetAudioRenderersProcessMasterVolume
3 SetAudioRenderersProcessMasterVolume

IAudioRenderer

This is "nn::audio::detail::IAudioRenderer".

Cmd Name
0 #GetAudioRendererSampleRate
1 #GetAudioRendererSampleCount
2 #GetAudioRendererMixBufferCount
3 #GetAudioRendererState
4 RequestUpdateAudioRenderer
5 StartAudioRenderer
6 StopAudioRenderer
7 QuerySystemEvent
8 #SetAudioRendererRenderingTimeLimit
9 #GetAudioRendererRenderingTimeLimit

GetAudioRendererSampleRate

Returns the Sample Rate. (u32)

GetAudioRendererSampleCount

Returns the Sample Count. (u32)

GetAudioRendererMixBufferCount

Returns the number of Mix Buffers. (u32)

GetAudioRendererState

Returns an AudioRenderState, 0x00=Started 0x01=Stopped (u32)

SetAudioRendererRenderingTimeLimit

Takes a upper limit of the rendering time in percent. (u32)

GetAudioRendererRenderingTimeLimit

Returns the upper limit of the rendering time in percent. (u32)

audout:a, audin:a, audrec:a, audren:a

This is "nn::audio::detail::IAudioOutManagerForApplet", "nn::audio::detail::IAudioInManagerForApplet", "nn::audio::detail::IFinalOutputRecorderManagerForApplet", "nn::audio::detail::IAudioRendererManagerForApplet".

Cmd Name
0 RequestSuspend
1 RequestResume

audout:d, audin:d, audrec:d, audren:d

This is "nn::audio::detail::IAudioOutManagerForDebugger", "nn::audio::detail::IAudioInManagerForDebugger", "nn::audio::detail::IFinalOutputRecorderManagerForDebugger", "nn::audio::detail::IAudioRendererManagerForDebugger".

Cmd Name
0 #RequestSuspendForDebug
1 #RequestResumeForDebug

RequestSuspendForDebug

Takes an AppletResourceUserId. (u64)

RequestResumeForDebug

Takes an AppletResourceUserId. (u64)

codecctl

This is "nn::audio::detail::ICodecController".

Cmd Name
0 InitializeCodecController
1 FinalizeCodecController
2 SleepCodecController
3 WakeCodecController
4 #SetCodecVolume
5 GetCodecVolumeMax
6 GetCodecVolumeMin
7 SetCodecActiveTarget
8 Unknown
9 BindCodecHeadphoneMicJackInterrupt
10 IsCodecHeadphoneMicJackInserted
11 ClearCodecHeadphoneMicJackInterrupt
12 IsCodecDeviceRequested

SetCodecVolume

Takes a Volume (uint32)