ascii-chat 0.6.0
Real-time terminal-based video chat with ASCII art conversion
Loading...
Searching...
No Matches
audio.h File Reference

🔊 Audio Capture and Playback Interface for ascii-chat More...

Go to the source code of this file.

Data Structures

struct  audio_context_t
 Audio context for full-duplex capture and playback. More...
 
struct  audio_device_info_t
 Audio device information structure. More...
 
struct  audio_batch_info_t
 Parsed audio batch packet header information. More...
 

Macros

#define AUDIO_SAMPLE_RATE   48000
 Audio sample rate (48kHz professional quality, Opus-compatible)
 
#define AUDIO_FRAMES_PER_BUFFER   480
 Audio frames per buffer (480 = 10ms at 48kHz, matches WebRTC AEC3 frame size)
 
#define AUDIO_CHANNELS   1
 Number of audio channels (1 = mono)
 
#define AUDIO_BUFFER_SIZE   (AUDIO_FRAMES_PER_BUFFER * AUDIO_CHANNELS)
 Total audio buffer size (frames × channels)
 
#define AUDIO_DEVICE_NAME_MAX   256
 Maximum length of audio device name.
 

Functions

asciichat_error_t audio_init (audio_context_t *ctx)
 Initialize audio context and PortAudio.
 
void audio_destroy (audio_context_t *ctx)
 Destroy audio context and clean up resources.
 
void audio_set_pipeline (audio_context_t *ctx, void *pipeline)
 Set audio pipeline for echo cancellation.
 
asciichat_error_t audio_start_duplex (audio_context_t *ctx)
 Start full-duplex audio (simultaneous capture and playback)
 
asciichat_error_t audio_stop_duplex (audio_context_t *ctx)
 Stop full-duplex audio.
 
asciichat_error_t audio_read_samples (audio_context_t *ctx, float *buffer, int num_samples)
 Read captured audio samples from capture buffer.
 
asciichat_error_t audio_write_samples (audio_context_t *ctx, const float *buffer, int num_samples)
 Write audio samples to playback buffer.
 
asciichat_error_t audio_set_realtime_priority (void)
 Request real-time priority for current thread.
 
asciichat_error_t audio_list_input_devices (audio_device_info_t **out_devices, unsigned int *out_count)
 List available audio input devices (microphones)
 
asciichat_error_t audio_list_output_devices (audio_device_info_t **out_devices, unsigned int *out_count)
 List available audio output devices (speakers)
 
void audio_free_device_list (audio_device_info_t *devices)
 Free device list allocated by audio_list_input_devices/audio_list_output_devices.
 
asciichat_error_t audio_dequantize_samples (const uint8_t *samples_ptr, uint32_t total_samples, float *out_samples)
 Dequantize network audio samples from int32 to float.
 
audio_ring_buffer_taudio_ring_buffer_create (void)
 Create a new audio ring buffer (for playback with jitter buffering)
 
audio_ring_buffer_taudio_ring_buffer_create_for_capture (void)
 Create a new audio ring buffer for capture (without jitter buffering)
 
void audio_ring_buffer_destroy (audio_ring_buffer_t *rb)
 Destroy an audio ring buffer.
 
void audio_ring_buffer_clear (audio_ring_buffer_t *rb)
 Clear all audio samples from ring buffer.
 
asciichat_error_t audio_ring_buffer_write (audio_ring_buffer_t *rb, const float *data, int samples)
 Write audio samples to ring buffer.
 
size_t audio_ring_buffer_read (audio_ring_buffer_t *rb, float *data, size_t samples)
 Read audio samples from ring buffer.
 
size_t audio_ring_buffer_peek (audio_ring_buffer_t *rb, float *data, size_t samples)
 Peek at available samples without consuming them (for AEC3 render signal)
 
size_t audio_ring_buffer_available_read (audio_ring_buffer_t *rb)
 Get number of samples available for reading.
 
size_t audio_ring_buffer_available_write (audio_ring_buffer_t *rb)
 Get number of sample slots available for writing.
 
void resample_linear (const float *src, size_t src_samples, float *dst, size_t dst_samples, double src_rate, double dst_rate)
 Resample audio using linear interpolation.
 
asciichat_error_t audio_parse_batch_header (const void *data, size_t len, audio_batch_info_t *out_batch)
 Parse an audio batch packet header from raw packet data.
 
asciichat_error_t audio_validate_batch_params (const audio_batch_info_t *batch)
 Validate audio batch parameters for sanity.
 
bool audio_is_supported_sample_rate (uint32_t sample_rate)
 Check if a sample rate is a standard/supported rate.
 

Detailed Description

🔊 Audio Capture and Playback Interface for ascii-chat

Definition in file lib/audio/audio.h.

Macro Definition Documentation

◆ AUDIO_DEVICE_NAME_MAX

#define AUDIO_DEVICE_NAME_MAX   256

Maximum length of audio device name.

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