Changes

no edit summary
Line 1: Line 1:  
= audout:u =
 
= audout:u =
 +
This is "nn::audio::detail::IAudioOutManager".
 +
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
 
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || ListAudioOuts
+
| 0 || [[#ListAudioOuts|ListAudioOuts]]
 +
|-
 +
| 1 || [[#OpenAudioOut|OpenAudioOut]]
 +
|-
 +
| 2 || [3.0.0+] [[#ListAudioOutsAuto|ListAudioOutsAuto]]
 
|-
 
|-
| 1 || [[#OpenAudioOut]]
+
| 3 || [3.0.0+] [[#OpenAudioOutAuto|OpenAudioOutAuto]]
 
|}
 
|}
 +
 +
== ListAudioOuts ==
 +
Takes a type-0x6 output buffer containing an array of [[#AudioOutInfo]]. Returns an u32 '''Count'''.
    
== OpenAudioOut ==
 
== OpenAudioOut ==
Takes two u64s (an interface ID and a PID placeholder?), a PID, a process handle, and the name of the interface you want to connect to. Returns an [[#IAudioOut]] object and four u32s: the sample rate, channel count, PCM format, and an unknown field. PCM format 2 is INT16.
+
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 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 ==
 
== IAudioOut ==
 +
This is "nn::audio::detail::IAudioOut".
 +
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
 
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || [[#GetAudioOutState]]
+
| 0 || [[#GetAudioOutState|GetAudioOutState]]
 +
|-
 +
| 1 || [[#Start|Start]]
 +
|-
 +
| 2 || [[#Stop|Stop]]
 +
|-
 +
| 3 || [[#AppendAudioOutBuffer|AppendAudioOutBuffer]]
 +
|-
 +
| 4 || [[#RegisterBufferEvent|RegisterBufferEvent]]
 +
|-
 +
| 5 || [[#GetReleasedAudioOutBuffers|GetReleasedAudioOutBuffers]]
 
|-
 
|-
| 1 || StartAudioOut
+
| 6 || [[#ContainsAudioOutBuffer|ContainsAudioOutBuffer]]
 
|-
 
|-
| 2 || StopAudioOut
+
| 7 || [3.0.0+] [[#AppendAudioOutBufferAuto|AppendAudioOutBufferAuto]]
 
|-
 
|-
| 3 || [[#AppendAudioOutBuffer]] taking a type 0x5 (A descriptor) buffer
+
| 8 || [3.0.0+] [[#GetReleasedAudioOutBuffersAuto|GetReleasedAudioOutBuffersAuto]]
 
|-
 
|-
| 4 || [[#RegisterBufferEvent]]
+
| 9 || [4.0.0+] [[#GetAudioOutBufferCount|GetAudioOutBufferCount]]
 
|-
 
|-
| 5 || [[#GetReleasedAudioOutBuffer]] taking a type 0x6 (B descriptor) buffer
+
| 10 || [4.0.0+] [[#GetAudioOutPlayedSampleCount|GetAudioOutPlayedSampleCount]]
 
|-
 
|-
| 6 || ContainsAudioOutBuffer
+
| 11 || [4.0.0+] [[#FlushAudioOutBuffers|FlushAudioOutBuffers]]
 
|-
 
|-
| 7 || [[#AppendAudioOutBuffer]] taking a type 0x21 buffer
+
| 12 || [6.0.0+] [[#SetAudioOutVolume|SetAudioOutVolume]]
 
|-
 
|-
| 8 || [[#GetReleasedAudioOutBuffer]] taking a type 0x22 buffer
+
| 13 || [6.0.0+] [[#GetAudioOutVolume|GetAudioOutVolume]]
 
|}
 
|}
    
=== GetAudioOutState ===
 
=== GetAudioOutState ===
 +
No input. Returns an output [[#AudioOutState]].
 +
 +
=== Start ===
 +
No input/output.
 +
 +
Starts audio playback using data from appended buffers.
 +
 +
=== Stop ===
 +
No input/output.
   −
Returns an AudioOutState, 0x00=Started 0x01=Stopped
+
Stops audio playback. This waits for audio playback to finish before returning.
    
=== AppendAudioOutBuffer ===
 
=== 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".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || [[#ListAudioIns|ListAudioIns]]
 +
|-
 +
| 1 || [[#OpenAudioIn|OpenAudioIn]]
 +
|-
 +
| 2 || [3.0.0+] [[#ListAudioInsAuto|ListAudioInsAuto]]
 +
|-
 +
| 3 || [3.0.0+] [[#OpenAudioInAuto|OpenAudioInAuto]]
 +
|-
 +
| 4 || [3.0.0+] [[#ListAudioInsAutoFiltered|ListAudioInsAutoFiltered]]
 +
|-
 +
| 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 ==
 +
This is "nn::audio::detail::IAudioIn".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || [[#GetAudioInState|GetAudioInState]]
 +
|-
 +
| 1 || [[#Start_2|Start]]
 +
|-
 +
| 2 || [[#Stop_2|Stop]]
 +
|-
 +
| 3 || [[#AppendAudioInBuffer|AppendAudioInBuffer]]
 +
|-
 +
| 4 || [[#RegisterBufferEvent_2|RegisterBufferEvent]]
 +
|-
 +
| 5 || [[#GetReleasedAudioInBuffers|GetReleasedAudioInBuffers]]
 +
|-
 +
| 6 || [[#ContainsAudioInBuffer|ContainsAudioInBuffer]]
 +
|-
 +
| 7 || [3.0.0+] [[#AppendUacInBuffer|AppendUacInBuffer]]
 +
|-
 +
| 8 || [3.0.0+] [[#AppendAudioInBufferAuto|AppendAudioInBufferAuto]]
 +
|-
 +
| 9 || [3.0.0+] [[#GetReleasedAudioInBuffersAuto|GetReleasedAudioInBuffersAuto]]
 +
|-
 +
| 10 || [3.0.0+] [[#AppendUacInBufferAuto|AppendUacInBufferAuto]]
 +
|-
 +
| 11 || [4.0.0+] [[#GetAudioInBufferCount|GetAudioInBufferCount]]
 +
|-
 +
| 12 || [4.0.0+] [[#SetDeviceGain|SetDeviceGain]]
 +
|-
 +
| 13 || [4.0.0+] [[#GetDeviceGain|GetDeviceGain]]
 +
|-
 +
| 14 || [6.0.0+] [[#FlushAudioInBuffers|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".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 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]].
   −
Takes a u64 (not sure what this is, might act as some sort of identifier for the audio buffer? official applications seem to use the address of the audio buffer struct for this) and a buffer.
+
== IFinalOutputRecorder ==
The format of said buffer is as follows:
+
This is "nn::audio::detail::IFinalOutputRecorder".
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Offset || Size || Description
+
! Cmd || Name
 +
|-
 +
| 0 || [[#GetFinalOutputRecorderState|GetFinalOutputRecorderState]]
 +
|-
 +
| 1 || [[#Start_3|Start]]
 +
|-
 +
| 2 || [[#Stop_3|Stop]]
 +
|-
 +
| 3 || [[#AppendFinalOutputRecorderBuffer|AppendFinalOutputRecorderBuffer]]
 +
|-
 +
| 4 || [[#RegisterBufferEvent_3|RegisterBufferEvent]]
 +
|-
 +
| 5 || [[#GetReleasedFinalOutputRecorderBuffers|GetReleasedFinalOutputRecorderBuffers]]
 +
|-
 +
| 6 || [[#ContainsFinalOutputRecorderBuffer|ContainsFinalOutputRecorderBuffer]]
 
|-
 
|-
| 0x00 || 8 || Some kind of pointer? This usually points to the sample data pointer.
+
| 7 || [[#GetFinalOutputRecorderBufferEndTime|GetFinalOutputRecorderBufferEndTime]]
 
|-
 
|-
| 0x08 || 8 || Pointer to sample data.
+
| 8 || [3.0.0+] [[#AppendFinalOutputRecorderBufferAuto|AppendFinalOutputRecorderBufferAuto]]
 
|-
 
|-
| 0x10 || 8 || Capacity of sample buffer
+
| 9 || [3.0.0+] [[#GetReleasedFinalOutputRecorderBuffersAuto|GetReleasedFinalOutputRecorderBuffersAuto]]
 
|-
 
|-
| 0x18 || 8 || Size of data in sample buffer
+
| 10 || [6.0.0+] [[#FlushFinalOutputRecorderBuffers|FlushFinalOutputRecorderBuffers]]
 
|-
 
|-
| 0x20 || 8 || Unknown. Zero works.
+
| 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 ===
 
=== 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".
   −
Returns an event handle that is signalled when a buffer is released
+
This was added with [6.0.0+].
   −
=== GetReleasedAudioOutBuffer ===
+
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || [17.0.0+] GetDspStatistics ([6.0.0-16.1.0] EnableDspUsageMeasurement)
 +
|-
 +
| 1 || [6.0.0-16.1.0] DisableDspUsageMeasurement
 +
|-
 +
| 6 || [6.0.0-16.1.0] GetDspUsage
 +
|}
   −
Takes a buffer, which it will fill with the identifiers passed from [[#AppendAudioOutBuffer]] of audio buffers that have been released. Will return a u32 (may indicate how many buffers were released?)
+
= audren:u =
 +
This is "nn::audio::detail::IAudioRendererManager".
   −
= audout:a =
+
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || OpenAudioRenderer
 +
|-
 +
| 1 || GetWorkBufferSize
 +
|-
 +
| 2 || [[#GetAudioDeviceService]]
 +
|-
 +
| 3 || [3.0.0+] OpenAudioRendererForManualExecution
 +
|-
 +
| 4 || [4.0.0+] GetAudioDeviceServiceWithRevisionInfo
 +
|}
 +
 
 +
=== GetAudioDeviceService ===
 +
Takes an input u64 [[AM_services#AppletResourceUserId|AppletResourceUserId]], returns an output [[#IAudioDevice]].
 +
 
 +
== IAudioRenderer ==
 +
This is "nn::audio::detail::IAudioRenderer".
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 74: Line 367:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || RequestSuspendAudioOuts
+
| 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
 +
|-
 +
| 12 || [15.0.0+] SetVoiceDropParameter
 
|-
 
|-
| 1 || RequestResumeAudioOuts
+
| 13 || [15.0.0+] GetVoiceDropParameter
 
|}
 
|}
   −
= audout:d =
+
=== 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".
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 85: Line 421:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || [[#RequestSuspendAudioOutsForDebug]]
+
| 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 || [13.0.0+] [[#GetActiveAudioOutputDeviceName]] ([5.0.0-12.1.0] [[#GetAudioSystemMasterVolumeSetting]])
 +
|-
 +
| 14 || [13.0.0+] ListAudioOutputDeviceName
 +
|-
 +
| 15 || [17.0.0+] AcquireAudioInputDeviceNotification
 +
|-
 +
| 16 || [17.0.0+] ReleaseAudioInputDeviceNotification
 +
|-
 +
| 17 || [17.0.0+] AcquireAudioOutputDeviceNotification
 +
|-
 +
| 18 || [17.0.0+] ReleaseAudioOutputDeviceNotification
 +
|-
 +
| 19 || [18.0.0+] SetAudioDeviceOutputVolumeAutoTuneEnabled
 
|-
 
|-
| 1 || [[#RequestResumeAudioOutsForDebug]]
+
| 20 || [18.0.0+] IsAudioDeviceOutputVolumeAutoTuneEnabled
 
|}
 
|}
   −
== RequestSuspendAudioOutsForDebug ==
+
=== 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.
 +
 
 +
=== GetAudioSystemMasterVolumeSetting ===
 +
Takes a type-0x5 input buffer, returns 4-bytes of output.
   −
Takes an [[AM_services#AppletResourceUserId|AppletResourceUserId]]. (u64)
+
=== GetActiveAudioOutputDeviceName ===
 +
Takes a type-0x6 output buffer, returns no output.
   −
== RequestResumeAudioOutsForDebug ==
+
= audout:a =
 +
This is "nn::audio::detail::IAudioOutManagerForApplet".
   −
Takes an [[AM_services#AppletResourceUserId|AppletResourceUserId]]. (u64)
+
This was removed with [11.0.0+].
   −
= audin:u =
+
{| class="wikitable" border="1"
 +
|-
 +
! 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+].
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! 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".
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 104: Line 537:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || ListAudioIns
+
| 0 || RequestSuspend
 
|-
 
|-
| 1 || OpenAudioIn
+
| 1 || RequestResume
 
|}
 
|}
   −
== IAudioIn ==
+
[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+].
 +
 
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
 
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || [[#GetAudioInState]]
+
| 0 || RequestSuspend
 +
|-
 +
| 1 || RequestResume
 
|-
 
|-
| 1 || StartAudioIn
+
| 2 || GetProcessMasterVolume
 
|-
 
|-
| 2 || StopAudioIn
+
| 3 || SetProcessMasterVolume
 
|-
 
|-
| 3 || AppendAudioInBuffer
+
| 4 || RegisterAppletResourceUserId
 
|-
 
|-
| 4 || RegisterBufferEvent
+
| 5 || UnregisterAppletResourceUserId
 
|-
 
|-
| 5 || GetReleasedAudioInBuffer
+
| 6 || [4.0.0+] GetProcessRecordVolume
 
|-
 
|-
| 6 || ContainsAudioInBuffer
+
| 7 || [4.0.0+] SetProcessRecordVolume
 
|}
 
|}
   −
=== GetAudioInState ===
+
[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+].
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || [[#RequestSuspend]]
 +
|-
 +
| 1 || [[#RequestResume]]
 +
|}
 +
 
 +
== RequestSuspend ==
 +
Takes an u64 [[AM_services#AppletResourceUserId|AppletResourceUserId]].
   −
Returns an AudioInState, 0x00=Started 0x01=Stopped
+
== RequestResume ==
 +
Takes an u64 [[AM_services#AppletResourceUserId|AppletResourceUserId]].
   −
= audin:a =
+
= audctl =
 +
This is "nn::audioctrl::detail::IAudioController".
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 139: Line 599:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || RequestSuspendAudioIns
+
| 0 || GetTargetVolume
 +
|-
 +
| 1 || SetTargetVolume
 +
|-
 +
| 2 || GetTargetVolumeMin
 +
|-
 +
| 3 || GetTargetVolumeMax
 +
|-
 +
| 4 || IsTargetMute
 +
|-
 +
| 5 || SetTargetMute
 +
|-
 +
| 6 || [1.0.0-17.0.1] IsTargetConnected
 +
|-
 +
| 7 || SetDefaultTarget
 +
|-
 +
| 8 || GetDefaultTarget
 +
|-
 +
| 9 || GetAudioOutputMode
 +
|-
 +
| 10 || SetAudioOutputMode
 +
|-
 +
| 11 || [1.0.0-13.2.1] SetForceMutePolicy
 +
|-
 +
| 12 || [1.0.0-13.2.1] GetForceMutePolicy
 +
|-
 +
| 13 || GetOutputModeSetting
 +
|-
 +
| 14 || SetOutputModeSetting
 +
|-
 +
| 15 || SetOutputTarget
 +
|-
 +
| 16 || SetInputTargetForceEnabled
 +
|-
 +
| 17 || [3.0.0+] SetHeadphoneOutputLevelMode
 +
|-
 +
| 18 || [3.0.0+] GetHeadphoneOutputLevelMode
 +
|-
 +
| 19 || [17.0.0+] SetForceMonauralOutputModeEnabled ([3.0.0-13.2.1] AcquireAudioVolumeUpdateEventForPlayReport)
 +
|-
 +
| 20 || [17.0.0+] IsForceMonauralOutputModeEnabled ([3.0.0-13.2.1] AcquireAudioOutputDeviceUpdateEventForPlayReport)
 +
|-
 +
| 21 || [3.0.0-13.2.1] GetAudioOutputTargetForPlayReport
 +
|-
 +
| 22 || [3.0.0+] NotifyHeadphoneVolumeWarningDisplayedEvent
 +
|-
 +
| 23 || [4.0.0+] SetSystemOutputMasterVolume
 +
|-
 +
| 24 || [4.0.0+] GetSystemOutputMasterVolume
 +
|-
 +
| 25 || [4.0.0-13.2.1] [[#GetAudioVolumeDataForPlayReport]]
 +
|-
 +
| 26 || [4.0.0-14.1.2] [[#UpdateHeadphoneSettings]]
 +
|-
 +
| 27 || [7.0.0-16.1.0] SetVolumeMappingTableForDev
 +
|-
 +
| 28 || [10.0.0-13.2.1] GetAudioOutputChannelCountForPlayReport
 +
|-
 +
| 29 || [10.0.0-13.2.1] BindAudioOutputChannelCountUpdateEventForPlayReport
 +
|-
 +
| 30 || [13.0.0+] SetSpeakerAutoMuteEnabled
 +
|-
 +
| 31 || [13.0.0+] IsSpeakerAutoMuteEnabled
 +
|-
 +
| 32 || [13.0.0+] GetActiveOutputTarget
 +
|-
 +
| 33 || [13.0.0+] GetTargetDeviceInfo
 +
|-
 +
| 34 || [13.0.0+] AcquireTargetNotification
 +
|-
 +
| 35 || [14.0.0-14.1.2] SetHearingProtectionSafeguardTimerRemainingTimeForDebug
 +
|-
 +
| 36 || [14.0.0-14.1.2] GetHearingProtectionSafeguardTimerRemainingTimeForDebug
 +
|-
 +
| 37 || [14.0.0-14.1.2] SetHearingProtectionSafeguardEnabled
 +
|-
 +
| 38 || [14.0.0-14.1.2] IsHearingProtectionSafeguardEnabled
 +
|-
 +
| 39 || [14.0.0-14.1.2] IsHearingProtectionSafeguardMonitoringOutputForDebug
 +
|-
 +
| 40 || [14.0.0+] [[#GetSystemInformationForDebug]]
 +
|-
 +
| 41 || [15.0.0+] SetVolumeButtonLongPressTime
 +
|-
 +
| 42 || [15.0.0+] SetNativeVolumeForDebug
 +
|-
 +
| 10000 || [13.0.0+] NotifyAudioOutputTargetForPlayReport
 +
|-
 +
| 10001 || [13.0.0+] NotifyAudioOutputChannelCountForPlayReport
 +
|-
 +
| 10002 || [13.0.0+] NotifyUnsupportedUsbOutputDeviceAttachedForPlayReport
 +
|-
 +
| 10100 || [14.0.0+] GetAudioVolumeDataForPlayReport
 +
|-
 +
| 10101 || [14.0.0+] BindAudioVolumeUpdateEventForPlayReport
 +
|-
 +
| 10102 || [14.0.0+] BindAudioOutputTargetUpdateEventForPlayReport
 +
|-
 +
| 10103 || [14.0.0+] GetAudioOutputTargetForPlayReport
 +
|-
 +
| 10104 || [14.0.0+] GetAudioOutputChannelCountForPlayReport
 +
|-
 +
| 10105 || [14.0.0+] BindAudioOutputChannelCountUpdateEventForPlayReport
 +
|-
 +
| 10106 || [14.0.0+] GetDefaultAudioOutputTargetForPlayReport
 
|-
 
|-
| 1 || RequestResumeAudioIns
+
| 50000 || [15.0.0+] SetAnalogInputBoostGainForPrototyping
 
|}
 
|}
   −
= audin:d =
+
== GetAudioVolumeDataForPlayReport ==
 +
No input, returns a total of 7-bytes of output.
 +
 
 +
[13.0.0+] No input, returns a total of 9-bytes of output.
 +
 
 +
== UpdateHeadphoneSettings ==
 +
Takes one input bool. No output.
 +
NS calls this with the result of [[Parental_Control_services#IParentalControlService|IParentalControlService::IsRestrictionEnabled]].
 +
 
 +
== GetSystemInformationForDebug ==
 +
Takes a type-0x1A output buffer.
 +
 
 +
[15.0.0+] Now takes a type-0x16 output buffer.
 +
 
 +
[18.0.0+] Originally the output buffer was a binary structure, now it's just a string.
 +
 
 +
= codecctl =
 +
This is "nn::audio::detail::ICodecController".
 +
 
 +
This service no longer exists in [3.0.0+].
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 150: Line 733:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || [[#RequestSuspendAudioInsForDebug]]
+
| 0 || [[#Initialize]]
 +
|-
 +
| 1 || [[#Finalize]]
 +
|-
 +
| 2 || [[#Sleep]]
 +
|-
 +
| 3 || [[#Wake]]
 +
|-
 +
| 4 || [[#SetVolume]]
 +
|-
 +
| 5 || [[#GetVolumeMax]]
 +
|-
 +
| 6 || [[#GetVolumeMin]]
 +
|-
 +
| 7 || [[#SetActiveTarget]]
 +
|-
 +
| 8 || [[#GetActiveTarget]]
 +
|-
 +
| 9 || [[#BindHeadphoneMicJackInterrupt]]
 +
|-
 +
| 10 || [[#IsHeadphoneMicJackInserted]]
 +
|-
 +
| 11 || [[#ClearHeadphoneMicJackInterrupt]]
 
|-
 
|-
| 1 || [[#RequestResumeAudioInsForDebug]]
+
| 12 || [[#IsRequested]]
 
|}
 
|}
   −
== RequestSuspendAudioInsForDebug ==
+
== 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.
   −
Takes an [[AM_services#AppletResourceUserId|AppletResourceUserId]]. (u64)
+
== IsHeadphoneMicJackInserted ==
 +
No input. Returns a bool.
   −
== RequestResumeAudioInsForDebug ==
+
== ClearHeadphoneMicJackInterrupt ==
 +
No input/output.
   −
Takes an [[AM_services#AppletResourceUserId|AppletResourceUserId]]. (u64)
+
== IsRequested ==
 +
No input. Returns a bool.
   −
= audrec:u =
+
= hwopus =
 +
This is "nn::codec::detail::IHardwareOpusDecoderManager".
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 169: Line 806:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || OpenFinalOutputRecorder
+
| 0 || [[#OpenHardwareOpusDecoder]]
 +
|-
 +
| 1 || [[#GetWorkBufferSize]]
 +
|-
 +
| 2 || [3.0.0+] [[#OpenHardwareOpusDecoderForMultiStream]]
 +
|-
 +
| 3 || [3.0.0+] [[#GetWorkBufferSizeForMultiStream]]
 +
|-
 +
| 4 || [12.0.0+] OpenHardwareOpusDecoderEx
 +
|-
 +
| 5 || [12.0.0+] GetWorkBufferSizeEx
 +
|-
 +
| 6 || [12.0.0+] OpenHardwareOpusDecoderForMultiStreamEx
 +
|-
 +
| 7 || [12.0.0+] GetWorkBufferSizeForMultiStreamEx
 +
|-
 +
| 8 || [16.0.0+] GetWorkBufferSizeExEx
 +
|-
 +
| 9 || [16.0.0+] GetWorkBufferSizeForMultiStreamExEx
 
|}
 
|}
   −
== IFinalOutputRecorder ==
+
Official sw can use either software libopus, or hwopus (libopus running on the ADSP) 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 [[#OpusMultiStreamParameters]] 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 [[#OpusMultiStreamParameters]] struct.
 +
 
 +
== OpenHardwareOpusDecoderEx ==
 +
Takes a struct [[#OpusParametersEx]] and a u32 '''WorkBufferSize''' and a TransferMemory handle for '''WorkBuffer'''. Returns an [[#IHardwareOpusDecoder]] object. The TransferMemory is created by the user-process with permissions=0.
 +
 
 +
When ''UseLargeFrameSize'' in the parameter struct is 1 a larger output buffer that can store 120ms opus frames is used vs the default of 40ms.
 +
 
 +
== GetWorkBufferSizeEx ==
 +
Takes a struct [[#OpusParametersEx]]. Returns the u32 required size for the decoder's work buffer. Official user-processes align the output size to page-alignment.
 +
 
 +
== OpenHardwareOpusDecoderForMultiStreamEx ==
 +
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 [[#OpusMultiStreamParametersEx]] struct. When ''UseLargeFrameSize'' is 1 a larger output buffer that can store 120ms opus frames is used vs the default of 40ms.
 +
 
 +
== GetWorkBufferSizeForMultiStreamEx ==
 +
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 [[#OpusMultiStreamParametersEx]] struct.
 +
 
 +
== IHardwareOpusDecoder ==
 +
This is "nn::codec::detail::IHardwareOpusDecoder".
 +
 
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
 
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || GetFinalOutputRecorderState
+
| 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]]
 
|-
 
|-
| 1 || StartFinalOutputRecorder
+
| 4 || [6.0.0+] [[#DecodeInterleavedWithPerfOld]] ([4.0.0-5.1.0] DecodeInterleavedWithPerf)
 
|-
 
|-
| 2 || StopFinalOutputRecorder
+
| 5 || [6.0.0+] [[#DecodeInterleavedForMultiStreamWithPerfOld]] ([4.0.0-5.1.0] DecodeInterleavedForMultiStreamWithPerf)
 
|-
 
|-
| 3 || AppendFinalOutputRecorderBuffer
+
| 6 || [6.0.0+] DecodeInterleavedWithPerfAndResetOld ([6.0.0-6.2.0] DecodeInterleaved)
 
|-
 
|-
| 4 || RegisterBufferEvent
+
| 7 || [6.0.0+] DecodeInterleavedForMultiStreamWithPerfAndResetOld ([6.0.0-6.2.0] DecodeInterleavedForMultiStream)
 
|-
 
|-
| 5 || GetReleasedFinalOutputRecorderBuffer
+
| 8 || [7.0.0+] [[#DecodeInterleaved]]
 
|-
 
|-
| 6 || ContainsFinalOutputRecorderBuffer
+
| 9 || [7.0.0+] [[#DecodeInterleavedForMultiStream]]
 
|}
 
|}
   −
= audren:u =
+
=== 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.
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 198: Line 940:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || OpenAudioRenderer
+
| 0 || ProfilerStart
 
|-
 
|-
| 1 || GetAudioRendererWorkBufferSize
+
| 1 || ProfilerStop
 
|-
 
|-
| 2 || GetAudioRenderersProcessMasterVolume
+
| 2 || CpuProfilerStart
 
|-
 
|-
| 3 || SetAudioRenderersProcessMasterVolume
+
| 3 || CpuProfilerStop
 
|}
 
|}
   −
== IAudioRenderer ==
+
= aud:a =
 +
This is "nn::audio::detail::IAudioSystemManagerForApplet".
 +
 
 +
This was added with [11.0.0+].
 +
 
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
 
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || GetAudioRendererSampleRate
+
| 0 || RegisterAppletResourceUserId
 +
|-
 +
| 1 || UnregisterAppletResourceUserId
 
|-
 
|-
| 1 || GetAudioRendererSampleCount
+
| 2 || RequestSuspendAudio
 
|-
 
|-
| 2 || GetAudioRendererMixBufferCount
+
| 3 || RequestResumeAudio
 
|-
 
|-
| 3 || GetAudioRendererState
+
| 4 || GetAudioOutputProcessMasterVolume
 
|-
 
|-
| 4 || RequestUpdateAudioRenderer
+
| 5 || SetAudioOutputProcessMasterVolume
 
|-
 
|-
| 5 || StartAudioRenderer
+
| 6 || GetAudioInputProcessMasterVolume
 
|-
 
|-
| 6 || StopAudioRenderer
+
| 7 || SetAudioInputProcessMasterVolume
 
|-
 
|-
| 7 || Unknown
+
| 8 || GetAudioOutputProcessRecordVolume
 
|-
 
|-
| 8 || SetAudioRendererRenderingTimeLimit
+
| 9 || SetAudioOutputProcessRecordVolume
 
|-
 
|-
| 9 || GetAudioRendererRenderingTimeLimit
+
| 10 || [18.0.0+] GetAppletStateSummaries
 
|}
 
|}
   −
= codecctl =
+
= aud:d =
 +
This is "nn::audio::detail::IAudioSystemManagerForDebugger".
 +
 
 +
This was added with [11.0.0+].
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 239: Line 990:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || InitializeCodecController
+
| 0 || RequestSuspendAudioForDebug
 +
|-
 +
| 1 || RequestResumeAudioForDebug
 +
|}
 +
 
 +
= SampleFormat =
 +
This is "nn::audio::SampleFormat".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Value || Name
 +
|-
 +
| 0 || Invalid
 
|-
 
|-
| 1 || FinalizeCodecController
+
| 1 || PcmInt8
 
|-
 
|-
| 2 || SleepCodecController
+
| 2 || PcmInt16
 
|-
 
|-
| 3 || WakeCodecController
+
| 3 || PcmInt24
 
|-
 
|-
| 4 || [[#SetCodecVolume]]
+
| 4 || PcmInt32
 
|-
 
|-
| 5 || GetCodecVolumeMax
+
| 5 || PcmFloat
 
|-
 
|-
| 6 || GetCodecVolumeMin
+
| 6 || Adpcm
 +
|}
 +
 
 +
= AudioOutState =
 +
This is "nn::audio::AudioOutState".
 +
 
 +
{| class="wikitable" border="1"
 
|-
 
|-
| 7 || SetCodecActiveTarget
+
! Value || Name
 
|-
 
|-
| 8 || Unknown
+
| 0 || Started
 
|-
 
|-
| 9 || BindCodecHeadphoneMicJackInterrupt
+
| 1 || Stopped
 +
|}
 +
 
 +
= AudioInState =
 +
This is "nn::audio::AudioInState".
 +
 
 +
{| class="wikitable" border="1"
 
|-
 
|-
| 10 || IsCodecHeadphoneMicJackInserted
+
! Value || Name
 
|-
 
|-
| 11 || ClearCodecHeadphoneMicJackInterrupt
+
| 0 || Started
 
|-
 
|-
| 12 || IsCodecDeviceRequested
+
| 1 || Stopped
 
|}
 
|}
   −
== SetCodecVolume ==
+
= FinalOutputRecorderState =
 +
This is "nn::audio::FinalOutputRecorderState".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Value || Name
 +
|-
 +
| 0 || Started
 +
|-
 +
| 1 || Stopped
 +
|}
   −
Takes a Volume (uint32)
+
= 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
 +
|}
 +
 
 +
= AudioOutBuffer =
 +
This is "nn::audio::AudioOutBuffer".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! 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)
 +
|-
 +
| 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".
 +
 
 +
{| 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
 +
| 0x8
 +
|
 +
|-
 +
| 0x8
 +
| 0x8
 +
|
 +
|-
 +
| 0x10
 +
| 0x8
 +
|
 +
|}
 +
 
 +
= OpusParametersEx =
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x4
 +
| SampleRate
 +
|-
 +
| 0x4
 +
| 0x4
 +
| ChannelCount
 +
|-
 +
| 0x8
 +
| 0x4
 +
| UseLargeFrameSize
 +
|-
 +
| 0xC
 +
| 0x4
 +
| Padding
 +
|}
 +
 
 +
= OpusMultiStreamParameters =
 +
{| class="wikitable" border="1"
 +
|-
 +
! 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
 +
|}
 +
 
 +
= OpusMultiStreamParametersEx =
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x4
 +
| SampleRate
 +
|-
 +
| 0x4
 +
| 0x4
 +
| ChannelCount
 +
|-
 +
| 0x8
 +
| 0x4
 +
| Number of streams
 +
|-
 +
| 0xC
 +
| 0x4
 +
| Number of stereo streams
 +
|-
 +
| 0x10
 +
| 0x4
 +
| UseLargeFrameSize
 +
|-
 +
| 0x14
 +
| 0x4
 +
| Padding
 +
|-
 +
| 0x18
 +
| 0x100
 +
| u8 array of channel mappings
 +
|}
    
[[Category:Services]]
 
[[Category:Services]]