ascii-chat 0.11.33
Video chat in your terminal
Loading...
Searching...
No Matches
src/common/session/audio.h
Go to the documentation of this file.
1
37#pragma once
38
39#include <stdbool.h>
40#include <stddef.h>
41#include <stdint.h>
43
44/* ============================================================================
45 * Session Audio Context
46 * ============================================================================ */
47
57
58/* ============================================================================
59 * Session Audio Lifecycle Functions
60 * @{
61 */
62
77
88
91/* ============================================================================
92 * Session Audio Control Functions
93 * @{
94 */
95
107
119
132
142
151
154/* ============================================================================
155 * Session Audio I/O Functions
156 * @{
157 */
158
171size_t session_audio_read_captured(session_audio_ctx_t *ctx, float *buffer, size_t num_samples);
172
185asciichat_error_t session_audio_write_playback(session_audio_ctx_t *ctx, const float *buffer, size_t num_samples);
186
189/* ============================================================================
190 * Session Audio Host-Only Functions (Mixing)
191 * @{
192 */
193
208
221
237 size_t num_samples);
238
255size_t session_audio_mix_excluding(session_audio_ctx_t *ctx, uint32_t exclude_id, float *output, size_t num_samples);
256
261/* Configure a borrowed local source before starting audio. */
⚠️‼️ Comprehensive thread-local error context system for ascii-chat
unsigned int uint32_t
Definition common.h:58
asciichat_error_t
Error and exit codes - unified status values (0-255)
Definition error_codes.h:49
asciichat_error_t session_audio_write_playback(session_audio_ctx_t *ctx, const float *buffer, size_t num_samples)
Write audio samples for playback.
size_t session_audio_read_captured(session_audio_ctx_t *ctx, float *buffer, size_t num_samples)
Read captured audio samples.
asciichat_error_t session_audio_start_capture(session_audio_ctx_t *ctx)
Start audio capture (microphone input)
void session_audio_destroy(session_audio_ctx_t *ctx)
Destroy session audio context and free resources.
asciichat_error_t session_audio_start_playback(session_audio_ctx_t *ctx)
Start audio playback (speaker output)
bool session_audio_is_running(session_audio_ctx_t *ctx)
Check if audio is currently running.
asciichat_error_t session_audio_write_source(session_audio_ctx_t *ctx, uint32_t source_id, const float *samples, size_t num_samples)
Write audio samples from a specific source (host only)
asciichat_error_t session_audio_start_duplex(session_audio_ctx_t *ctx)
Start full-duplex audio (simultaneous capture and playback)
void session_audio_stop(session_audio_ctx_t *ctx)
Stop all audio streams.
asciichat_error_t session_audio_add_source(session_audio_ctx_t *ctx, uint32_t source_id)
Add an audio source for mixing (host only)
void session_audio_remove_source(session_audio_ctx_t *ctx, uint32_t source_id)
Remove an audio source from mixing (host only)
session_audio_ctx_t * session_audio_create(bool is_host)
Create a new session audio context.
size_t session_audio_mix_excluding(session_audio_ctx_t *ctx, uint32_t exclude_id, float *output, size_t num_samples)
Mix all sources except one and return the result (host only)
void session_audio_set_capture_source(session_audio_ctx_t *ctx, void *source)
ClangTool/LibTooling compatibility shim for stdbool.h.
Internal session audio context structure.
bool is_host
True if this is a host context (has mixing capabilities)