muteki
Loading...
Searching...
No Matches
audio.h
Go to the documentation of this file.
1/*
2 * Copyright 2021-present dogtopus
3 * SPDX-License-Identifier: MIT
4 */
5
11#ifndef __MUTEKI_AUDIO_H__
12#define __MUTEKI_AUDIO_H__
13
14#include <muteki/common.h>
15#include <muteki/devio.h>
16#include <muteki/threading.h>
17
18#ifdef __cplusplus
19extern "C" {
20#endif
21
39
57
61const int SAMPLE_RATE_AUTO = -1;
62
64struct pcm_config_s;
66struct pcm_state_s;
67struct pcm_frame_s;
69
71typedef struct pcm_config_s pcm_config_t;
73typedef struct pcm_state_s pcm_state_t;
74typedef struct pcm_frame_s pcm_frame_t;
76
77typedef void (*pcm_codec_func_t)(device_service_pcm_t *pcm, pcm_decoder_buffer_t *src, pcm_decoder_buffer_t *dest);
78
94 pcm_codec_func_t codec;
95 int unk_0xc; // initialized to 0
123 void *unk_0x24;
124};
125
143
145 device_service_t common;
146 int unk_0x4c;
147 int (*init)(device_service_pcm_t *);
148 int (*reset)(device_service_pcm_t *);
149 int (*fini)(device_service_pcm_t *);
150 int unk_0x5c;
151 pcm_config_t config;
152 pcm_state_t *state;
153 int unk_0x8c;
154};
155
157 pcm_frame_t **frames;
158 int unk_0x4;
159 int unk_0x8;
160 size_t size; /* Must be 2**n */
161 int unk_0x10;
162 size_t max_frames;
163 size_t frame_queue_tip;
165};
166
174 void *buffer;
178 size_t size;
188 unsigned int tx_state;
189};
190
212
261extern pcm_codec_context_t *OpenPCMCodec(int direction, int sample_rate, int format);
262
269
270#ifdef __cplusplus
271} // extern "C"
272#endif
273
274#endif // __MUTEKI_AUDIO_H__
pcm_direction_e
PCM codec direction/mode.
Definition audio.h:25
@ DIRECTION_OUT
Output/playback mode.
Definition audio.h:33
@ DIRECTION_IN
Input/recording mode.
Definition audio.h:37
@ DIRECTION_DEFAULT
Default direction. Usually DIRECTION_OUT.
Definition audio.h:29
void ClosePCMCodec(pcm_codec_context_t *ctx)
Destroy a PCM codec context.
pcm_format_e
Sample format.
Definition audio.h:43
@ FORMAT_PCM_MONO
PCM mono.
Definition audio.h:51
@ FORMAT_PCM_STEREO
PCM stereo.
Definition audio.h:55
@ FORMAT_AUTO
Use the default format. Usually FORMAT_PCM_STEREO.
Definition audio.h:47
pcm_codec_context_t * OpenPCMCodec(int direction, int sample_rate, int format)
Create PCM codec context.
const int SAMPLE_RATE_AUTO
Use the default sample rate. Usually this is equivalent to 44100Hz.
Definition audio.h:61
Common include file for all muteki-shims headers.
Device IO API.
Native threading API.
Critical section descriptor structure.
Definition threading.h:203
Definition audio.h:144
The PCM codec context.
Definition audio.h:129
device_service_pcm_t * service
The PCM service.
Definition audio.h:133
int unk_0x4
Unknown. Initializes to 0.
Definition audio.h:137
pcm_config_t config
Configuration applied to this context.
Definition audio.h:141
The PCM codec configuration.
Definition audio.h:82
int unk_0x4
Unknown. Initializes to 0.
Definition audio.h:90
int unk_0x20
Unknown. Initializes to 0.
Definition audio.h:119
int current_direction
Current direction setting in effect.
Definition audio.h:115
int format
Audio data frame format.
Definition audio.h:110
pcm_codec_func_t codec
Current codec function in effect.
Definition audio.h:94
int sample_rate
Sample rate in Hz.
Definition audio.h:100
int unk_0x0
Unknown. Initializes to 0.
Definition audio.h:86
int default_direction
Direction setting supplied to direction parameter during descriptor creation.
Definition audio.h:105
void * unk_0x24
Unknown.
Definition audio.h:123
Codec buffer descriptor. Used Internally.
Definition audio.h:194
void * buffer
Pointer to buffer.
Definition audio.h:198
int channels
Channels.
Definition audio.h:210
size_t size
Size of the buffer.
Definition audio.h:202
int sample_rate
Sample rate.
Definition audio.h:206
PCM frame data structure. Used internally.
Definition audio.h:170
unsigned int tx_state
Transfer state.
Definition audio.h:188
size_t pending_size
Size pending transfer.
Definition audio.h:183
void * buffer
Pointer to buffer.
Definition audio.h:174
size_t size
Size of the buffer.
Definition audio.h:178
Definition audio.h:156