mirror of
https://github.com/Ryujinx/libsoundio.git
synced 2024-12-23 08:45:37 +00:00
rename device name and description to id and name
This commit is contained in:
parent
12db5fd970
commit
4ba1fd91a1
|
@ -275,7 +275,6 @@ view `coverage/index.html` in a browser.
|
||||||
0. Allow calling functions from outside the callbacks as long as they first
|
0. Allow calling functions from outside the callbacks as long as they first
|
||||||
call lock and then unlock when done.
|
call lock and then unlock when done.
|
||||||
0. Should pause/resume be callable from outside the callbacks?
|
0. Should pause/resume be callable from outside the callbacks?
|
||||||
0. device.name -> device.id, device.description -> device.name
|
|
||||||
0. clean up API and improve documentation
|
0. clean up API and improve documentation
|
||||||
- make sure every function which can return an error documents which errors
|
- make sure every function which can return an error documents which errors
|
||||||
it can return
|
it can return
|
||||||
|
|
|
@ -32,8 +32,8 @@ static void print_channel_layout(const struct SoundIoChannelLayout *layout) {
|
||||||
static void print_device(struct SoundIoDevice *device, bool is_default) {
|
static void print_device(struct SoundIoDevice *device, bool is_default) {
|
||||||
const char *default_str = is_default ? " (default)" : "";
|
const char *default_str = is_default ? " (default)" : "";
|
||||||
const char *raw_str = device->is_raw ? " (raw)" : "";
|
const char *raw_str = device->is_raw ? " (raw)" : "";
|
||||||
fprintf(stderr, "%s%s%s\n", device->description, default_str, raw_str);
|
fprintf(stderr, "%s%s%s\n", device->name, default_str, raw_str);
|
||||||
fprintf(stderr, " name: %s\n", device->name);
|
fprintf(stderr, " id: %s\n", device->id);
|
||||||
|
|
||||||
if (device->probe_error) {
|
if (device->probe_error) {
|
||||||
fprintf(stderr, " probe error: %s\n", soundio_strerror(device->probe_error));
|
fprintf(stderr, " probe error: %s\n", soundio_strerror(device->probe_error));
|
||||||
|
|
|
@ -149,15 +149,15 @@ static void underflow_callback(struct SoundIoOutStream *outstream) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static int usage(char *exe) {
|
static int usage(char *exe) {
|
||||||
fprintf(stderr, "Usage: %s [--dummy] [--alsa] [--pulseaudio] [--jack] [--in-device name] [--out-device name]\n", exe);
|
fprintf(stderr, "Usage: %s [--dummy] [--alsa] [--pulseaudio] [--jack] [--in-device id] [--out-device id]\n", exe);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
char *exe = argv[0];
|
char *exe = argv[0];
|
||||||
enum SoundIoBackend backend = SoundIoBackendNone;
|
enum SoundIoBackend backend = SoundIoBackendNone;
|
||||||
char *in_device_name = NULL;
|
char *in_device_id = NULL;
|
||||||
char *out_device_name = NULL;
|
char *out_device_id = NULL;
|
||||||
for (int i = 1; i < argc; i += 1) {
|
for (int i = 1; i < argc; i += 1) {
|
||||||
char *arg = argv[i];
|
char *arg = argv[i];
|
||||||
if (strcmp("--dummy", arg) == 0) {
|
if (strcmp("--dummy", arg) == 0) {
|
||||||
|
@ -172,13 +172,13 @@ int main(int argc, char **argv) {
|
||||||
if (++i >= argc) {
|
if (++i >= argc) {
|
||||||
return usage(exe);
|
return usage(exe);
|
||||||
} else {
|
} else {
|
||||||
in_device_name = argv[i];
|
in_device_id = argv[i];
|
||||||
}
|
}
|
||||||
} else if (strcmp("--out-device", arg) == 0) {
|
} else if (strcmp("--out-device", arg) == 0) {
|
||||||
if (++i >= argc) {
|
if (++i >= argc) {
|
||||||
return usage(exe);
|
return usage(exe);
|
||||||
} else {
|
} else {
|
||||||
out_device_name = argv[i];
|
out_device_id = argv[i];
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return usage(exe);
|
return usage(exe);
|
||||||
|
@ -203,11 +203,11 @@ int main(int argc, char **argv) {
|
||||||
panic("no output device found");
|
panic("no output device found");
|
||||||
|
|
||||||
int in_device_index = default_in_device_index;
|
int in_device_index = default_in_device_index;
|
||||||
if (in_device_name) {
|
if (in_device_id) {
|
||||||
bool found = false;
|
bool found = false;
|
||||||
for (int i = 0; i < soundio_input_device_count(soundio); i += 1) {
|
for (int i = 0; i < soundio_input_device_count(soundio); i += 1) {
|
||||||
struct SoundIoDevice *device = soundio_get_input_device(soundio, i);
|
struct SoundIoDevice *device = soundio_get_input_device(soundio, i);
|
||||||
if (strcmp(device->name, in_device_name) == 0) {
|
if (strcmp(device->id, in_device_id) == 0) {
|
||||||
in_device_index = i;
|
in_device_index = i;
|
||||||
found = true;
|
found = true;
|
||||||
soundio_device_unref(device);
|
soundio_device_unref(device);
|
||||||
|
@ -216,15 +216,15 @@ int main(int argc, char **argv) {
|
||||||
soundio_device_unref(device);
|
soundio_device_unref(device);
|
||||||
}
|
}
|
||||||
if (!found)
|
if (!found)
|
||||||
panic("invalid input device name: %s", in_device_name);
|
panic("invalid input device id: %s", in_device_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
int out_device_index = default_out_device_index;
|
int out_device_index = default_out_device_index;
|
||||||
if (out_device_name) {
|
if (out_device_id) {
|
||||||
bool found = false;
|
bool found = false;
|
||||||
for (int i = 0; i < soundio_output_device_count(soundio); i += 1) {
|
for (int i = 0; i < soundio_output_device_count(soundio); i += 1) {
|
||||||
struct SoundIoDevice *device = soundio_get_output_device(soundio, i);
|
struct SoundIoDevice *device = soundio_get_output_device(soundio, i);
|
||||||
if (strcmp(device->name, out_device_name) == 0) {
|
if (strcmp(device->id, out_device_id) == 0) {
|
||||||
out_device_index = i;
|
out_device_index = i;
|
||||||
found = true;
|
found = true;
|
||||||
soundio_device_unref(device);
|
soundio_device_unref(device);
|
||||||
|
@ -233,7 +233,7 @@ int main(int argc, char **argv) {
|
||||||
soundio_device_unref(device);
|
soundio_device_unref(device);
|
||||||
}
|
}
|
||||||
if (!found)
|
if (!found)
|
||||||
panic("invalid output device name: %s", out_device_name);
|
panic("invalid output device id: %s", out_device_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct SoundIoDevice *out_device = soundio_get_output_device(soundio, out_device_index);
|
struct SoundIoDevice *out_device = soundio_get_output_device(soundio, out_device_index);
|
||||||
|
@ -244,8 +244,8 @@ int main(int argc, char **argv) {
|
||||||
if (!in_device)
|
if (!in_device)
|
||||||
panic("could not get input device: out of memory");
|
panic("could not get input device: out of memory");
|
||||||
|
|
||||||
fprintf(stderr, "Input device: %s\n", in_device->description);
|
fprintf(stderr, "Input device: %s\n", in_device->name);
|
||||||
fprintf(stderr, "Output device: %s\n", out_device->description);
|
fprintf(stderr, "Output device: %s\n", out_device->name);
|
||||||
|
|
||||||
soundio_device_sort_channel_layouts(out_device);
|
soundio_device_sort_channel_layouts(out_device);
|
||||||
const struct SoundIoChannelLayout *layout = soundio_best_matching_channel_layout(
|
const struct SoundIoChannelLayout *layout = soundio_best_matching_channel_layout(
|
||||||
|
|
|
@ -113,7 +113,7 @@ int main(int argc, char **argv) {
|
||||||
if (!device)
|
if (!device)
|
||||||
panic("out of memory");
|
panic("out of memory");
|
||||||
|
|
||||||
fprintf(stderr, "Output device: %s\n", device->description);
|
fprintf(stderr, "Output device: %s\n", device->name);
|
||||||
|
|
||||||
struct SoundIoOutStream *outstream = soundio_outstream_create(device);
|
struct SoundIoOutStream *outstream = soundio_outstream_create(device);
|
||||||
outstream->format = SoundIoFormatFloat32NE;
|
outstream->format = SoundIoFormatFloat32NE;
|
||||||
|
|
18
src/alsa.cpp
18
src/alsa.cpp
|
@ -384,7 +384,7 @@ static int probe_device(SoundIoDevice *device, snd_pcm_chmap_query_t **maps) {
|
||||||
|
|
||||||
snd_pcm_stream_t stream = purpose_to_stream(device->purpose);
|
snd_pcm_stream_t stream = purpose_to_stream(device->purpose);
|
||||||
|
|
||||||
if ((err = snd_pcm_open(&handle, device->name, stream, 0)) < 0) {
|
if ((err = snd_pcm_open(&handle, device->id, stream, 0)) < 0) {
|
||||||
handle_channel_maps(device, maps);
|
handle_channel_maps(device, maps);
|
||||||
return SoundIoErrorOpeningDevice;
|
return SoundIoErrorOpeningDevice;
|
||||||
}
|
}
|
||||||
|
@ -542,11 +542,11 @@ static int refresh_devices(SoundIoPrivate *si) {
|
||||||
device->ref_count = 1;
|
device->ref_count = 1;
|
||||||
device->soundio = soundio;
|
device->soundio = soundio;
|
||||||
device->is_raw = false;
|
device->is_raw = false;
|
||||||
device->name = strdup(name);
|
device->id = strdup(name);
|
||||||
device->description = descr1 ?
|
device->name = descr1 ?
|
||||||
soundio_alloc_sprintf(nullptr, "%s: %s", descr, descr1) : strdup(descr);
|
soundio_alloc_sprintf(nullptr, "%s: %s", descr, descr1) : strdup(descr);
|
||||||
|
|
||||||
if (!device->name || !device->description) {
|
if (!device->id || !device->name) {
|
||||||
soundio_device_unref(device);
|
soundio_device_unref(device);
|
||||||
free(name);
|
free(name);
|
||||||
free(descr);
|
free(descr);
|
||||||
|
@ -658,11 +658,11 @@ static int refresh_devices(SoundIoPrivate *si) {
|
||||||
SoundIoDevice *device = &dev->pub;
|
SoundIoDevice *device = &dev->pub;
|
||||||
device->ref_count = 1;
|
device->ref_count = 1;
|
||||||
device->soundio = soundio;
|
device->soundio = soundio;
|
||||||
device->name = soundio_alloc_sprintf(nullptr, "hw:%d,%d", card_index, device_index);
|
device->id = soundio_alloc_sprintf(nullptr, "hw:%d,%d", card_index, device_index);
|
||||||
device->description = soundio_alloc_sprintf(nullptr, "%s %s", card_name, device_name);
|
device->name = soundio_alloc_sprintf(nullptr, "%s %s", card_name, device_name);
|
||||||
device->is_raw = true;
|
device->is_raw = true;
|
||||||
|
|
||||||
if (!device->name || !device->description) {
|
if (!device->id || !device->name) {
|
||||||
soundio_device_unref(device);
|
soundio_device_unref(device);
|
||||||
snd_ctl_close(handle);
|
snd_ctl_close(handle);
|
||||||
destroy(devices_info);
|
destroy(devices_info);
|
||||||
|
@ -1124,7 +1124,7 @@ static int outstream_open_alsa(SoundIoPrivate *si, SoundIoOutStreamPrivate *os)
|
||||||
|
|
||||||
snd_pcm_stream_t stream = purpose_to_stream(outstream->device->purpose);
|
snd_pcm_stream_t stream = purpose_to_stream(outstream->device->purpose);
|
||||||
|
|
||||||
if ((err = snd_pcm_open(&osa->handle, outstream->device->name, stream, 0)) < 0) {
|
if ((err = snd_pcm_open(&osa->handle, outstream->device->id, stream, 0)) < 0) {
|
||||||
outstream_destroy_alsa(si, os);
|
outstream_destroy_alsa(si, os);
|
||||||
return SoundIoErrorOpeningDevice;
|
return SoundIoErrorOpeningDevice;
|
||||||
}
|
}
|
||||||
|
@ -1411,7 +1411,7 @@ static int instream_open_alsa(SoundIoPrivate *si, SoundIoInStreamPrivate *is) {
|
||||||
|
|
||||||
snd_pcm_stream_t stream = purpose_to_stream(instream->device->purpose);
|
snd_pcm_stream_t stream = purpose_to_stream(instream->device->purpose);
|
||||||
|
|
||||||
if ((err = snd_pcm_open(&isa->handle, instream->device->name, stream, 0)) < 0) {
|
if ((err = snd_pcm_open(&isa->handle, instream->device->id, stream, 0)) < 0) {
|
||||||
instream_destroy_alsa(si, is);
|
instream_destroy_alsa(si, is);
|
||||||
return SoundIoErrorOpeningDevice;
|
return SoundIoErrorOpeningDevice;
|
||||||
}
|
}
|
||||||
|
|
|
@ -419,9 +419,9 @@ int soundio_dummy_init(SoundIoPrivate *si) {
|
||||||
|
|
||||||
device->ref_count = 1;
|
device->ref_count = 1;
|
||||||
device->soundio = soundio;
|
device->soundio = soundio;
|
||||||
device->name = strdup("dummy-out");
|
device->id = strdup("dummy-out");
|
||||||
device->description = strdup("Dummy Output Device");
|
device->name = strdup("Dummy Output Device");
|
||||||
if (!device->name || !device->description) {
|
if (!device->id || !device->name) {
|
||||||
soundio_device_unref(device);
|
soundio_device_unref(device);
|
||||||
destroy_dummy(si);
|
destroy_dummy(si);
|
||||||
return SoundIoErrorNoMem;
|
return SoundIoErrorNoMem;
|
||||||
|
@ -468,9 +468,9 @@ int soundio_dummy_init(SoundIoPrivate *si) {
|
||||||
|
|
||||||
device->ref_count = 1;
|
device->ref_count = 1;
|
||||||
device->soundio = soundio;
|
device->soundio = soundio;
|
||||||
device->name = strdup("dummy-in");
|
device->id = strdup("dummy-in");
|
||||||
device->description = strdup("Dummy Input Device");
|
device->name = strdup("Dummy Input Device");
|
||||||
if (!device->name || !device->description) {
|
if (!device->id || !device->name) {
|
||||||
soundio_device_unref(device);
|
soundio_device_unref(device);
|
||||||
destroy_dummy(si);
|
destroy_dummy(si);
|
||||||
return SoundIoErrorNoMem;
|
return SoundIoErrorNoMem;
|
||||||
|
|
14
src/jack.cpp
14
src/jack.cpp
|
@ -194,8 +194,8 @@ static int refresh_devices_bare(SoundIoPrivate *si) {
|
||||||
device->soundio = soundio;
|
device->soundio = soundio;
|
||||||
device->is_raw = false;
|
device->is_raw = false;
|
||||||
device->purpose = client->purpose;
|
device->purpose = client->purpose;
|
||||||
device->name = dupe_str(client->name, client->name_len);
|
device->id = dupe_str(client->name, client->name_len);
|
||||||
device->description = allocate<char>(description_len);
|
device->name = allocate<char>(description_len);
|
||||||
device->layout_count = 1;
|
device->layout_count = 1;
|
||||||
device->layouts = create<SoundIoChannelLayout>();
|
device->layouts = create<SoundIoChannelLayout>();
|
||||||
device->format_count = 1;
|
device->format_count = 1;
|
||||||
|
@ -213,7 +213,7 @@ static int refresh_devices_bare(SoundIoPrivate *si) {
|
||||||
dj->port_count = client->port_count;
|
dj->port_count = client->port_count;
|
||||||
dj->ports = allocate<SoundIoDeviceJackPort>(dj->port_count);
|
dj->ports = allocate<SoundIoDeviceJackPort>(dj->port_count);
|
||||||
|
|
||||||
if (!device->name || !device->description || !device->layouts || !device->formats || !dj->ports) {
|
if (!device->id || !device->name || !device->layouts || !device->formats || !dj->ports) {
|
||||||
jack_free(port_names);
|
jack_free(port_names);
|
||||||
soundio_device_unref(device);
|
soundio_device_unref(device);
|
||||||
destroy(devices_info);
|
destroy(devices_info);
|
||||||
|
@ -235,15 +235,15 @@ static int refresh_devices_bare(SoundIoPrivate *si) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(device->description, client->name, client->name_len);
|
memcpy(device->name, client->name, client->name_len);
|
||||||
memcpy(&device->description[client->name_len], ": ", 2);
|
memcpy(&device->name[client->name_len], ": ", 2);
|
||||||
int index = client->name_len + 2;
|
int index = client->name_len + 2;
|
||||||
for (int port_index = 0; port_index < client->port_count; port_index += 1) {
|
for (int port_index = 0; port_index < client->port_count; port_index += 1) {
|
||||||
SoundIoJackPort *port = &client->ports[port_index];
|
SoundIoJackPort *port = &client->ports[port_index];
|
||||||
memcpy(&device->description[index], port->name, port->name_len);
|
memcpy(&device->name[index], port->name, port->name_len);
|
||||||
index += port->name_len;
|
index += port->name_len;
|
||||||
if (port_index + 1 < client->port_count) {
|
if (port_index + 1 < client->port_count) {
|
||||||
memcpy(&device->description[index], ", ", 2);
|
memcpy(&device->name[index], ", ", 2);
|
||||||
index += 2;
|
index += 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -221,7 +221,7 @@ static void finish_device_query(SoundIoPrivate *si) {
|
||||||
for (int i = 0; i < sipa->current_devices_info->input_devices.length; i += 1) {
|
for (int i = 0; i < sipa->current_devices_info->input_devices.length; i += 1) {
|
||||||
SoundIoDevice *device = sipa->current_devices_info->input_devices.at(i);
|
SoundIoDevice *device = sipa->current_devices_info->input_devices.at(i);
|
||||||
assert(device->purpose == SoundIoDevicePurposeInput);
|
assert(device->purpose == SoundIoDevicePurposeInput);
|
||||||
if (strcmp(device->name, sipa->default_source_name) == 0) {
|
if (strcmp(device->id, sipa->default_source_name) == 0) {
|
||||||
sipa->current_devices_info->default_input_index = i;
|
sipa->current_devices_info->default_input_index = i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -232,7 +232,7 @@ static void finish_device_query(SoundIoPrivate *si) {
|
||||||
for (int i = 0; i < sipa->current_devices_info->output_devices.length; i += 1) {
|
for (int i = 0; i < sipa->current_devices_info->output_devices.length; i += 1) {
|
||||||
SoundIoDevice *device = sipa->current_devices_info->output_devices.at(i);
|
SoundIoDevice *device = sipa->current_devices_info->output_devices.at(i);
|
||||||
assert(device->purpose == SoundIoDevicePurposeOutput);
|
assert(device->purpose == SoundIoDevicePurposeOutput);
|
||||||
if (strcmp(device->name, sipa->default_sink_name) == 0) {
|
if (strcmp(device->id, sipa->default_sink_name) == 0) {
|
||||||
sipa->current_devices_info->default_output_index = i;
|
sipa->current_devices_info->default_output_index = i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -265,9 +265,9 @@ static void sink_info_callback(pa_context *pulse_context, const pa_sink_info *in
|
||||||
|
|
||||||
device->ref_count = 1;
|
device->ref_count = 1;
|
||||||
device->soundio = soundio;
|
device->soundio = soundio;
|
||||||
device->name = strdup(info->name);
|
device->id = strdup(info->name);
|
||||||
device->description = strdup(info->description);
|
device->name = strdup(info->description);
|
||||||
if (!device->name || !device->description) {
|
if (!device->id || !device->name) {
|
||||||
soundio_device_unref(device);
|
soundio_device_unref(device);
|
||||||
sipa->device_query_err = SoundIoErrorNoMem;
|
sipa->device_query_err = SoundIoErrorNoMem;
|
||||||
pa_threaded_mainloop_signal(sipa->main_loop, 0);
|
pa_threaded_mainloop_signal(sipa->main_loop, 0);
|
||||||
|
@ -335,9 +335,9 @@ static void source_info_callback(pa_context *pulse_context, const pa_source_info
|
||||||
|
|
||||||
device->ref_count = 1;
|
device->ref_count = 1;
|
||||||
device->soundio = soundio;
|
device->soundio = soundio;
|
||||||
device->name = strdup(info->name);
|
device->id = strdup(info->name);
|
||||||
device->description = strdup(info->description);
|
device->name = strdup(info->description);
|
||||||
if (!device->name || !device->description) {
|
if (!device->id || !device->name) {
|
||||||
soundio_device_unref(device);
|
soundio_device_unref(device);
|
||||||
sipa->device_query_err = SoundIoErrorNoMem;
|
sipa->device_query_err = SoundIoErrorNoMem;
|
||||||
pa_threaded_mainloop_signal(sipa->main_loop, 0);
|
pa_threaded_mainloop_signal(sipa->main_loop, 0);
|
||||||
|
@ -713,7 +713,7 @@ static int outstream_start_pa(SoundIoPrivate *si, SoundIoOutStreamPrivate *os) {
|
||||||
pa_stream_flags_t flags = (outstream->buffer_duration > 0.0) ? PA_STREAM_ADJUST_LATENCY : PA_STREAM_NOFLAGS;
|
pa_stream_flags_t flags = (outstream->buffer_duration > 0.0) ? PA_STREAM_ADJUST_LATENCY : PA_STREAM_NOFLAGS;
|
||||||
|
|
||||||
int err = pa_stream_connect_playback(ospa->stream,
|
int err = pa_stream_connect_playback(ospa->stream,
|
||||||
outstream->device->name, &ospa->buffer_attr,
|
outstream->device->id, &ospa->buffer_attr,
|
||||||
flags, nullptr, nullptr);
|
flags, nullptr, nullptr);
|
||||||
if (err) {
|
if (err) {
|
||||||
pa_threaded_mainloop_unlock(sipa->main_loop);
|
pa_threaded_mainloop_unlock(sipa->main_loop);
|
||||||
|
@ -917,7 +917,7 @@ static int instream_start_pa(SoundIoPrivate *si, SoundIoInStreamPrivate *is) {
|
||||||
pa_stream_flags_t flags = (instream->period_duration > 0.0) ? PA_STREAM_ADJUST_LATENCY : PA_STREAM_NOFLAGS;
|
pa_stream_flags_t flags = (instream->period_duration > 0.0) ? PA_STREAM_ADJUST_LATENCY : PA_STREAM_NOFLAGS;
|
||||||
|
|
||||||
int err = pa_stream_connect_record(ispa->stream,
|
int err = pa_stream_connect_record(ispa->stream,
|
||||||
instream->device->name,
|
instream->device->id,
|
||||||
&ispa->buffer_attr, flags);
|
&ispa->buffer_attr, flags);
|
||||||
if (err) {
|
if (err) {
|
||||||
pa_threaded_mainloop_unlock(sipa->main_loop);
|
pa_threaded_mainloop_unlock(sipa->main_loop);
|
||||||
|
|
|
@ -312,8 +312,8 @@ void soundio_device_unref(struct SoundIoDevice *device) {
|
||||||
if (dev->destruct)
|
if (dev->destruct)
|
||||||
dev->destruct(dev);
|
dev->destruct(dev);
|
||||||
|
|
||||||
|
free(device->id);
|
||||||
free(device->name);
|
free(device->name);
|
||||||
free(device->description);
|
|
||||||
deallocate(device->formats, device->format_count);
|
deallocate(device->formats, device->format_count);
|
||||||
deallocate(device->layouts, device->layout_count);
|
deallocate(device->layouts, device->layout_count);
|
||||||
|
|
||||||
|
|
|
@ -244,10 +244,10 @@ struct SoundIoDevice {
|
||||||
// Read-only. Set automatically.
|
// Read-only. Set automatically.
|
||||||
struct SoundIo *soundio;
|
struct SoundIo *soundio;
|
||||||
|
|
||||||
// `name` uniquely identifies this device. `description` is user-friendly
|
// `id` is a string of bytes that uniquely identifies this device.
|
||||||
// text to describe the device. These fields are UTF-8 encoded.
|
// `name` is user-friendly UTF-8 encoded text to describe the device.
|
||||||
|
char *id;
|
||||||
char *name;
|
char *name;
|
||||||
char *description;
|
|
||||||
|
|
||||||
// Channel layouts are handled similarly to sample format; see those docs.
|
// Channel layouts are handled similarly to sample format; see those docs.
|
||||||
// If this information is missing due to a `probe_error`, `layouts`
|
// If this information is missing due to a `probe_error`, `layouts`
|
||||||
|
|
Loading…
Reference in a new issue