ascii-chat
Binary v0.15.83-53-gb711d8720
Library lib/v0.3.2-701-gb711d8720
Video chat in your terminal
Loading...
Searching...
No Matches

🔊 Session-level audio coordination implementation More...

Go to the source code of this file.

Data Structures

struct  session_audio_source_t
 One participant's audio input in the host mixer. More...
struct  session_audio_ctx
 Session-owned audio capture, playback, and host-mixing state. More...

Macros

#define SESSION_AUDIO_MAX_SOURCES   MAX_SESSION_PARTICIPANTS
 One participant's audio input in the host mixer.

Functions

session_audio_ctx_t * session_audio_create (bool is_host)
 Create a new session audio context.
void session_audio_destroy (session_audio_ctx_t *ctx)
 Destroy session audio context and free resources.
asciichat_error_t session_audio_start_capture (session_audio_ctx_t *ctx)
 Start audio capture (microphone input).
asciichat_error_t session_audio_start_playback (session_audio_ctx_t *ctx)
 Start audio playback (speaker output).
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.
bool session_audio_is_running (session_audio_ctx_t *ctx)
 Check if audio is currently running.
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_write_playback (session_audio_ctx_t *ctx, const float *buffer, size_t num_samples)
 Write audio samples for playback.
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).
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).
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)
void * session_audio_get_context (session_audio_ctx_t *ctx)

Detailed Description

🔊 Session-level audio coordination implementation

Implements the session audio wrapper for coordinating audio capture, playback, and mixing at the session level.

Author
Zachary Fogg me@zf.nosp@m.o.gg
Date
January 2026

Definition in file src/common/session/audio.c.

Macro Definition Documentation

◆ SESSION_AUDIO_MAX_SOURCES

#define SESSION_AUDIO_MAX_SOURCES   MAX_SESSION_PARTICIPANTS

One participant's audio input in the host mixer.

For session audio ctx, this is the live record that ties audio_ctx, pipeline, is_host, running together. The owning code creates it, updates it while work is active, and releases its handles and pointed-to storage before freeing the record.

Maximum number of audio sources for mixing

Definition at line 33 of file src/common/session/audio.c.

Referenced by session_audio_add_source(), session_audio_create(), session_audio_destroy(), session_audio_mix_excluding(), session_audio_remove_source(), and session_audio_write_source().

Function Documentation

◆ session_audio_get_context()

void * session_audio_get_context ( session_audio_ctx_t * ctx)

Definition at line 389 of file src/common/session/audio.c.

389 {
390 return ctx ? &ctx->audio_ctx : NULL;
391}
audio_context_t audio_ctx
Underlying audio context from lib/audio.

References session_audio_ctx::audio_ctx.

Referenced by session_participant_start_audio().

◆ session_audio_set_capture_source()

void session_audio_set_capture_source ( session_audio_ctx_t * ctx,
void * source )

Definition at line 380 of file src/common/session/audio.c.

380 {
381 if (ctx && !ctx->running) {
382 audio_set_pipeline(&ctx->audio_ctx, NULL);
384 ctx->pipeline = NULL;
386 }
387}
void client_audio_pipeline_destroy(client_audio_pipeline_t *pipeline)
Destroy a client audio pipeline.
audio_visualization_source_t source
Definition fft.c:24
void audio_set_pipeline(audio_context_t *ctx, void *pipeline)
Set audio pipeline for echo cancellation.
void * capture_media_source
Borrowed local media audio; configure before starting duplex.
bool running
Audio streams are currently running.
client_audio_pipeline_t * pipeline

References session_audio_ctx::audio_ctx, audio_set_pipeline(), audio_context_t::capture_media_source, client_audio_pipeline_destroy(), session_audio_ctx::pipeline, session_audio_ctx::running, and source.

Referenced by session_participant_start_audio().