Audio services: Difference between revisions

No edit summary
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''' (high u16 can't be 0, official apps pass 0xCAFE0000), one u64 '''ClientPID''', a PID and a copy-handle.
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 180: Line 180:


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


= audrec:u =
= audrec:u =
Line 234: Line 233:
| 2 || GetAudioRenderersProcessMasterVolume
| 2 || GetAudioRenderersProcessMasterVolume
|-
|-
| 3 || SetAudioRenderersProcessMasterVolume
| 3 || [3.0.0+] SetAudioRenderersProcessMasterVolume
|-
| 4 || [4.0.0+]
|}
|}


Line 263: Line 264:
|-
|-
| 9 || [[#GetAudioRendererRenderingTimeLimit]]
| 9 || [[#GetAudioRendererRenderingTimeLimit]]
|-
| 10 || [3.0.0+] RequestUpdateAudioRendererEx
|-
| 11 || [3.0.0+]
|}
|}


Line 308: Line 313:


== RequestSuspendForDebug ==
== RequestSuspendForDebug ==
 
Takes an u64 [[AM_services#AppletResourceUserId|AppletResourceUserId]].
Takes an [[AM_services#AppletResourceUserId|AppletResourceUserId]]. (u64)


== RequestResumeForDebug ==
== RequestResumeForDebug ==
Takes an u64 [[AM_services#AppletResourceUserId|AppletResourceUserId]].


Takes an [[AM_services#AppletResourceUserId|AppletResourceUserId]]. (u64)
= audctl =
This is "nn::audioctrl::detail::IAudioController".
 
{| class="wikitable" border="1"
|-
! Cmd || Name
|-
| 0 ||
|-
| 1 ||
|-
| 2 ||
|-
| 3 ||
|-
| 4 ||
|-
| 5 ||
|-
| 6 ||
|-
| 7 ||
|-
| 8 ||
|-
| 9 ||
|-
| 10 ||
|-
| 11 ||
|-
| 12 ||
|-
| 13 ||
|-
| 14 ||
|-
| 15 ||
|-
| 16 ||
|-
| 17 || [3.0.0+]
|-
| 18 || [3.0.0+]
|-
| 19 || [3.0.0+]
|-
| 20 || [3.0.0+]
|-
| 21 || [3.0.0+]
|-
| 22 || [3.0.0+]
|-
| 23 || [4.0.0+]
|-
| 24 || [4.0.0+]
|-
| 25 || [4.0.0+]
|-
| 26 || [4.0.0+]
|}


= codecctl =
= codecctl =
Line 389: Line 454:
== IsCodecDeviceRequested ==
== IsCodecDeviceRequested ==
Returns a bool.
Returns a bool.
= hwopus =
This is "nn::codec::detail::IHardwareOpusDecoderManager".
{| class="wikitable" border="1"
|-
! Cmd || Name
|-
| 0 || [[#OpenHardwareOpusDecoder]]
|-
| 1 || [[#GetHardwareOpusDecoderWorkBufferSize]]
|-
| 2 || [3.0.0+] OpenHardwareOpusDecoderEx
|-
| 3 || [3.0.0+] GetHardwareOpusDecoderWorkBufferSizeEx
|}
== OpenHardwareOpusDecoder ==
Takes two u32s '''SampleRate''' and '''ChannelCount''' packed as an u64, an u32 '''WorkBufferSize''' and an unknown handle. Returns an [[#IHardwareOpusDecoder]] object.
== GetHardwareOpusDecoderWorkBufferSize ==
Takes two u32s '''SampleRate''' and '''ChannelCount''' packed as an u64. Returns the required size for the decoder's work buffer.
== IHardwareOpusDecoder ==
This is "nn::codec::detail::IHardwareOpusDecoder".
{| class="wikitable" border="1"
|-
! Cmd || Name
|-
| 0 || [[#Decode]]
|-
| 1 || [[#SendDecoderContext]]
|-
| 2 || [3.0.0+] DecodeEx
|-
| 3 || [3.0.0+] SendDecoderContextEx
|-
| 4 || [4.0.0+]
|-
| 5 || [4.0.0+]
|}
=== Decode ===
Takes a type-5 input buffer ('''OpusDataIn''') and a type-6 output buffer ('''PcmDataOut'''). Decodes the Opus source data to PCM and returns two u32s '''DecodedSampleCount''' and '''DecodedDataSize'''.
=== SendDecoderContext ===
Takes a type-5 input buffer ('''DecoderContextIn'''). Sends the unknown context data to the hardware decoder.
= auddebug =
This service doesn't exist in retail units.


[[Category:Services]]
[[Category:Services]]