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

Audio processing options. More...

Go to the source code of this file.

Variables

const registry_entry_t g_audio_entries []
 

Detailed Description

Audio processing options.

Options for audio input/output devices, volume control, audio sources, encoding, and mixing.

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

Definition in file lib/options/registry/audio.c.

Variable Documentation

◆ g_audio_entries

const registry_entry_t g_audio_entries[]

Definition at line 21 of file lib/options/registry/audio.c.

21 {
22 // AUDIO GROUP (client, discovery)
23 {"audio",
24 'A',
25 OPTION_TYPE_BOOL,
26 offsetof(options_t, audio_enabled),
27 &default_audio_enabled_value,
28 sizeof(bool),
29 "Enable audio streaming (press 'm' during rendering to toggle).",
30 "AUDIO",
31 NULL,
32 false,
33 "ASCII_CHAT_AUDIO",
34 NULL,
35 NULL,
36 false,
37 false,
38 OPTION_MODE_CLIENT | OPTION_MODE_MIRROR | OPTION_MODE_DISCOVERY,
39 {0},
40 NULL},
41 {"microphone-index",
42 '\0',
43 OPTION_TYPE_INT,
44 offsetof(options_t, microphone_index),
45 &default_microphone_index_value,
46 sizeof(int),
47 "Microphone device index for audio input.",
48 "AUDIO",
49 NULL,
50 false,
51 "ASCII_CHAT_MICROPHONE_INDEX",
52 NULL,
53 NULL,
54 false,
55 false,
56 OPTION_MODE_CLIENT | OPTION_MODE_DISCOVERY,
57 {.numeric_range = {-1, 10, 1}, .examples = g_mic_examples, .input_type = OPTION_INPUT_NUMERIC},
58 NULL},
59 {"speakers-index",
60 '\0',
61 OPTION_TYPE_INT,
62 offsetof(options_t, speakers_index),
63 &default_speakers_index_value,
64 sizeof(int),
65 "Speakers device index to use for audio output.",
66 "AUDIO",
67 NULL,
68 false,
69 "ASCII_CHAT_SPEAKERS_INDEX",
70 NULL,
71 NULL,
72 false,
73 false,
74 OPTION_MODE_CLIENT | OPTION_MODE_DISCOVERY,
75 {.numeric_range = {-1, 10, 1}, .examples = g_speakers_examples, .input_type = OPTION_INPUT_NUMERIC},
76 NULL},
77 {"microphone-volume",
78 '\0',
79 OPTION_TYPE_CALLBACK,
80 offsetof(options_t, microphone_sensitivity),
81 &default_microphone_sensitivity_value,
82 sizeof(float),
83 "Microphone volume multiplier (0.0-1.0).",
84 "AUDIO",
85 NULL,
86 false,
87 "ASCII_CHAT_MICROPHONE_VOLUME",
88 NULL,
90 false,
91 false,
92 OPTION_MODE_CLIENT | OPTION_MODE_MIRROR | OPTION_MODE_DISCOVERY,
93 {.numeric_range = {0, 1, 0}},
94 NULL},
95 {"ivolume",
96 '\0',
97 OPTION_TYPE_CALLBACK,
98 offsetof(options_t, microphone_sensitivity),
99 &default_microphone_sensitivity_value,
100 sizeof(float),
101 "Alias for --microphone-volume.",
102 "AUDIO",
103 NULL,
104 false,
105 "ASCII_CHAT_IVOLUME",
106 NULL,
108 false,
109 false,
110 OPTION_MODE_CLIENT | OPTION_MODE_MIRROR | OPTION_MODE_DISCOVERY,
111 {.numeric_range = {0, 1, 0}},
112 NULL},
113 {"speakers-volume",
114 '\0',
115 OPTION_TYPE_CALLBACK,
116 offsetof(options_t, speakers_volume),
117 &default_speakers_volume_value,
118 sizeof(float),
119 "Speakers volume multiplier (0.0-1.0; press ↑/↓ during rendering to adjust).",
120 "AUDIO",
121 NULL,
122 false,
123 "ASCII_CHAT_SPEAKERS_VOLUME",
124 NULL,
126 false,
127 false,
128 OPTION_MODE_CLIENT | OPTION_MODE_MIRROR | OPTION_MODE_DISCOVERY,
129 {.numeric_range = {0, 1, 0}},
130 NULL},
131 {"volume",
132 '\0',
133 OPTION_TYPE_CALLBACK,
134 offsetof(options_t, speakers_volume),
135 &default_speakers_volume_value,
136 sizeof(float),
137 "Alias for --speakers-volume.",
138 "AUDIO",
139 NULL,
140 false,
141 "ASCII_CHAT_VOLUME",
142 NULL,
144 false,
145 false,
146 OPTION_MODE_CLIENT | OPTION_MODE_MIRROR | OPTION_MODE_DISCOVERY,
147 {.numeric_range = {0, 1, 0}},
148 NULL},
149 {"audio-source",
150 '\0',
151 OPTION_TYPE_CALLBACK,
152 offsetof(options_t, audio_source),
153 &default_audio_source_value,
154 sizeof(audio_source_t),
155 "Select which audio sources to use: auto (smart), mic, media, or both.",
156 "AUDIO",
157 NULL,
158 false,
159 "ASCII_CHAT_AUDIO_SOURCE",
160 NULL,
162 false,
163 false,
164 OPTION_MODE_CLIENT | OPTION_MODE_MIRROR | OPTION_MODE_DISCOVERY,
165 {.enum_values = g_audio_source_values,
166 .enum_descriptions = g_audio_source_descs,
167 .enum_integer_values = g_audio_source_integers,
168 .input_type = OPTION_INPUT_ENUM},
169 NULL},
170#ifdef DEBUG
171 {"audio-analysis",
172 '\0',
173 OPTION_TYPE_BOOL,
174 offsetof(options_t, audio_analysis_enabled),
175 &default_audio_analysis_value,
176 sizeof(bool),
177 "Enable audio analysis (debug).",
178 "AUDIO",
179 NULL,
180 false,
181 "ASCII_CHAT_AUDIO_ANALYSIS",
182 NULL,
183 NULL,
184 false,
185 false,
186 OPTION_MODE_CLIENT | OPTION_MODE_DISCOVERY,
187 {0},
188 NULL},
189#endif
190 {"no-audio-playback",
191 '\0',
192 OPTION_TYPE_BOOL,
193 offsetof(options_t, audio_no_playback),
194 &default_no_audio_playback_value,
195 sizeof(bool),
196 "Disable speakers output.",
197 "AUDIO",
198 NULL,
199 false,
200 "ASCII_CHAT_NO_AUDIO_PLAYBACK",
201 NULL,
202 NULL,
203 false,
204 false,
205 OPTION_MODE_CLIENT | OPTION_MODE_DISCOVERY,
206 {0},
207 NULL},
208 {"encode-audio",
209 '\0',
210 OPTION_TYPE_BOOL,
211 offsetof(options_t, encode_audio),
212 &default_encode_audio_value,
213 sizeof(bool),
214 "Enable Opus audio encoding.",
215 "AUDIO",
216 NULL,
217 false,
218 "ASCII_CHAT_ENCODE_AUDIO",
219 NULL,
220 NULL,
221 false,
222 false,
223 OPTION_MODE_CLIENT | OPTION_MODE_DISCOVERY,
224 {0},
225 NULL},
226 {"no-encode-audio",
227 '\0',
228 OPTION_TYPE_BOOL,
229 offsetof(options_t, encode_audio),
230 &default_no_encode_audio_value,
231 sizeof(bool),
232 "Disable Opus audio encoding.",
233 "AUDIO",
234 NULL,
235 false,
236 "ASCII_CHAT_NO_ENCODE_AUDIO",
237 NULL,
238 NULL,
239 false,
240 false,
241 OPTION_MODE_CLIENT | OPTION_MODE_DISCOVERY,
242 {0},
243 NULL},
244 {"no-audio-mixer",
245 '\0',
246 OPTION_TYPE_BOOL,
247 offsetof(options_t, no_audio_mixer),
248 &default_no_audio_mixer_value,
249 sizeof(bool),
250 "Use simple audio mixing without ducking or compression (debug mode only).",
251 "AUDIO",
252 NULL,
253 false,
254 "ASCII_CHAT_NO_AUDIO_MIXER",
255 NULL,
256 NULL,
257 false,
258 false,
259 OPTION_MODE_SERVER,
260 {0},
261 NULL},
262 {"list-microphones",
263 '\0',
264 OPTION_TYPE_ACTION,
265 0,
266 NULL,
267 0,
268 "List available audio input devices by index and exit.",
269 "AUDIO",
270 NULL,
271 false,
272 NULL,
273 NULL,
274 NULL,
275 false,
276 false,
277 OPTION_MODE_BINARY,
278 {0},
279 NULL},
280 {"list-speakers",
281 '\0',
282 OPTION_TYPE_ACTION,
283 0,
284 NULL,
285 0,
286 "List available audio output devices by index and exit.",
287 "AUDIO",
288 NULL,
289 false,
290 NULL,
291 NULL,
292 NULL,
293 false,
294 false,
295 OPTION_MODE_BINARY,
296 {0},
297 NULL},
298
299 REGISTRY_TERMINATOR()};
const char * g_audio_source_descs[]
Definition metadata.c:126
const char * g_speakers_examples[]
Definition metadata.c:146
const char * g_audio_source_values[]
Definition metadata.c:124
const char * g_mic_examples[]
Definition metadata.c:145
const int g_audio_source_integers[]
Definition metadata.c:125
bool parse_audio_source(const char *arg, void *dest, char **error_msg)
Definition parsers.c:1041
bool parse_volume(const char *arg, void *dest, char **error_msg)
Definition parsers.c:975
#define bool
Definition stdbool.h:22