|
ascii-chat 0.6.0
Real-time terminal-based video chat with ASCII art conversion
|
Audio ring buffer for real-time audio streaming. More...
#include <lib/ringbuffer.h>
Data Fields | |
| float | data [192000] |
| Audio sample data buffer. | |
| atomic_uint | write_index |
| Write index (producer position) - LOCK-FREE with atomic operations. | |
| atomic_uint | read_index |
| Read index (consumer position) - LOCK-FREE with atomic operations. | |
| atomic_bool | jitter_buffer_filled |
| True after initial jitter buffer fill. | |
| atomic_int | crossfade_samples_remaining |
| Samples remaining in crossfade (0 = no crossfade active) | |
| atomic_bool | 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_uint | 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) | |
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:
Definition at line 208 of file ringbuffer.h.
| atomic_bool audio_ring_buffer::crossfade_fade_in |
True if we're fading in (recovering from underrun)
Definition at line 220 of file ringbuffer.h.
Referenced by audio_ring_buffer_read().
| atomic_int audio_ring_buffer::crossfade_samples_remaining |
Samples remaining in crossfade (0 = no crossfade active)
Definition at line 218 of file ringbuffer.h.
Referenced by audio_ring_buffer_read().
| float audio_ring_buffer::data[192000] |
Audio sample data buffer.
Definition at line 210 of file ringbuffer.h.
Referenced by audio_ring_buffer_clear(), audio_ring_buffer_peek(), audio_ring_buffer_read(), and audio_ring_buffer_write().
| bool audio_ring_buffer::jitter_buffer_enabled |
Whether jitter buffering is enabled (false for capture, true for playback)
Definition at line 226 of file ringbuffer.h.
Referenced by audio_ring_buffer_read().
| atomic_bool audio_ring_buffer::jitter_buffer_filled |
True after initial jitter buffer fill.
Definition at line 216 of file ringbuffer.h.
Referenced by audio_ring_buffer_read().
| float audio_ring_buffer::last_sample |
Last sample value for smooth fade-out during underrun - NOT atomic (only written by reader)
Definition at line 222 of file ringbuffer.h.
Referenced by audio_ring_buffer_clear(), and audio_ring_buffer_read().
| mutex_t audio_ring_buffer::mutex |
Mutex for SLOW PATH only (clear/destroy operations, not regular read/write)
Definition at line 228 of file ringbuffer.h.
Referenced by audio_ring_buffer_clear(), and audio_ring_buffer_destroy().
| atomic_uint audio_ring_buffer::read_index |
Read index (consumer position) - LOCK-FREE with atomic operations.
Definition at line 214 of file ringbuffer.h.
Referenced by audio_ring_buffer_available_read(), audio_ring_buffer_clear(), audio_ring_buffer_peek(), audio_ring_buffer_read(), audio_ring_buffer_write(), and mixer_process_excluding_source().
| atomic_uint audio_ring_buffer::underrun_count |
Count of underrun events for diagnostics.
Definition at line 224 of file ringbuffer.h.
Referenced by audio_ring_buffer_read().
| atomic_uint audio_ring_buffer::write_index |
Write index (producer position) - LOCK-FREE with atomic operations.
Definition at line 212 of file ringbuffer.h.
Referenced by audio_ring_buffer_available_read(), audio_ring_buffer_clear(), audio_ring_buffer_peek(), audio_ring_buffer_read(), and audio_ring_buffer_write().