10#include "../kernel/event.h"
11#include "../audio/audio.h"
12#include "../sf/service.h"
14#define AUDREN_TIMER_FREQ_HZ 200.0f
15#define AUDREN_TIMER_PERIOD_MS 5.0f
16#define AUDREN_SAMPLES_PER_FRAME_32KHZ 160
17#define AUDREN_SAMPLES_PER_FRAME_48KHZ 240
19#define AUDREN_INPUT_PARAM_ALIGNMENT 0x1000
20#define AUDREN_OUTPUT_PARAM_ALIGNMENT 0x10
21#define AUDREN_MEMPOOL_ALIGNMENT 0x1000
22#define AUDREN_BUFFER_ALIGNMENT 0x40
24#define AUDREN_REVISION_1 0x31564552
25#define AUDREN_REVISION_2 0x32564552
26#define AUDREN_REVISION_3 0x33564552
27#define AUDREN_REVISION_4 0x34564552
28#define AUDREN_REVISION_5 0x35564552
29#define AUDREN_REVISION_6 0x36564552
31#define AUDREN_NODEID(_a,_b,_c) ((((u32)(_a) & 0xF) << 28) | (((u32)(_b) & 0xFFF) << 16) | ((u32)(_c) & 0xFFFF))
32#define AUDREN_FINAL_MIX_ID 0
33#define AUDREN_UNUSED_MIX_ID 0x7FFFFFFF
34#define AUDREN_UNUSED_SPLITTER_ID 0xFFFFFFFF
36#define AUDREN_DEFAULT_DEVICE_NAME "MainAudioOut"
39 AudioRendererOutputRate_32kHz,
40 AudioRendererOutputRate_48kHz,
41} AudioRendererOutputRate;
44 AudioRendererOutputRate output_rate;
105 AudioRendererMemPoolState_Invalid,
106 AudioRendererMemPoolState_New,
107 AudioRendererMemPoolState_RequestDetach,
108 AudioRendererMemPoolState_Detached,
109 AudioRendererMemPoolState_RequestAttach,
110 AudioRendererMemPoolState_Attached,
111 AudioRendererMemPoolState_Released,
112} AudioRendererMemPoolState;
117 AudioRendererMemPoolState state;
123 AudioRendererMemPoolState new_state;
142 u16 coefficients[16];
154 s32 start_sample_offset;
155 s32 end_sample_offset;
160 const void* context_addr;
166 AudioRendererVoicePlayState_Started,
167 AudioRendererVoicePlayState_Stopped,
168 AudioRendererVoicePlayState_Paused,
169} AudioRendererVoicePlayState;
176 AudioRendererVoicePlayState state : 8;
189 const void* extra_params_ptr;
192 u32 dest_splitter_id;
199 u64 played_sample_count;
200 u32 num_wavebufs_consumed;
201 u32 voice_drops_count;
216 u32 dest_splitter_id;
225 AudioRendererSinkType_Invalid,
226 AudioRendererSinkType_Device,
227 AudioRendererSinkType_CircularBuffer,
228} AudioRendererSinkType;
236 bool downmix_params_enabled;
245 u32 last_read_offset;
252 AudioRendererSinkType type : 8;
264 u32 last_written_offset;
280static inline u32 audrenGetRevision(
void)
282 extern u32 g_audrenRevision;
283 return g_audrenRevision;
288 return config->num_effects + 4 * config->num_voices;
331void audrenWaitFrame(
void);
333Result audrenRequestUpdateAudioRenderer(
const void* in_param_buf,
size_t in_param_buf_size,
void* out_param_buf,
size_t out_param_buf_size,
void* perf_buf,
size_t perf_buf_size);
334Result audrenStartAudioRenderer(
void);
335Result audrenStopAudioRenderer(
void);
336Result audrenSetAudioRendererRenderingTimeLimit(
int percent);
PcmFormat
PcmFormat.
Definition audio.h:12
Event * audrenGetFrameEvent(void)
Returns event that is signalled on new frame (autoclear=true).
void audrenExit(void)
Exit audren.
Service * audrenGetServiceSession_AudioRenderer(void)
Gets the Service object for IAudioRenderer.
Result audrenInitialize(const AudioRendererConfig *config)
Initialize audren.
Kernel-mode event structure.
Definition event.h:13
Service object structure.
Definition service.h:14
uint64_t u64
64-bit unsigned integer.
Definition types.h:22
uint8_t u8
8-bit unsigned integer.
Definition types.h:19
int16_t s16
16-bit signed integer.
Definition types.h:26
uint16_t u16
16-bit unsigned integer.
Definition types.h:20
u32 Result
Function error code result type.
Definition types.h:44
#define NX_CONSTEXPR
Flags a function as constexpr in C++14 and above; or as (always) inline otherwise.
Definition types.h:92
int32_t s32
32-bit signed integer.
Definition types.h:27
uint32_t u32
32-bit unsigned integer.
Definition types.h:21