ascii-chat 0.6.0
Real-time terminal-based video chat with ASCII art conversion
Loading...
Searching...
No Matches
audio_context_t Struct Reference

Audio context for full-duplex capture and playback. More...

#include <lib/audio/audio.h>

Data Fields

PaStream * duplex_stream
 PortAudio full-duplex stream (simultaneous input+output)
 
PaStream * input_stream
 Separate input stream (when full-duplex unavailable)
 
PaStream * output_stream
 Separate output stream (when full-duplex unavailable)
 
audio_ring_buffer_tcapture_buffer
 Ring buffer for processed capture (after AEC3) for encoder thread.
 
audio_ring_buffer_tplayback_buffer
 Ring buffer for decoded audio from network.
 
audio_ring_buffer_trender_buffer
 Ring buffer for render reference (separate streams mode)
 
bool initialized
 True if context has been initialized.
 
bool running
 True if duplex stream is active.
 
bool separate_streams
 True if using separate input/output streams.
 
_Atomic bool shutting_down
 True when shutdown started - callback outputs silence.
 
mutex_t state_mutex
 Mutex protecting context state.
 
void * audio_pipeline
 Client audio pipeline for AEC3 echo cancellation (opaque pointer)
 
double sample_rate
 Actual sample rate of streams (48kHz)
 
double input_device_rate
 Native sample rate of input device.
 
double output_device_rate
 Native sample rate of output device.
 

Detailed Description

Audio context for full-duplex capture and playback.

Manages a single PortAudio full-duplex stream for simultaneous audio capture and playback. Uses a single callback that receives both render (speaker output) and capture (microphone input) at the EXACT same instant, enabling perfect timing for WebRTC AEC3 echo cancellation.

Note
The audio context must be initialized with audio_init() before use.
Use audio_start_duplex()/audio_stop_duplex() to control the stream.
State is protected by state_mutex for thread-safe operations.

Definition at line 114 of file lib/audio/audio.h.

Field Documentation

◆ audio_pipeline

void* audio_context_t::audio_pipeline

Client audio pipeline for AEC3 echo cancellation (opaque pointer)

Definition at line 126 of file lib/audio/audio.h.

Referenced by audio_set_pipeline().

◆ capture_buffer

audio_ring_buffer_t* audio_context_t::capture_buffer

Ring buffer for processed capture (after AEC3) for encoder thread.

Definition at line 118 of file lib/audio/audio.h.

Referenced by audio_destroy(), audio_init(), and audio_read_samples().

◆ duplex_stream

PaStream* audio_context_t::duplex_stream

PortAudio full-duplex stream (simultaneous input+output)

Definition at line 115 of file lib/audio/audio.h.

Referenced by audio_start_duplex(), and audio_stop_duplex().

◆ initialized

bool audio_context_t::initialized

True if context has been initialized.

Definition at line 121 of file lib/audio/audio.h.

Referenced by audio_cleanup(), audio_destroy(), audio_init(), audio_read_samples(), audio_start_duplex(), audio_stop_duplex(), and audio_write_samples().

◆ input_device_rate

double audio_context_t::input_device_rate

Native sample rate of input device.

Definition at line 128 of file lib/audio/audio.h.

Referenced by audio_start_duplex().

◆ input_stream

PaStream* audio_context_t::input_stream

Separate input stream (when full-duplex unavailable)

Definition at line 116 of file lib/audio/audio.h.

Referenced by audio_start_duplex(), and audio_stop_duplex().

◆ output_device_rate

double audio_context_t::output_device_rate

Native sample rate of output device.

Definition at line 129 of file lib/audio/audio.h.

Referenced by audio_start_duplex().

◆ output_stream

PaStream* audio_context_t::output_stream

Separate output stream (when full-duplex unavailable)

Definition at line 117 of file lib/audio/audio.h.

Referenced by audio_start_duplex(), and audio_stop_duplex().

◆ playback_buffer

audio_ring_buffer_t* audio_context_t::playback_buffer

Ring buffer for decoded audio from network.

Definition at line 119 of file lib/audio/audio.h.

Referenced by audio_destroy(), audio_init(), audio_process_received_samples(), audio_stop_duplex(), and audio_write_samples().

◆ render_buffer

audio_ring_buffer_t* audio_context_t::render_buffer

Ring buffer for render reference (separate streams mode)

Definition at line 120 of file lib/audio/audio.h.

Referenced by audio_start_duplex(), and audio_stop_duplex().

◆ running

bool audio_context_t::running

True if duplex stream is active.

Definition at line 122 of file lib/audio/audio.h.

Referenced by audio_destroy(), audio_start_duplex(), and audio_stop_duplex().

◆ sample_rate

double audio_context_t::sample_rate

Actual sample rate of streams (48kHz)

Definition at line 127 of file lib/audio/audio.h.

Referenced by audio_start_duplex().

◆ separate_streams

bool audio_context_t::separate_streams

True if using separate input/output streams.

Definition at line 123 of file lib/audio/audio.h.

Referenced by audio_start_duplex(), and audio_stop_duplex().

◆ shutting_down

_Atomic bool audio_context_t::shutting_down

True when shutdown started - callback outputs silence.

Definition at line 124 of file lib/audio/audio.h.

Referenced by audio_init(), audio_stop_duplex(), and audio_write_samples().

◆ state_mutex

mutex_t audio_context_t::state_mutex

Mutex protecting context state.

Definition at line 125 of file lib/audio/audio.h.

Referenced by audio_destroy(), audio_init(), audio_start_duplex(), and audio_stop_duplex().


The documentation for this struct was generated from the following file: