Audio services: Difference between revisions
(48 intermediate revisions by 4 users not shown) | |||
Line 10: | Line 10: | ||
| 1 || [[#OpenAudioOut]] | | 1 || [[#OpenAudioOut]] | ||
|- | |- | ||
| 2 || [3.0.0+] [[# | | 2 || [3.0.0+] [[#ListAudioOutsAuto]] | ||
|- | |- | ||
| 3 || [3.0.0+] [[# | | 3 || [3.0.0+] [[#OpenAudioOutAuto]] | ||
|} | |} | ||
Line 20: | Line 20: | ||
== OpenAudioOut == | == OpenAudioOut == | ||
Takes a type-5 input buffer ('''DeviceNameIn'''), a type-6 output buffer ('''DeviceNameOut'''), two u32s '''SampleRate''' (must be 48000) and '''ChannelCount''' ( | Takes a type-5 input buffer ('''DeviceNameIn'''), a type-6 output buffer ('''DeviceNameOut'''), two u32s '''SampleRate''' (must be 48000) and '''ChannelCount''' (only the higher u16 is used), one u64 '''ClientPID''', a PID and a copy-handle. | ||
Returns an [[#IAudioOut]] object and four u32s: the sample rate, channel count, [[#PCM_format|PCM format]], and the initial AudioOutState. | Returns an [[#IAudioOut]] object and four u32s: the sample rate, channel count, [[#PCM_format|PCM format]], and the initial AudioOutState. | ||
Line 43: | Line 43: | ||
|} | |} | ||
== | == ListAudioOutsAuto == | ||
Same as [[#ListAudioOuts]], but takes a type-0x22 output buffer instead. | Same as [[#ListAudioOuts]], but takes a type-0x22 output buffer instead. | ||
== | == OpenAudioOutAuto == | ||
Same as [[#OpenAudioOut]], but takes a type-0x21 input buffer instead. | Same as [[#OpenAudioOut]], but takes a type-0x21 input buffer and a type-0x22 output buffer instead. | ||
== IAudioOut == | == IAudioOut == | ||
Line 70: | Line 70: | ||
| 6 || [[#ContainsAudioOutBuffer]] | | 6 || [[#ContainsAudioOutBuffer]] | ||
|- | |- | ||
| 7 || [3.0.0+] [[# | | 7 || [3.0.0+] [[#AppendAudioOutBufferAuto]] | ||
|- | |- | ||
| 8 || [3.0.0+] [[# | | 8 || [3.0.0+] [[#GetReleasedAudioOutBufferAuto]] | ||
|- | |- | ||
| 9 || [4.0.0+] | | 9 || [4.0.0+] GetAudioOutBufferCount | ||
|- | |- | ||
| 10 || [4.0.0+] | | 10 || [4.0.0+] GetAudioOutPlayedSampleCount | ||
|- | |- | ||
| 11 || [4.0.0+] | | 11 || [4.0.0+] FlushAudioOutBuffers | ||
|- | |||
| 12 || [6.0.0+] SetAudioOutVolume | |||
|- | |||
| 13 || [6.0.0+] GetAudioOutVolume | |||
|} | |} | ||
Line 88: | Line 92: | ||
=== StopAudioOut === | === StopAudioOut === | ||
Stops audio playback. | Stops audio playback. This waits for audio playback to finish before returning. | ||
=== AppendAudioOutBuffer === | === AppendAudioOutBuffer === | ||
Line 98: | Line 102: | ||
! Offset || Size || Description | ! Offset || Size || Description | ||
|- | |- | ||
| 0x00 || 8 || Pointer to next buffer | | 0x00 || 8 || Pointer to next buffer (unused) | ||
|- | |- | ||
| 0x08 || 8 || Pointer to sample buffer | | 0x08 || 8 || Pointer to sample buffer | ||
Line 106: | Line 110: | ||
| 0x18 || 8 || Size of data in the sample buffer | | 0x18 || 8 || Size of data in the sample buffer | ||
|- | |- | ||
| 0x20 || 8 || Offset of data in the sample buffer | | 0x20 || 8 || Offset of data in the sample buffer (unused/ignored?) | ||
|} | |} | ||
Line 119: | Line 123: | ||
Takes an u64 '''tag''' for the desired buffer. Returns 1 if the buffer was appended and not yet released. | Takes an u64 '''tag''' for the desired buffer. Returns 1 if the buffer was appended and not yet released. | ||
=== | === AppendAudioOutBufferAuto === | ||
Same as [[#AppendAudioOutBuffer]] but takes a type-0x21 buffer instead. | Same as [[#AppendAudioOutBuffer]] but takes a type-0x21 buffer instead. | ||
=== | === GetReleasedAudioOutBufferAuto === | ||
Same as [[#GetReleasedAudioOutBuffer]] but takes a type-0x22 buffer instead. | Same as [[#GetReleasedAudioOutBuffer]] but takes a type-0x22 buffer instead. | ||
= audin:u = | = audin:u = | ||
This is "nn::audio::detail:: | This is "nn::audio::detail::IAudioInManager". | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 136: | Line 140: | ||
| 1 || OpenAudioIn | | 1 || OpenAudioIn | ||
|- | |- | ||
| 2 || [3.0.0+] | | 2 || [3.0.0+] ListAudioInsAuto | ||
|- | |||
| 3 || [3.0.0+] OpenAudioInAuto | |||
|- | |- | ||
| | | 4 || [3.0.0+] ListAudioInsAutoFiltered | ||
|- | |- | ||
| | | 5 || [5.0.0+] | ||
|} | |} | ||
Line 166: | Line 172: | ||
| 7 || [3.0.0+] AppendAudioInBufferWithUserEvent | | 7 || [3.0.0+] AppendAudioInBufferWithUserEvent | ||
|- | |- | ||
| 8 || [3.0.0+] | | 8 || [3.0.0+] AppendAudioInBufferAuto | ||
|- | |- | ||
| 9 || [3.0.0+] | | 9 || [3.0.0+] GetReleasedAudioInBufferAuto | ||
|- | |- | ||
| 10 || [3.0.0+] | | 10 || [3.0.0+] AppendAudioInBufferWithUserEventAuto | ||
|- | |- | ||
| 11 || [4.0.0+] | | 11 || [4.0.0+] GetAudioInBufferCount | ||
|- | |- | ||
| 12 || [4.0.0+] | | 12 || [4.0.0+] SetAudioInDeviceGain | ||
|- | |- | ||
| 13 || [4.0.0+] | | 13 || [4.0.0+] GetAudioInDeviceGain | ||
|- | |||
| 14 || [6.0.0+] FlushAudioInBuffers | |||
|} | |} | ||
=== GetAudioInState === | === GetAudioInState === | ||
Returns an u32 '''AudioInState''' (0x00=Started, 0x01=Stopped). | |||
Returns an AudioInState | |||
= audrec:u = | = audrec:u = | ||
Line 214: | Line 221: | ||
| 6 || ContainsFinalOutputRecorderBuffer | | 6 || ContainsFinalOutputRecorderBuffer | ||
|- | |- | ||
| 7 || | | 7 || GetFinalOutputRecorderBufferEndTime | ||
|- | |- | ||
| 8 || [3.0.0+] | | 8 || [3.0.0+] AppendFinalOutputRecorderBufferAuto | ||
|- | |- | ||
| 9 || [3.0.0+] | | 9 || [3.0.0+] GetReleasedFinalOutputRecorderBufferAuto | ||
|- | |||
| 10 || [6.0.0+] FlushFinalOutputRecorderBuffers | |||
|- | |||
| 11 || [9.0.0+] | |||
|} | |||
= auddev = | |||
This is "nn::audio::detail::IAudioSnoopManager". | |||
This was added with [6.0.0+]. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Cmd || Name | |||
|- | |||
| 0 || EnableDspUsageMeasurement | |||
|- | |||
| 1 || DisableDspUsageMeasurement | |||
|- | |||
| 6 || GetDspUsage | |||
|} | |} | ||
Line 230: | Line 257: | ||
| 0 || OpenAudioRenderer | | 0 || OpenAudioRenderer | ||
|- | |- | ||
| 1 || | | 1 || GetWorkBufferSize | ||
|- | |- | ||
| 2 || | | 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 == | == IAudioRenderer == | ||
Line 244: | Line 276: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || [[# | | 0 || [[#GetSampleRate]] | ||
|- | |- | ||
| 1 || [[# | | 1 || [[#GetSampleCount]] | ||
|- | |- | ||
| 2 || [[# | | 2 || [[#GetMixBufferCount]] | ||
|- | |- | ||
| 3 || [[# | | 3 || [[#GetState]] | ||
|- | |- | ||
| 4 || | | 4 || RequestUpdate | ||
|- | |- | ||
| 5 || | | 5 || Start | ||
|- | |- | ||
| 6 || | | 6 || Stop | ||
|- | |- | ||
| 7 || QuerySystemEvent | | 7 || QuerySystemEvent | ||
|- | |- | ||
| 8 || [[# | | 8 || [[#SetRenderingTimeLimit]] | ||
|- | |||
| 9 || [[#GetRenderingTimeLimit]] | |||
|- | |||
| 10 || [3.0.0+] RequestUpdateAuto | |||
|- | |- | ||
| | | 11 || [3.0.0+] ExecuteAudioRendererRendering | ||
|} | |} | ||
=== | === GetSampleRate === | ||
Returns the Sample Rate. (u32) | Returns the Sample Rate. (u32) | ||
=== | === GetSampleCount === | ||
Returns the Sample Count. (u32) | Returns the Sample Count. (u32) | ||
=== | === GetMixBufferCount === | ||
Returns the number of Mix Buffers. (u32) | Returns the number of Mix Buffers. (u32) | ||
Line 277: | Line 313: | ||
Returns an AudioRenderState, 0x00=Started 0x01=Stopped (u32) | Returns an AudioRenderState, 0x00=Started 0x01=Stopped (u32) | ||
=== | === SetRenderingTimeLimit === | ||
Takes a upper limit of the rendering time in percent. (u32) | Takes a upper limit of the rendering time in percent. (u32) | ||
=== | === GetRenderingTimeLimit === | ||
Returns the upper limit of the rendering time in percent. (u32) | Returns the upper limit of the rendering time in percent. (u32) | ||
= | == IAudioDevice == | ||
This is "nn::audio::detail:: | This is "nn::audio::detail::IAudioDevice". | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 290: | Line 326: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || | | 0 || [[#ListAudioDeviceName]] | ||
|- | |- | ||
| 1 || | | 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". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Cmd || Name | |||
|- | |||
| 0 || RequestSuspendAudioOuts | |||
|- | |||
| 1 || RequestResumeAudioOuts | |||
|- | |||
| 2 || GetAudioOutsProcessMasterVolume | |||
|- | |||
| 3 || SetAudioOutsProcessMasterVolume | |||
|- | |||
| 4 || [4.0.0+] GetAudioOutsProcessRecordVolume | |||
|- | |||
| 5 || [4.0.0+] SetAudioOutsProcessRecordVolume | |||
|} | |||
[4.0.0+] RequestSuspendAudioOuts/RequestResumeAudioOuts no longer returns an output handle. | |||
= audin:a = | |||
This is "nn::audio::detail::IAudioInManagerForApplet". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Cmd || Name | |||
|- | |||
| 0 || RequestSuspendAudioIns | |||
|- | |||
| 1 || RequestResumeAudioIns | |||
|- | |||
| 2 || GetAudioInsProcessMasterVolume | |||
|- | |||
| 3 || SetAudioInsProcessMasterVolume | |||
|} | |||
[4.0.0+] RequestSuspendAudioIns/RequestResumeAudioIns no longer returns an output handle. | |||
= audrec:a = | |||
This is "nn::audio::detail::IFinalOutputRecorderManagerForApplet". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Cmd || Name | |||
|- | |||
| 0 || RequestSuspendFinalOutputRecorders | |||
|- | |||
| 1 || RequestResumeFinalOutputRecorders | |||
|} | |||
[4.0.0+] RequestSuspendFinalOutputRecorders/RequestResumeFinalOutputRecorders no longer returns an output handle. | |||
= audren:a = | |||
This is "nn::audio::detail::IAudioRendererManagerForApplet". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Cmd || Name | |||
|- | |||
| 0 || RequestSuspendAudioRenderers | |||
|- | |||
| 1 || RequestResumeAudioRenderers | |||
|- | |||
| 2 || GetAudioRenderersProcessMasterVolume | |||
|- | |||
| 3 || SetAudioRenderersProcessMasterVolume | |||
|- | |||
| 4 || RegisterAppletResourceUserId | |||
|- | |||
| 5 || UnregisterAppletResourceUserId | |||
|- | |||
| 6 || [4.0.0+] GetAudioRenderersProcessRecordVolume | |||
|- | |||
| 7 || [4.0.0+] SetAudioRenderersProcessRecordVolume | |||
|} | |||
[4.0.0+] RequestSuspendAudioRenderers/RequestResumeAudioRenderers no longer returns an output handle. | |||
= audout:d, audin:d, audrec:d, audren:d = | = audout:d, audin:d, audrec:d, audren:d = | ||
Line 308: | Line 464: | ||
== RequestSuspendForDebug == | == RequestSuspendForDebug == | ||
Takes an u64 [[AM_services#AppletResourceUserId|AppletResourceUserId]]. | |||
Takes an [[AM_services#AppletResourceUserId|AppletResourceUserId]]. | |||
== RequestResumeForDebug == | == RequestResumeForDebug == | ||
Takes an u64 [[AM_services#AppletResourceUserId|AppletResourceUserId]]. | |||
= audctl = | |||
This is "nn::audioctrl::detail::IAudioController". | |||
{| class="wikitable" border="1" | |||
|- | |||
! 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 | |||
|} | |||
= codecctl = | = codecctl = | ||
Line 389: | Line 607: | ||
== IsCodecDeviceRequested == | == IsCodecDeviceRequested == | ||
Returns a bool. | Returns a bool. | ||
= hwopus = | |||
This is "nn::codec::detail::IHardwareOpusDecoderManager". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Cmd || Name | |||
|- | |||
| 0 || [[#Initialize]] | |||
|- | |||
| 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). | |||
== Initialize == | |||
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. | |||
== MultiStreamParameters == | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x4 | |||
| Sample rate (Hz) | |||
|- | |||
| 0x4 | |||
| 0x4 | |||
| Number of channels | |||
|- | |||
| 0x8 | |||
| 0x4 | |||
| Number of streams | |||
|- | |||
| 0xC | |||
| 0x4 | |||
| Number of stereo streams | |||
|- | |||
| 0x10 | |||
| 0x100 | |||
| u8 array of channel mappings | |||
|} | |||
== IHardwareOpusDecoder == | |||
This is "nn::codec::detail::IHardwareOpusDecoder". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Cmd || Name | |||
|- | |||
| 0 || [4.0.0+] [[#DecodeInterleavedOld]] ([1.0.0-3.0.2] [[#DecodeInterleavedOld|#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+] [[#DecodeInterleaved]] | |||
|- | |||
| 7 || [6.0.0+] [[#DecodeInterleavedForMultiStream]] | |||
|- | |||
| 8 || [7.0.0+] | |||
|- | |||
| 9 || [7.0.0+] | |||
|} | |||
=== DecodeInterleavedOld === | |||
Takes a type-5 input buffer ('''OpusDataIn''') and a type-6 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-5 input buffer ('''DecoderContextIn'''). Sends the unknown context data to the hardware decoder. The input buffer is unused. | |||
=== DecodeInterleavedForMultiStreamOld === | |||
Takes a type-5 input buffer ('''OpusDataIn''') and a type-6 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-5 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" | |||
|- | |||
! Cmd || Name | |||
|- | |||
| 0 || StartDspProfiler | |||
|- | |||
| 1 || StopDspProfiler | |||
|- | |||
| 2 || StartCpuProfiler | |||
|- | |||
| 3 || StopCpuProfiler | |||
|} | |||
[[Category:Services]] | [[Category:Services]] |