ascii-chat 0.11.33
Video chat in your terminal
Loading...
Searching...
No Matches
audio_ring_buffer Struct Reference

Audio ring buffer for real-time audio streaming. More...

#include <include/ascii-chat/ringbuffer.h>

Data Fields

float data [192000]
 Audio sample data buffer.
 
atomic_t write_index
 Write index (producer position) - LOCK-FREE with atomic operations.
 
atomic_t read_index
 Read index (consumer position) - LOCK-FREE with atomic operations.
 
atomic_t discard_pending
 Consumer should discard queued samples before its next read.
 
atomic_t discard_to_index
 Producer position at which the stale queue ends.
 
atomic_t jitter_buffer_filled
 True after initial jitter buffer fill.
 
atomic_t crossfade_samples_remaining
 Samples remaining in crossfade (0 = no crossfade active)
 
atomic_t crossfade_fade_in
 True if we're fading in (recovering from underrun)
 
float last_sample
 Last sample value for smooth fade-out during underrun - NOT atomic (only written by reader)
 
atomic_t underrun_count
 Count of underrun events for diagnostics.
 
bool jitter_buffer_enabled
 Whether jitter buffering is enabled (false for capture, true for playback)
 
mutex_t mutex
 Mutex for SLOW PATH only (clear/destroy operations, not regular read/write)
 

Detailed Description

Audio ring buffer for real-time audio streaming.

Specialized ring buffer for audio samples with jitter buffering to compensate for network latency and packet timing variations. Uses mutex-protected operations for thread-safe audio access.

Features:

  • Jitter buffering: waits for threshold fill before starting playback
  • Low water mark: resets jitter state when buffer runs low
  • Crossfade: smoothly fades audio in/out during underrun recovery
  • Underrun tracking: counts underruns for diagnostics

Definition at line 205 of file ringbuffer.h.

Field Documentation

◆ crossfade_fade_in

atomic_t audio_ring_buffer::crossfade_fade_in

True if we're fading in (recovering from underrun)

Definition at line 221 of file ringbuffer.h.

Referenced by audio_ring_buffer_read(), audio_ring_buffer_register_atomics(), and audio_ring_buffer_unregister_atomics().

◆ crossfade_samples_remaining

atomic_t audio_ring_buffer::crossfade_samples_remaining

Samples remaining in crossfade (0 = no crossfade active)

Definition at line 219 of file ringbuffer.h.

Referenced by audio_ring_buffer_read(), audio_ring_buffer_register_atomics(), and audio_ring_buffer_unregister_atomics().

◆ data

float audio_ring_buffer::data[192000]

◆ discard_pending

atomic_t audio_ring_buffer::discard_pending

Consumer should discard queued samples before its next read.

Definition at line 213 of file ringbuffer.h.

Referenced by audio_ring_buffer_clear(), audio_ring_buffer_discard_pending(), and audio_ring_buffer_read().

◆ discard_to_index

atomic_t audio_ring_buffer::discard_to_index

◆ jitter_buffer_enabled

bool audio_ring_buffer::jitter_buffer_enabled

Whether jitter buffering is enabled (false for capture, true for playback)

Definition at line 227 of file ringbuffer.h.

Referenced by audio_ring_buffer_read(), and audio_ring_buffer_write().

◆ jitter_buffer_filled

atomic_t audio_ring_buffer::jitter_buffer_filled

True after initial jitter buffer fill.

Definition at line 217 of file ringbuffer.h.

Referenced by audio_ring_buffer_read(), audio_ring_buffer_register_atomics(), and audio_ring_buffer_unregister_atomics().

◆ last_sample

float audio_ring_buffer::last_sample

Last sample value for smooth fade-out during underrun - NOT atomic (only written by reader)

Definition at line 223 of file ringbuffer.h.

Referenced by audio_ring_buffer_clear(), and audio_ring_buffer_read().

◆ mutex

mutex_t audio_ring_buffer::mutex

Mutex for SLOW PATH only (clear/destroy operations, not regular read/write)

Definition at line 229 of file ringbuffer.h.

Referenced by audio_ring_buffer_clear(), and audio_ring_buffer_destroy().

◆ read_index

◆ underrun_count

atomic_t audio_ring_buffer::underrun_count

Count of underrun events for diagnostics.

Definition at line 225 of file ringbuffer.h.

Referenced by audio_ring_buffer_read(), audio_ring_buffer_register_atomics(), and audio_ring_buffer_unregister_atomics().

◆ write_index


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