Difference between revisions of "Audio services"

From Nintendo Switch Brew
Jump to navigation Jump to search
Line 6: Line 6:
 
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || [[#ListAudioOuts]]
+
| 0 || [[#ListAudioOuts|ListAudioOuts]]
 
|-
 
|-
| 1 || [[#OpenAudioOut]]
+
| 1 || [[#OpenAudioOut|OpenAudioOut]]
 
|-
 
|-
| 2 || [3.0.0+] [[#ListAudioOutsAuto]]
+
| 2 || [3.0.0+] [[#ListAudioOutsAuto|ListAudioOutsAuto]]
 
|-
 
|-
| 3 || [3.0.0+] [[#OpenAudioOutAuto]]
+
| 3 || [3.0.0+] [[#OpenAudioOutAuto|OpenAudioOutAuto]]
 
|}
 
|}
  
 
== ListAudioOuts ==
 
== ListAudioOuts ==
Takes a type-0x6 output buffer.
+
Takes a type-0x6 output buffer containing an array of [[#AudioOutInfo]]. Returns an u32 '''Count'''.
Populates the output buffer with the available audio output devices' names and returns an u32 with the number of device names written.
 
  
 
== OpenAudioOut ==
 
== OpenAudioOut ==
Takes a type-0x5 input buffer ('''DeviceNameIn'''), a type-0x6 output buffer ('''DeviceNameOut'''), two u32s '''SampleRate''' (must be 48000) and '''ChannelCount''' (only the higher u16 is used), one [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], a PID and a copy-handle.
+
Takes a PID-descriptor, a type-0x5 input buffer '''NameIn''', a type-0x6 output buffer '''NameOut''', an input [[#AudioOutParameter]], an input Process handle and an input [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]]. Returns an [[#IAudioOut]] and an an output [[#AudioOutParameterInternal]].
Returns an [[#IAudioOut]] object and four u32s: the sample rate, channel count, [[#SampleFormat|SampleFormat]], and the initial AudioOutState.
 
  
 
== ListAudioOutsAuto ==
 
== ListAudioOutsAuto ==
Line 36: Line 34:
 
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || [[#GetAudioOutState]]
+
| 0 || [[#GetAudioOutState|GetAudioOutState]]
 
|-
 
|-
| 1 || [[#Start]]
+
| 1 || [[#Start|Start]]
 
|-
 
|-
| 2 || [[#Stop]]
+
| 2 || [[#Stop|Stop]]
 
|-
 
|-
| 3 || [[#AppendAudioOutBuffer]]
+
| 3 || [[#AppendAudioOutBuffer|AppendAudioOutBuffer]]
 
|-
 
|-
| 4 || [[#RegisterBufferEvent]]
+
| 4 || [[#RegisterBufferEvent|RegisterBufferEvent]]
 
|-
 
|-
| 5 || [[#GetReleasedAudioOutBuffers]]
+
| 5 || [[#GetReleasedAudioOutBuffers|GetReleasedAudioOutBuffers]]
 
|-
 
|-
| 6 || [[#ContainsAudioOutBuffer]]
+
| 6 || [[#ContainsAudioOutBuffer|ContainsAudioOutBuffer]]
 
|-
 
|-
| 7 || [3.0.0+] [[#AppendAudioOutBufferAuto]]
+
| 7 || [3.0.0+] [[#AppendAudioOutBufferAuto|AppendAudioOutBufferAuto]]
 
|-
 
|-
| 8 || [3.0.0+] [[#GetReleasedAudioOutBuffersAuto]]
+
| 8 || [3.0.0+] [[#GetReleasedAudioOutBuffersAuto|GetReleasedAudioOutBuffersAuto]]
 
|-
 
|-
| 9 || [4.0.0+] [[#GetAudioOutBufferCount]]
+
| 9 || [4.0.0+] [[#GetAudioOutBufferCount|GetAudioOutBufferCount]]
 
|-
 
|-
| 10 || [4.0.0+] [[#GetAudioOutPlayedSampleCount]]
+
| 10 || [4.0.0+] [[#GetAudioOutPlayedSampleCount|GetAudioOutPlayedSampleCount]]
 
|-
 
|-
| 11 || [4.0.0+] [[#FlushAudioOutBuffers]]
+
| 11 || [4.0.0+] [[#FlushAudioOutBuffers|FlushAudioOutBuffers]]
 
|-
 
|-
| 12 || [6.0.0+] [[#SetAudioOutVolume]]
+
| 12 || [6.0.0+] [[#SetAudioOutVolume|SetAudioOutVolume]]
 
|-
 
|-
| 13 || [6.0.0+] [[#GetAudioOutVolume]]
+
| 13 || [6.0.0+] [[#GetAudioOutVolume|GetAudioOutVolume]]
 
|}
 
|}
  
 
=== GetAudioOutState ===
 
=== GetAudioOutState ===
Returns an u32 '''AudioOutState''' (0=Started, 1=Stopped).
+
No input. Returns an output [[#AudioOutState]].
  
 
=== Start ===
 
=== Start ===
 +
No input/output.
 +
 
Starts audio playback using data from appended buffers.
 
Starts audio playback using data from appended buffers.
  
 
=== Stop ===
 
=== Stop ===
 +
No input/output.
 +
 
Stops audio playback. This waits for audio playback to finish before returning.
 
Stops audio playback. This waits for audio playback to finish before returning.
  
 
=== AppendAudioOutBuffer ===
 
=== AppendAudioOutBuffer ===
Takes a type-0x5 input buffer of [[#AudioOutBuffer|AudioOutBuffer]] and a u64 which acts as a tag for the supplied buffer (official apps use the buffer's address).
+
Takes a type-0x5 input buffer containing an [[#AudioOutBuffer]] and an input u64 '''BufferClientPtr'''. No output.
  
 
=== RegisterBufferEvent ===
 
=== RegisterBufferEvent ===
Returns an event handle that is signalled when a buffer is released.
+
No input. Returns an output Event handle.
 +
 
 +
The event is signalled when a buffer is released.
  
 
=== GetReleasedAudioOutBuffers ===
 
=== GetReleasedAudioOutBuffers ===
Takes a type-0x6 output buffer which will be filled with the identifiers from [[#AppendAudioOutBuffer]] of audio buffers that have been released.
+
Takes a type-0x6 output buffer '''AudioBuffer'''. Returns an output u32 '''Count'''.
Returns an u32 '''ReleasedBuffersCount'''.
+
 
 +
'''AudioBuffer''' will be filled with the identifiers from [[#AppendAudioOutBuffer]] of audio buffers that have been released.
  
 
=== ContainsAudioOutBuffer ===
 
=== ContainsAudioOutBuffer ===
Takes an u64 '''tag''' for the desired buffer. Returns 1 if the buffer was appended and not yet released.
+
Takes an input u64 '''AudioBufferPointer'''. Returns an output bool '''Contains'''.
  
 
=== AppendAudioOutBufferAuto ===
 
=== AppendAudioOutBufferAuto ===
Same as [[#AppendAudioOutBuffer]] but takes a type-0x21 buffer instead.
+
Same as [[#AppendAudioOutBuffer]], but takes a type-0x21 buffer instead.
  
 
=== GetReleasedAudioOutBuffersAuto ===
 
=== GetReleasedAudioOutBuffersAuto ===
Same as [[#GetReleasedAudioOutBuffer]] but takes a type-0x22 buffer instead.
+
Same as [[#GetReleasedAudioOutBuffer]], but takes a type-0x22 buffer instead.
  
 
=== GetAudioOutBufferCount ===
 
=== GetAudioOutBufferCount ===
Returns u32 amount of buffers awaiting playback.
+
No input. Returns an output u32 '''AudioOutBufferCount'''.
  
 
=== GetAudioOutPlayedSampleCount ===
 
=== GetAudioOutPlayedSampleCount ===
Returns u64 total amount of samples played back.
+
No input. Returns an output u64 '''AudioOutPlayedSampleCount'''.
  
 
=== FlushAudioOutBuffers ===
 
=== FlushAudioOutBuffers ===
Flushes all pending buffers. Returns 1 if buffers were pending.
+
No input. Returns an output bool '''Pending'''.
  
 
=== SetAudioOutVolume ===
 
=== SetAudioOutVolume ===
Set float playback volume for this interface.
+
Takes an input float '''AudioOutVolume'''. No output.
  
 
=== GetAudioOutVolume ===
 
=== GetAudioOutVolume ===
Get float playback volume for this interface. Default is 1.0.
+
No input. Returns an output float '''AudioOutVolume'''.
  
 
= audin:u =
 
= audin:u =
Line 115: Line 120:
 
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || ListAudioIns
+
| 0 || [[#ListAudioIns|ListAudioIns]]
 
|-
 
|-
| 1 || OpenAudioIn
+
| 1 || [[#OpenAudioIn|OpenAudioIn]]
 
|-
 
|-
| 2 || [3.0.0+] ListAudioInsAuto
+
| 2 || [3.0.0+] [[#ListAudioInsAuto|ListAudioInsAuto]]
 
|-
 
|-
| 3 || [3.0.0+] OpenAudioInAuto
+
| 3 || [3.0.0+] [[#OpenAudioInAuto|OpenAudioInAuto]]
 
|-
 
|-
| 4 || [3.0.0+] ListAudioInsAutoFiltered
+
| 4 || [3.0.0+] [[#ListAudioInsAutoFiltered|ListAudioInsAutoFiltered]]
 
|-
 
|-
| 5 || [5.0.0+] OpenAudioInProtocolSpecified
+
| 5 || [5.0.0+] [[#OpenAudioInProtocolSpecified|OpenAudioInProtocolSpecified]]
 
|}
 
|}
 +
 +
== ListAudioIns ==
 +
Takes a type-0x6 output buffer containing an array of [[#AudioInInfo]]. Returns an u32 '''Count'''.
 +
 +
== OpenAudioIn ==
 +
Takes a PID-descriptor, a type-0x5 input buffer '''NameIn''', a type-0x6 output buffer '''NameOut''', an input [[#AudioInParameter]], an input Process handle and an input [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]]. Returns an [[#IAudioIn]] and an an output [[#AudioInParameterInternal]].
 +
 +
== ListAudioInsAuto ==
 +
Same as [[#ListAudioIns]], but takes a type-0x22 output buffer instead.
 +
 +
== OpenAudioInAuto ==
 +
Same as [[#OpenAudioIn]], but takes a type-0x21 input buffer and a type-0x22 output buffer instead.
 +
 +
== ListAudioInsAutoFiltered ==
 +
Same as [[#ListAudioInsAuto]].
 +
 +
== OpenAudioInProtocolSpecified ==
 +
Same as [[#OpenAudioIn]], but takes an additional input u64 '''Protocol'''.
  
 
== IAudioIn ==
 
== IAudioIn ==
Line 135: Line 158:
 
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || [[#GetAudioInState]]
+
| 0 || [[#GetAudioInState|GetAudioInState]]
 
|-
 
|-
| 1 || Start
+
| 1 || [[#Start_2|Start]]
 
|-
 
|-
| 2 || Stop
+
| 2 || [[#Stop_2|Stop]]
 
|-
 
|-
| 3 || AppendAudioInBuffer
+
| 3 || [[#AppendAudioInBuffer|AppendAudioInBuffer]]
 
|-
 
|-
| 4 || RegisterBufferEvent
+
| 4 || [[#RegisterBufferEvent_2|RegisterBufferEvent]]
 
|-
 
|-
| 5 || GetReleasedAudioInBuffers
+
| 5 || [[#GetReleasedAudioInBuffers|GetReleasedAudioInBuffers]]
 
|-
 
|-
| 6 || ContainsAudioInBuffer
+
| 6 || [[#ContainsAudioInBuffer|ContainsAudioInBuffer]]
 
|-
 
|-
| 7 || [3.0.0+] AppendUacInBuffer
+
| 7 || [3.0.0+] [[#AppendUacInBuffer|AppendUacInBuffer]]
 
|-
 
|-
| 8 || [3.0.0+] AppendAudioInBufferAuto
+
| 8 || [3.0.0+] [[#AppendAudioInBufferAuto|AppendAudioInBufferAuto]]
 
|-
 
|-
| 9 || [3.0.0+] GetReleasedAudioInBuffersAuto
+
| 9 || [3.0.0+] [[#GetReleasedAudioInBuffersAuto|GetReleasedAudioInBuffersAuto]]
 
|-
 
|-
| 10 || [3.0.0+] AppendUacInBufferAuto
+
| 10 || [3.0.0+] [[#AppendUacInBufferAuto|AppendUacInBufferAuto]]
 
|-
 
|-
| 11 || [4.0.0+] GetAudioInBufferCount
+
| 11 || [4.0.0+] [[#GetAudioInBufferCount|GetAudioInBufferCount]]
 
|-
 
|-
| 12 || [4.0.0+] SetDeviceGain
+
| 12 || [4.0.0+] [[#SetDeviceGain|SetDeviceGain]]
 
|-
 
|-
| 13 || [4.0.0+] GetDeviceGain
+
| 13 || [4.0.0+] [[#GetDeviceGain|GetDeviceGain]]
 
|-
 
|-
| 14 || [6.0.0+] FlushAudioInBuffers
+
| 14 || [6.0.0+] [[#FlushAudioInBuffers|FlushAudioInBuffers]]
 
|}
 
|}
  
 
=== GetAudioInState ===
 
=== GetAudioInState ===
Returns an u32 '''AudioInState''' (0=Started, 1=Stopped).
+
No input. Returns an output [[#AudioInState]].
 +
 
 +
=== Start ===
 +
No input/output.
 +
 
 +
=== Stop ===
 +
No input/output.
 +
 
 +
=== AppendAudioInBuffer ===
 +
Takes a type-0x5 input buffer containing an [[#AudioInBuffer]] and an input u64 '''BufferClientPtr'''. No output.
 +
 
 +
=== RegisterBufferEvent ===
 +
No input. Returns an output Event handle.
 +
 
 +
The event is signalled when a buffer is released.
 +
 
 +
=== GetReleasedAudioInBuffers ===
 +
Takes a type-0x6 output buffer '''AudioBuffer'''. Returns an output u32 '''Count'''.
 +
 
 +
'''AudioBuffer''' will be filled with the identifiers from [[#AppendAudioInBuffer]] of audio buffers that have been released.
 +
 
 +
=== ContainsAudioInBuffer ===
 +
Takes an input u64 '''AudioBufferPointer'''. Returns an output bool '''Contains'''.
 +
 
 +
=== AppendUacInBuffer ===
 +
Takes a type-0x5 input buffer containing an '''UacInBuffer''', an input u64 '''BufferClientPtr''' and an input Event handle. No output.
 +
 
 +
=== AppendAudioInBufferAuto ===
 +
Same as [[#AppendAudioInBuffer]], but takes a type-0x21 buffer instead.
 +
 
 +
=== GetReleasedAudioInBuffersAuto ===
 +
Same as [[#GetReleasedAudioInBuffer]], but takes a type-0x22 buffer instead.
 +
 
 +
=== AppendUacInBufferAuto ===
 +
Same as [[#AppendUacInBuffer]], but takes a type-0x21 buffer instead.
 +
 
 +
=== GetAudioInBufferCount ===
 +
No input. Returns an output u32 '''AudioInBufferCount'''.
 +
 
 +
=== SetDeviceGain ===
 +
Takes an input float '''DeviceGain'''. No output.
 +
 
 +
=== GetDeviceGain ===
 +
No input. Returns an output float '''DeviceGain'''.
 +
 
 +
=== FlushAudioInBuffers ===
 +
No input. Returns an output bool '''Pending'''.
  
 
= audrec:u =
 
= audrec:u =
Line 176: Line 245:
 
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || OpenFinalOutputRecorder
+
| 0 || [[#OpenFinalOutputRecorder]]
 
|}
 
|}
 +
 +
== OpenFinalOutputRecorder ==
 +
Takes an input [[#FinalOutputRecorderParameter]], an input Process handle and an input [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]]. Returns an [[#IFinalOutputRecorder]] and an output [[#FinalOutputRecorderParameterInternal]].
  
 
== IFinalOutputRecorder ==
 
== IFinalOutputRecorder ==
Line 186: Line 258:
 
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || GetFinalOutputRecorderState
+
| 0 || [[#GetFinalOutputRecorderState|GetFinalOutputRecorderState]]
 
|-
 
|-
| 1 || Start
+
| 1 || [[#Start_3|Start]]
 
|-
 
|-
| 2 || Stop
+
| 2 || [[#Stop_3|Stop]]
 
|-
 
|-
| 3 || AppendFinalOutputRecorderBuffer
+
| 3 || [[#AppendFinalOutputRecorderBuffer|AppendFinalOutputRecorderBuffer]]
 
|-
 
|-
| 4 || RegisterBufferEvent
+
| 4 || [[#RegisterBufferEvent_3|RegisterBufferEvent]]
 
|-
 
|-
| 5 || GetReleasedFinalOutputRecorderBuffers
+
| 5 || [[#GetReleasedFinalOutputRecorderBuffers|GetReleasedFinalOutputRecorderBuffers]]
 
|-
 
|-
| 6 || ContainsFinalOutputRecorderBuffer
+
| 6 || [[#ContainsFinalOutputRecorderBuffer|ContainsFinalOutputRecorderBuffer]]
 
|-
 
|-
| 7 || GetFinalOutputRecorderBufferEndTime
+
| 7 || [[#GetFinalOutputRecorderBufferEndTime|GetFinalOutputRecorderBufferEndTime]]
 
|-
 
|-
| 8 || [3.0.0+] AppendFinalOutputRecorderBufferAuto
+
| 8 || [3.0.0+] [[#AppendFinalOutputRecorderBufferAuto|AppendFinalOutputRecorderBufferAuto]]
 
|-
 
|-
| 9 || [3.0.0+] GetReleasedFinalOutputRecorderBuffersAuto
+
| 9 || [3.0.0+] [[#GetReleasedFinalOutputRecorderBuffersAuto|GetReleasedFinalOutputRecorderBuffersAuto]]
 
|-
 
|-
| 10 || [6.0.0+] FlushFinalOutputRecorderBuffers
+
| 10 || [6.0.0+] [[#FlushFinalOutputRecorderBuffers|FlushFinalOutputRecorderBuffers]]
 
|-
 
|-
| 11 || [9.0.0+] AttachWorkBuffer
+
| 11 || [9.0.0+] [[#AttachWorkBuffer|AttachWorkBuffer]]
 
|}
 
|}
 +
 +
=== GetFinalOutputRecorderState ===
 +
No input. Returns an output [[#FinalOutputRecorderState]].
 +
 +
=== Start ===
 +
No input/output.
 +
 +
=== Stop ===
 +
No input/output.
 +
 +
=== AppendFinalOutputRecorderBuffer ===
 +
Takes a type-0x5 input buffer containing an [[#FinalOutputRecorderBuffer]] and an input u64 '''BufferClientPtr'''. No output.
 +
 +
=== RegisterBufferEvent ===
 +
No input. Returns an output Event handle.
 +
 +
The event is signalled when a buffer is released.
 +
 +
=== GetReleasedFinalOutputRecorderBuffers ===
 +
Takes a type-0x6 output buffer '''FinalOutputRecorderBuffer'''. Returns two output u64s '''Count''' and '''Released'''.
 +
 +
'''FinalOutputRecorderBuffer''' will be filled with the identifiers from [[#AppendFinalOutputRecorderBuffer]] of recorder buffers that have been released.
 +
 +
=== ContainsFinalOutputRecorderBuffer ===
 +
Takes an input u64 '''FinalOutputRecorderBufferPointer'''. Returns an output bool '''Contains'''.
 +
 +
=== GetFinalOutputRecorderBufferEndTime ===
 +
Takes an input u64 '''FinalOutputRecorderBufferPointer'''. Returns an output u64 '''Released'''.
 +
 +
=== AppendFinalOutputRecorderBufferAuto ===
 +
Same as [[#AppendFinalOutputRecorderBuffer]], but takes a type-0x21 buffer instead.
 +
 +
=== GetReleasedFinalOutputRecorderBuffersAuto ===
 +
Same as [[#GetReleasedFinalOutputRecorderBuffers]], but takes a type-0x22 buffer instead.
 +
 +
=== FlushFinalOutputRecorderBuffers ===
 +
No input. Returns an output bool '''Pending'''.
 +
 +
=== AttachWorkBuffer ===
 +
Takes an input [[#FinalOutputRecorderWorkBufferParameterInternal]]. No output.
  
 
= auddev =
 
= auddev =
Line 787: Line 899:
 
|-
 
|-
 
| 6 || Adpcm
 
| 6 || Adpcm
 +
|}
 +
 +
= AudioOutState =
 +
This is "nn::audio::AudioOutState".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Value || Name
 +
|-
 +
| 0 || Started
 +
|-
 +
| 1 || Stopped
 +
|}
 +
 +
= AudioInState =
 +
This is "nn::audio::AudioInState".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Value || Name
 +
|-
 +
| 0 || Started
 +
|-
 +
| 1 || Stopped
 +
|}
 +
 +
= FinalOutputRecorderState =
 +
This is "nn::audio::FinalOutputRecorderState".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Value || Name
 +
|-
 +
| 0 || Started
 +
|-
 +
| 1 || Stopped
 +
|}
 +
 +
= AudioOutInfo =
 +
This is "nn::audio::AudioOutInfo".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x100
 +
| Name
 +
|}
 +
 +
= AudioInInfo =
 +
This is "nn::audio::AudioInInfo".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x100
 +
| Name
 +
|}
 +
 +
= AudioOutParameter =
 +
This is "nn::audio::AudioOutParameter".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x4
 +
| SampleRate
 +
|-
 +
| 0x4
 +
| 0x2
 +
| ChannelCount
 +
|-
 +
| 0x6
 +
| 0x2
 +
| Reserved
 +
|}
 +
 +
= AudioInParameter =
 +
This is "nn::audio::AudioInParameter".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x4
 +
| SampleRate
 +
|-
 +
| 0x4
 +
| 0x2
 +
| ChannelCount
 +
|-
 +
| 0x6
 +
| 0x2
 +
| Reserved
 +
|}
 +
 +
= AudioOutParameterInternal =
 +
This is "nn::audio::detail::AudioOutParameterInternal".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x4
 +
| SampleRate
 +
|-
 +
| 0x4
 +
| 0x4
 +
| ChannelCount
 +
|-
 +
| 0x8
 +
| 0x4
 +
| SampleFormat
 +
|-
 +
| 0xC
 +
| 0x4
 +
| State
 +
|}
 +
 +
= AudioInParameterInternal =
 +
This is "nn::audio::detail::AudioInParameterInternal".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x4
 +
| SampleRate
 +
|-
 +
| 0x4
 +
| 0x4
 +
| ChannelCount
 +
|-
 +
| 0x8
 +
| 0x4
 +
| SampleFormat
 +
|-
 +
| 0xC
 +
| 0x4
 +
| State
 
|}
 
|}
  
Line 794: Line 1,066:
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Offset || Size || Description
+
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x8
 +
| Pointer to next buffer (unused)
 +
|-
 +
| 0x8
 +
| 0x8
 +
| Pointer to sample buffer
 +
|-
 +
| 0x10
 +
| 0x8
 +
| Capacity of sample buffer
 +
|-
 +
| 0x18
 +
| 0x8
 +
| Size of data in the sample buffer
 +
|-
 +
| 0x20
 +
| 0x8
 +
| Offset of data in the sample buffer (unused/ignored?)
 +
|}
 +
 
 +
= AudioInBuffer =
 +
This is "nn::audio::AudioInBuffer".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x8
 +
| Pointer to next buffer (unused)
 
|-
 
|-
| 0x00 || 8 || Pointer to next buffer (unused)
+
| 0x8
 +
| 0x8
 +
| Pointer to sample buffer
 
|-
 
|-
| 0x08 || 8 || Pointer to sample buffer
+
| 0x10
 +
| 0x8
 +
| Capacity of sample buffer
 
|-
 
|-
| 0x10 || 8 || Capacity of sample buffer
+
| 0x18
 +
| 0x8
 +
| Size of data in the sample buffer
 
|-
 
|-
| 0x18 || 8 || Size of data in the sample buffer
+
| 0x20
 +
| 0x8
 +
| Offset of data in the sample buffer (unused/ignored?)
 +
|}
 +
 
 +
= FinalOutputRecorderBuffer =
 +
This is "nn::audio::FinalOutputRecorderBuffer".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x8
 +
| Released
 +
|-
 +
| 0x8
 +
| 0x8
 +
| Pointer to next buffer (unused)
 +
|-
 +
| 0x10
 +
| 0x8
 +
| Pointer to sample buffer
 +
|-
 +
| 0x18
 +
| 0x8
 +
| Capacity of sample buffer
 +
|-
 +
| 0x20
 +
| 0x8
 +
| Size of data in the sample buffer
 +
|-
 +
| 0x28
 +
| 0x8
 +
| Offset of data in the sample buffer (unused/ignored?)
 +
|}
 +
 
 +
= FinalOutputRecorderParameter =
 +
This is "nn::audio::FinalOutputRecorderParameter".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x4
 +
| SampleRate
 +
|}
 +
 
 +
= FinalOutputRecorderParameterInternal =
 +
This is "nn::audio::detail::FinalOutputRecorderParameterInternal".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x4
 +
| SampleRate
 +
|-
 +
| 0x4
 +
| 0x4
 +
| ChannelCount
 +
|-
 +
| 0x8
 +
| 0x4
 +
| SampleFormat
 +
|-
 +
| 0xC
 +
| 0x4
 +
| State
 +
|}
 +
 
 +
= FinalOutputRecorderWorkBufferParameterInternal =
 +
This is "nn::audio::detail::FinalOutputRecorderWorkBufferParameterInternal".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x4
 +
|
 +
|-
 +
| 0x4
 +
| 0x4
 +
|
 +
|-
 +
| 0x8
 +
| 0x4
 +
|
 +
|-
 +
| 0xC
 +
| 0x4
 +
|
 
|-
 
|-
| 0x20 || 8 || Offset of data in the sample buffer (unused/ignored?)
+
| 0x10
 +
| 0x8
 +
|  
 
|}
 
|}
  
Line 816: Line 1,234:
 
| 0x0
 
| 0x0
 
| 0x4
 
| 0x4
| Sample rate (Hz)
+
| SampleRate
 
|-
 
|-
 
| 0x4
 
| 0x4
 
| 0x4
 
| 0x4
| Number of channels
+
| ChannelCount
 
|-
 
|-
 
| 0x8
 
| 0x8

Revision as of 18:48, 24 February 2021

Contents

audout:u

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

Cmd Name
0 ListAudioOuts
1 OpenAudioOut
2 [3.0.0+] ListAudioOutsAuto
3 [3.0.0+] OpenAudioOutAuto

ListAudioOuts

Takes a type-0x6 output buffer containing an array of #AudioOutInfo. Returns an u32 Count.

OpenAudioOut

Takes a PID-descriptor, a type-0x5 input buffer NameIn, a type-0x6 output buffer NameOut, an input #AudioOutParameter, an input Process handle and an input AppletResourceUserId. Returns an #IAudioOut and an an output #AudioOutParameterInternal.

ListAudioOutsAuto

Same as #ListAudioOuts, but takes a type-0x22 output buffer instead.

OpenAudioOutAuto

Same as #OpenAudioOut, but takes a type-0x21 input buffer and a type-0x22 output buffer instead.

IAudioOut

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

Cmd Name
0 GetAudioOutState
1 Start
2 Stop
3 AppendAudioOutBuffer
4 RegisterBufferEvent
5 GetReleasedAudioOutBuffers
6 ContainsAudioOutBuffer
7 [3.0.0+] AppendAudioOutBufferAuto
8 [3.0.0+] GetReleasedAudioOutBuffersAuto
9 [4.0.0+] GetAudioOutBufferCount
10 [4.0.0+] GetAudioOutPlayedSampleCount
11 [4.0.0+] FlushAudioOutBuffers
12 [6.0.0+] SetAudioOutVolume
13 [6.0.0+] GetAudioOutVolume

GetAudioOutState

No input. Returns an output #AudioOutState.

Start

No input/output.

Starts audio playback using data from appended buffers.

Stop

No input/output.

Stops audio playback. This waits for audio playback to finish before returning.

AppendAudioOutBuffer

Takes a type-0x5 input buffer containing an #AudioOutBuffer and an input u64 BufferClientPtr. No output.

RegisterBufferEvent

No input. Returns an output Event handle.

The event is signalled when a buffer is released.

GetReleasedAudioOutBuffers

Takes a type-0x6 output buffer AudioBuffer. Returns an output u32 Count.

AudioBuffer will be filled with the identifiers from #AppendAudioOutBuffer of audio buffers that have been released.

ContainsAudioOutBuffer

Takes an input u64 AudioBufferPointer. Returns an output bool Contains.

AppendAudioOutBufferAuto

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

GetReleasedAudioOutBuffersAuto

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

GetAudioOutBufferCount

No input. Returns an output u32 AudioOutBufferCount.

GetAudioOutPlayedSampleCount

No input. Returns an output u64 AudioOutPlayedSampleCount.

FlushAudioOutBuffers

No input. Returns an output bool Pending.

SetAudioOutVolume

Takes an input float AudioOutVolume. No output.

GetAudioOutVolume

No input. Returns an output float AudioOutVolume.

audin:u

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

Cmd Name
0 ListAudioIns
1 OpenAudioIn
2 [3.0.0+] ListAudioInsAuto
3 [3.0.0+] OpenAudioInAuto
4 [3.0.0+] ListAudioInsAutoFiltered
5 [5.0.0+] OpenAudioInProtocolSpecified

ListAudioIns

Takes a type-0x6 output buffer containing an array of #AudioInInfo. Returns an u32 Count.

OpenAudioIn

Takes a PID-descriptor, a type-0x5 input buffer NameIn, a type-0x6 output buffer NameOut, an input #AudioInParameter, an input Process handle and an input AppletResourceUserId. Returns an #IAudioIn and an an output #AudioInParameterInternal.

ListAudioInsAuto

Same as #ListAudioIns, but takes a type-0x22 output buffer instead.

OpenAudioInAuto

Same as #OpenAudioIn, but takes a type-0x21 input buffer and a type-0x22 output buffer instead.

ListAudioInsAutoFiltered

Same as #ListAudioInsAuto.

OpenAudioInProtocolSpecified

Same as #OpenAudioIn, but takes an additional input u64 Protocol.

IAudioIn

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

Cmd Name
0 GetAudioInState
1 Start
2 Stop
3 AppendAudioInBuffer
4 RegisterBufferEvent
5 GetReleasedAudioInBuffers
6 ContainsAudioInBuffer
7 [3.0.0+] AppendUacInBuffer
8 [3.0.0+] AppendAudioInBufferAuto
9 [3.0.0+] GetReleasedAudioInBuffersAuto
10 [3.0.0+] AppendUacInBufferAuto
11 [4.0.0+] GetAudioInBufferCount
12 [4.0.0+] SetDeviceGain
13 [4.0.0+] GetDeviceGain
14 [6.0.0+] FlushAudioInBuffers

GetAudioInState

No input. Returns an output #AudioInState.

Start

No input/output.

Stop

No input/output.

AppendAudioInBuffer

Takes a type-0x5 input buffer containing an #AudioInBuffer and an input u64 BufferClientPtr. No output.

RegisterBufferEvent

No input. Returns an output Event handle.

The event is signalled when a buffer is released.

GetReleasedAudioInBuffers

Takes a type-0x6 output buffer AudioBuffer. Returns an output u32 Count.

AudioBuffer will be filled with the identifiers from #AppendAudioInBuffer of audio buffers that have been released.

ContainsAudioInBuffer

Takes an input u64 AudioBufferPointer. Returns an output bool Contains.

AppendUacInBuffer

Takes a type-0x5 input buffer containing an UacInBuffer, an input u64 BufferClientPtr and an input Event handle. No output.

AppendAudioInBufferAuto

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

GetReleasedAudioInBuffersAuto

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

AppendUacInBufferAuto

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

GetAudioInBufferCount

No input. Returns an output u32 AudioInBufferCount.

SetDeviceGain

Takes an input float DeviceGain. No output.

GetDeviceGain

No input. Returns an output float DeviceGain.

FlushAudioInBuffers

No input. Returns an output bool Pending.

audrec:u

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

Cmd Name
0 #OpenFinalOutputRecorder

OpenFinalOutputRecorder

Takes an input #FinalOutputRecorderParameter, an input Process handle and an input AppletResourceUserId. Returns an #IFinalOutputRecorder and an output #FinalOutputRecorderParameterInternal.

IFinalOutputRecorder

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

Cmd Name
0 GetFinalOutputRecorderState
1 Start
2 Stop
3 AppendFinalOutputRecorderBuffer
4 RegisterBufferEvent
5 GetReleasedFinalOutputRecorderBuffers
6 ContainsFinalOutputRecorderBuffer
7 GetFinalOutputRecorderBufferEndTime
8 [3.0.0+] AppendFinalOutputRecorderBufferAuto
9 [3.0.0+] GetReleasedFinalOutputRecorderBuffersAuto
10 [6.0.0+] FlushFinalOutputRecorderBuffers
11 [9.0.0+] AttachWorkBuffer

GetFinalOutputRecorderState

No input. Returns an output #FinalOutputRecorderState.

Start

No input/output.

Stop

No input/output.

AppendFinalOutputRecorderBuffer

Takes a type-0x5 input buffer containing an #FinalOutputRecorderBuffer and an input u64 BufferClientPtr. No output.

RegisterBufferEvent

No input. Returns an output Event handle.

The event is signalled when a buffer is released.

GetReleasedFinalOutputRecorderBuffers

Takes a type-0x6 output buffer FinalOutputRecorderBuffer. Returns two output u64s Count and Released.

FinalOutputRecorderBuffer will be filled with the identifiers from #AppendFinalOutputRecorderBuffer of recorder buffers that have been released.

ContainsFinalOutputRecorderBuffer

Takes an input u64 FinalOutputRecorderBufferPointer. Returns an output bool Contains.

GetFinalOutputRecorderBufferEndTime

Takes an input u64 FinalOutputRecorderBufferPointer. Returns an output u64 Released.

AppendFinalOutputRecorderBufferAuto

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

GetReleasedFinalOutputRecorderBuffersAuto

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

FlushFinalOutputRecorderBuffers

No input. Returns an output bool Pending.

AttachWorkBuffer

Takes an input #FinalOutputRecorderWorkBufferParameterInternal. No output.

auddev

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

This was added with [6.0.0+].

Cmd Name
0 EnableDspUsageMeasurement
1 DisableDspUsageMeasurement
6 GetDspUsage

audren:u

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

Cmd Name
0 OpenAudioRenderer
1 GetWorkBufferSize
2 #GetAudioDeviceService
3 [3.0.0+] OpenAudioRendererForManualExecution
4 [4.0.0+] GetAudioDeviceServiceWithRevisionInfo

GetAudioDeviceService

Takes an input u64 AppletResourceUserId, returns an output #IAudioDevice.

IAudioRenderer

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

Cmd Name
0 #GetSampleRate
1 #GetSampleCount
2 #GetMixBufferCount
3 #GetState
4 RequestUpdate
5 Start
6 Stop
7 QuerySystemEvent
8 #SetRenderingTimeLimit
9 #GetRenderingTimeLimit
10 [3.0.0+] RequestUpdateAuto
11 [3.0.0+] ExecuteAudioRendererRendering

GetSampleRate

No input. Returns an u32 SampleRate.

GetSampleCount

No input. Returns an u32 SampleCount.

GetMixBufferCount

No input. Returns an u32 MixBufferCount.

GetState

No input. Returns an u32 State (0=Started, 1=Stopped).

SetRenderingTimeLimit

Takes an u32 RenderingTimeLimit. No output.

GetRenderingTimeLimit

No input. Returns an u32 RenderingTimeLimit.

IAudioDevice

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

Cmd Name
0 #ListAudioDeviceName
1 #SetAudioDeviceOutputVolume
2 #GetAudioDeviceOutputVolume
3 GetActiveAudioDeviceName
4 QueryAudioDeviceSystemEvent
5 GetActiveChannelCount
6 [3.0.0+] #ListAudioDeviceNameAuto
7 [3.0.0+] #SetAudioDeviceOutputVolumeAuto
8 [3.0.0+] #GetAudioDeviceOutputVolumeAuto
10 [3.0.0+] GetActiveAudioDeviceNameAuto
11 [3.0.0+] QueryAudioDeviceInputEvent
12 [3.0.0+] QueryAudioDeviceOutputEvent
13 [5.0.0+] GetAudioSystemMasterVolumeSetting

ListAudioDeviceName

Takes a type-0x6 output buffer containing an array of DeviceName. Returns an output s32 for total number of output entries.

SetAudioDeviceOutputVolume

Takes a type-0x5 input buffer containing the DeviceName and a float. No output.

GetAudioDeviceOutputVolume

Takes a type-0x5 input buffer containing the DeviceName. Returns an output float.

ListAudioDeviceNameAuto

Takes a type-0x22 output buffer containing an array of DeviceName. Returns an output s32 for total number of output entries.

SetAudioDeviceOutputVolumeAuto

Takes a type-0x21 input buffer containing the DeviceName and a float. No output.

GetAudioDeviceOutputVolumeAuto

Takes a type-0x21 input buffer containing the DeviceName. Returns an output float.

audout:a

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

This was removed with [11.0.0+].

Cmd Name
0 RequestSuspend
1 RequestResume
2 GetProcessMasterVolume
3 SetProcessMasterVolume
4 [4.0.0+] GetProcessRecordVolume
5 [4.0.0+] SetProcessRecordVolume

[4.0.0+] RequestSuspend/RequestResume no longer returns an output handle.

audin:a

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

This was removed with [11.0.0+].

Cmd Name
0 RequestSuspend
1 RequestResume
2 GetProcessMasterVolume
3 SetProcessMasterVolume

[4.0.0+] RequestSuspend/RequestResume no longer returns an output handle.

audrec:a

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

Cmd Name
0 RequestSuspend
1 RequestResume

[4.0.0+] RequestSuspend/RequestResume no longer returns an output handle.

audren:a

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

This was removed with [11.0.0+].

Cmd Name
0 RequestSuspend
1 RequestResume
2 GetProcessMasterVolume
3 SetProcessMasterVolume
4 RegisterAppletResourceUserId
5 UnregisterAppletResourceUserId
6 [4.0.0+] GetProcessRecordVolume
7 [4.0.0+] SetProcessRecordVolume

[4.0.0+] RequestSuspend/RequestResume no longer returns an output handle.

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".

These were removed with [11.0.0+].

Cmd Name
0 #RequestSuspend
1 #RequestResume

RequestSuspend

Takes an u64 AppletResourceUserId.

RequestResume

Takes an u64 AppletResourceUserId.

audctl

This is "nn::audioctrl::detail::IAudioController".

Cmd Name
0 GetTargetVolume
1 SetTargetVolume
2 GetTargetVolumeMin
3 GetTargetVolumeMax
4 IsTargetMute
5 SetTargetMute
6 IsTargetConnected
7 SetDefaultTarget
8 GetDefaultTarget
9 GetAudioOutputMode
10 SetAudioOutputMode
11 SetForceMutePolicy
12 GetForceMutePolicy
13 GetOutputModeSetting
14 SetOutputModeSetting
15 SetOutputTarget
16 SetInputTargetForceEnabled
17 [3.0.0+] SetHeadphoneOutputLevelMode
18 [3.0.0+] GetHeadphoneOutputLevelMode
19 [3.0.0+] AcquireAudioVolumeUpdateEventForPlayReport
20 [3.0.0+] AcquireAudioOutputDeviceUpdateEventForPlayReport
21 [3.0.0+] GetAudioOutputTargetForPlayReport
22 [3.0.0+] NotifyHeadphoneVolumeWarningDisplayedEvent
23 [4.0.0+] SetSystemOutputMasterVolume
24 [4.0.0+] GetSystemOutputMasterVolume
25 [4.0.0+] GetAudioVolumeDataForPlayReport
26 [4.0.0+] #UpdateHeadphoneSettings
27 [7.0.0+] SetVolumeMappingTableForDev
28 [10.0.0+] GetAudioOutputChannelCountForPlayReport
29 [10.0.0+] BindAudioOutputChannelCountUpdateEventForPlayReport

UpdateHeadphoneSettings

Takes one input bool. No output. NS calls this with the result of IParentalControlService::IsRestrictionEnabled[1].

codecctl

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

This service no longer exists in [3.0.0+].

Cmd Name
0 #Initialize
1 #Finalize
2 #Sleep
3 #Wake
4 #SetVolume
5 #GetVolumeMax
6 #GetVolumeMin
7 #SetActiveTarget
8 #GetActiveTarget
9 #BindHeadphoneMicJackInterrupt
10 #IsHeadphoneMicJackInserted
11 #ClearHeadphoneMicJackInterrupt
12 #IsRequested

Initialize

No input/output.

Finalize

No input/output.

Sleep

No input/output.

Wake

No input/output.

SetVolume

Takes an u32 Volume. No output.

GetVolumeMax

No input. Returns an u32 VolumeMax.

GetVolumeMin

No input. Returns an u32 VolumeMin.

SetActiveTarget

Takes an u32 Target. No output.

GetActiveTarget

No input. Returns an u32 Target.

BindHeadphoneMicJackInterrupt

No input. Returns an event handle.

IsHeadphoneMicJackInserted

No input. Returns a bool.

ClearHeadphoneMicJackInterrupt

No input/output.

IsRequested

No input. Returns a bool.

hwopus

This is "nn::codec::detail::IHardwareOpusDecoderManager".

Cmd Name
0 #OpenHardwareOpusDecoder
1 #GetWorkBufferSize
2 [3.0.0+] #OpenHardwareOpusDecoderForMultiStream
3 [3.0.0+] #GetWorkBufferSizeForMultiStream

Official sw can use either software libopus, or hwopus via "nn::codec::HardwareOpus*" (separate from the former).

OpenHardwareOpusDecoder

Takes two s32s SampleRate and ChannelCount packed as an u64, an u32 WorkBufferSize and a TransferMemory handle for WorkBuffer. Returns an #IHardwareOpusDecoder object. The TransferMemory is created by the user-process with permissions=0.

GetWorkBufferSize

Takes two s32s SampleRate and ChannelCount packed as an u64. Returns the u32 required size for the decoder's work buffer. Official user-processes align the output size to page-alignment.

OpenHardwareOpusDecoderForMultiStream

Takes a type-0x19 input buffer, an u32 WorkBufferSize and a TransferMemory handle for WorkBuffer. Returns an #IHardwareOpusDecoder object. The TransferMemory is created by the user-process with permissions=0.

The input buffer is a #MultiStreamParameters struct. The user-process initializes this struct the same way as #GetWorkBufferSizeForMultiStream, except that an u8-array specified by the user is copied to +0x10 with size ChannelCount, when ChannelCount above 0.

GetWorkBufferSizeForMultiStream

Takes a type-0x19 input buffer. Returns the u32 required size for the decoder's work buffer. Official user-processes align the output size to page-alignment.

The input buffer is a #MultiStreamParameters struct.

IHardwareOpusDecoder

This is "nn::codec::detail::IHardwareOpusDecoder".

Cmd Name
0 [4.0.0+] #DecodeInterleavedOld ([1.0.0-3.0.2] DecodeInterleaved)
1 #SetContext
2 [4.0.0+] #DecodeInterleavedForMultiStreamOld ([3.0.0-3.0.2] DecodeInterleavedForMultiStream)
3 [3.0.0+] #SetContextForMultiStream
4 [6.0.0+] #DecodeInterleavedWithPerfOld ([4.0.0-5.1.0] DecodeInterleavedWithPerf)
5 [6.0.0+] #DecodeInterleavedForMultiStreamWithPerfOld ([4.0.0-5.1.0] DecodeInterleavedForMultiStreamWithPerf)
6 [6.0.0+] DecodeInterleavedWithPerfAndResetOld ([6.0.0-6.2.0] DecodeInterleaved)
7 [6.0.0+] DecodeInterleavedForMultiStreamWithPerfAndResetOld ([6.0.0-6.2.0] DecodeInterleavedForMultiStream)
8 [7.0.0+] #DecodeInterleaved
9 [7.0.0+] #DecodeInterleavedForMultiStream

DecodeInterleavedOld

Takes a type-0x5 input buffer (OpusDataIn) and a type-0x6 output buffer (PcmDataOut). Decodes the Opus source data to PCM and returns output s32 DecodedDataSize and s32 DecodedSampleCount.

Calls the same func as #DecodeInterleaved internally with flag=0 and out_u64_ptr=NULL.

SetContext

Takes a type-0x5 input buffer (DecoderContextIn). Sends the unknown context data to the hardware decoder. The input buffer is unused.

DecodeInterleavedForMultiStreamOld

Takes a type-0x5 input buffer (OpusDataIn) and a type-0x6 output buffer (PcmDataOut). Decodes the Opus source data to PCM and returns output s32 DecodedDataSize and s32 DecodedSampleCount.

Calls the same func as #DecodeInterleavedForMultiStream internally with flag=0 and out_u64_ptr=NULL.

SetContextForMultiStream

Takes a type-0x5 input buffer (DecoderContextIn). Sends the unknown context data to the hardware decoder.

DecodeInterleavedWithPerfOld

Takes a type-0x5 input buffer (OpusDataIn) and a type-0x46 output buffer (PcmDataOut). Decodes the Opus source data to PCM and returns output s32 DecodedDataSize, s32 DecodedSampleCount, and an u64.

The output u64 is ignored by official user-processes.

Calls the same func as #DecodeInterleaved internally with flag=0.

DecodeInterleavedForMultiStreamWithPerfOld

Takes a type-0x5 input buffer (OpusDataIn) and a type-0x46 output buffer (PcmDataOut). Decodes the Opus source data to PCM and returns output s32 DecodedDataSize, s32 DecodedSampleCount, and an u64.

The output u64 is ignored by official user-processes.

Calls the same func as #DecodeInterleavedForMultiStream internally with flag=0.

DecodeInterleaved

Takes an input u8 bool flag, a type-0x5 input buffer (OpusDataIn) and a type-0x46 output buffer (PcmDataOut). Decodes the Opus source data to PCM and returns output s32 DecodedDataSize, s32 DecodedSampleCount, and an u64.

The bool flag indicates whether or not a reset of the decoder context is being requested.

DecodeInterleavedForMultiStream

Takes an input u8 bool flag, a type-0x5 input buffer (OpusDataIn) and a type-0x46 output buffer (PcmDataOut). Decodes the Opus source data to PCM and returns output s32 DecodedDataSize, s32 DecodedSampleCount, and an u64.

The bool flag indicates whether or not a reset of the decoder context is being requested.

auddebug

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

This service doesn't exist in retail units.

Cmd Name
0 ProfilerStart
1 ProfilerStop
2 CpuProfilerStart
3 CpuProfilerStop

aud:a

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

This was added with [11.0.0+].

Cmd Name
0 RegisterAppletResourceUserId
1 UnregisterAppletResourceUserId
2 RequestSuspendAudio
3 RequestResumeAudio
4 GetAudioOutputProcessMasterVolume
5 SetAudioOutputProcessMasterVolume
6 GetAudioInputProcessMasterVolume
7 SetAudioInputProcessMasterVolume
8 GetAudioOutputProcessRecordVolume
9 SetAudioOutputProcessRecordVolume

aud:d

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

This was added with [11.0.0+].

Cmd Name
0 RequestSuspendAudioForDebug
1 RequestResumeAudioForDebug

SampleFormat

This is "nn::audio::SampleFormat".

Value Name
0 Invalid
1 PcmInt8
2 PcmInt16
3 PcmInt24
4 PcmInt32
5 PcmFloat
6 Adpcm

AudioOutState

This is "nn::audio::AudioOutState".

Value Name
0 Started
1 Stopped

AudioInState

This is "nn::audio::AudioInState".

Value Name
0 Started
1 Stopped

FinalOutputRecorderState

This is "nn::audio::FinalOutputRecorderState".

Value Name
0 Started
1 Stopped

AudioOutInfo

This is "nn::audio::AudioOutInfo".

Offset Size Description
0x0 0x100 Name

AudioInInfo

This is "nn::audio::AudioInInfo".

Offset Size Description
0x0 0x100 Name

AudioOutParameter

This is "nn::audio::AudioOutParameter".

Offset Size Description
0x0 0x4 SampleRate
0x4 0x2 ChannelCount
0x6 0x2 Reserved

AudioInParameter

This is "nn::audio::AudioInParameter".

Offset Size Description
0x0 0x4 SampleRate
0x4 0x2 ChannelCount
0x6 0x2 Reserved

AudioOutParameterInternal

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

Offset Size Description
0x0 0x4 SampleRate
0x4 0x4 ChannelCount
0x8 0x4 SampleFormat
0xC 0x4 State

AudioInParameterInternal

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

Offset Size Description
0x0 0x4 SampleRate
0x4 0x4 ChannelCount
0x8 0x4 SampleFormat
0xC 0x4 State

AudioOutBuffer

This is "nn::audio::AudioOutBuffer".

Offset Size Description
0x0 0x8 Pointer to next buffer (unused)
0x8 0x8 Pointer to sample buffer
0x10 0x8 Capacity of sample buffer
0x18 0x8 Size of data in the sample buffer
0x20 0x8 Offset of data in the sample buffer (unused/ignored?)

AudioInBuffer

This is "nn::audio::AudioInBuffer".

Offset Size Description
0x0 0x8 Pointer to next buffer (unused)
0x8 0x8 Pointer to sample buffer
0x10 0x8 Capacity of sample buffer
0x18 0x8 Size of data in the sample buffer
0x20 0x8 Offset of data in the sample buffer (unused/ignored?)

FinalOutputRecorderBuffer

This is "nn::audio::FinalOutputRecorderBuffer".

Offset Size Description
0x0 0x8 Released
0x8 0x8 Pointer to next buffer (unused)
0x10 0x8 Pointer to sample buffer
0x18 0x8 Capacity of sample buffer
0x20 0x8 Size of data in the sample buffer
0x28 0x8 Offset of data in the sample buffer (unused/ignored?)

FinalOutputRecorderParameter

This is "nn::audio::FinalOutputRecorderParameter".

Offset Size Description
0x0 0x4 SampleRate

FinalOutputRecorderParameterInternal

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

Offset Size Description
0x0 0x4 SampleRate
0x4 0x4 ChannelCount
0x8 0x4 SampleFormat
0xC 0x4 State

FinalOutputRecorderWorkBufferParameterInternal

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

Offset Size Description
0x0 0x4
0x4 0x4
0x8 0x4
0xC 0x4
0x10 0x8

MultiStreamParameters

Offset Size Description
0x0 0x4 SampleRate
0x4 0x4 ChannelCount
0x8 0x4 Number of streams
0xC 0x4 Number of stereo streams
0x10 0x100 u8 array of channel mappings