Muteki
EABI code execution on Besta® RTOS devices.
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
10
11#ifndef __MUTEKI_AUDIO_H__
12#define __MUTEKI_AUDIO_H__
13
14#include "common.h"
15#include "devio.h"
16#include "threading.h"
17
18#ifdef __cplusplus
19extern "C" {
20#endif
21
39
57
61const int SAMPLE_RATE_AUTO = -1;
62
70typedef struct pcm_state_s pcm_state_t;
72typedef struct pcm_frame_s pcm_frame_t;
75
80
128
146
148 device_service_t common;
149 int unk_0x4c;
150 int (*init)(device_service_pcm_t *);
151 int (*reset)(device_service_pcm_t *);
152 int (*fini)(device_service_pcm_t *);
153 int unk_0x5c;
154 pcm_config_t config;
155 pcm_state_t *state;
156 int unk_0x8c;
157};
158
160 pcm_frame_t **frames;
161 int unk_0x4;
162 int unk_0x8;
163 size_t size; /* Must be 2**n */
164 int unk_0x10;
165 size_t max_frames;
166 size_t frame_queue_tip;
167 bxc_cs_t cs;
168};
169
177 void *buffer;
181 size_t size;
191 unsigned int tx_state;
192};
193
215
264extern pcm_codec_context_t *OpenPCMCodec(int direction, int sample_rate, int format);
265
272
273#ifdef __cplusplus
274} // extern "C"
275#endif
276
277#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
struct pcm_state_s pcm_state_t
pcm_state_s
Definition audio.h:70
void(*) pcm_codec_func_t(device_service_pcm_t *pcm, pcm_decoder_buffer_t *src, pcm_decoder_buffer_t *dest)
Codec function.
Definition audio.h:79
void ClosePCMCodec(pcm_codec_context_t *ctx)
Destroy a PCM codec context.
struct pcm_config_s pcm_config_t
pcm_config_s
Definition audio.h:66
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.
struct pcm_frame_s pcm_frame_t
pcm_frame_s
Definition audio.h:72
struct device_service_pcm_s device_service_pcm_t
device_service_pcm_s
Definition audio.h:64
struct pcm_codec_context_s pcm_codec_context_t
pcm_codec_context_s
Definition audio.h:68
const int SAMPLE_RATE_AUTO
Use the default sample rate. Usually this is equivalent to 44100Hz.
Definition audio.h:61
struct pcm_decoder_buffer_s pcm_decoder_buffer_t
pcm_decoder_buffer_s
Definition audio.h:74
Common include file for all muteki-shims headers.
#define SYS_DWORD
Attribute for structure fields that are DWORD (64-bit), that are used by system calls.
Definition common.h:80
Device IO API.
Native threading API.
struct bxc_cs_s bxc_cs_t
Critical section descriptor type.
Definition threading.h:174
Definition audio.h:147
The PCM codec context.
Definition audio.h:132
device_service_pcm_t * service
The PCM service.
Definition audio.h:136
int unk_0x4
Unknown. Initializes to 0.
Definition audio.h:140
pcm_config_t config
Configuration applied to this context.
Definition audio.h:144
The PCM codec configuration.
Definition audio.h:84
int current_direction
Current direction setting in effect.
Definition audio.h:116
int suspended
Set to 1 when the codec is suspended.
Definition audio.h:96
int format
Audio data frame format.
Definition audio.h:111
pcm_codec_func_t codec
Current codec function in effect.
Definition audio.h:92
int sample_rate
Sample rate in Hz.
Definition audio.h:101
int default_direction
Direction setting supplied to direction parameter during descriptor creation.
Definition audio.h:106
unsigned long long trx_bytes
Number of transferred sample bytes.
Definition audio.h:88
void * time_stretcher_ctx
Time stretcher (voice speed control) context.
Definition audio.h:121
void * peak_limiter_ctx
Sample peak limiter context.
Definition audio.h:126
Codec buffer descriptor. Used Internally.
Definition audio.h:197
void * buffer
Pointer to buffer.
Definition audio.h:201
int channels
Channels.
Definition audio.h:213
size_t size
Size of the buffer.
Definition audio.h:205
int sample_rate
Sample rate.
Definition audio.h:209
PCM frame data structure. Used internally.
Definition audio.h:173
unsigned int tx_state
Transfer state.
Definition audio.h:191
size_t pending_size
Size pending transfer.
Definition audio.h:186
void * buffer
Pointer to buffer.
Definition audio.h:177
size_t size
Size of the buffer.
Definition audio.h:181
Definition audio.h:159