// This static table allows knowing if a backend has audio input capabilities. // We don't rely on opening a stream and checking if it works, because this // would make the test skip the tests that make use of audio input, if a // particular backend has a bug that causes a failure during audio input stream // creation static backend_caps backend_capabilities[] = {
{"sun", 1}, {"wasapi", 1}, {"kai", 1}, {"audiounit", 1},
{"audiotrack", 0}, {"opensl", 1}, {"aaudio", 1}, {"jack", 1},
{"pulse", 1}, {"sndio", 1}, {"oss", 1}, {"winmm", 0},
{"alsa", 1},
};
inlineint
can_run_audio_input_test(cubeb * ctx)
{
cubeb_device_collection devices; int input_device_available = 0; int r; /* Bail out early if the host does not have input devices. */
r = cubeb_enumerate_devices(ctx, CUBEB_DEVICE_TYPE_INPUT, &devices); if (r != CUBEB_OK) {
fprintf(stderr, "error enumerating devices."); return 0;
}
if (devices.count == 0) {
fprintf(stderr, "no input device available, skipping test.\n");
cubeb_device_collection_destroy(ctx, &devices); return 0;
}
for (uint32_t i = 0; i < devices.count; i++) {
input_device_available |=
(devices.device[i].state == CUBEB_DEVICE_STATE_ENABLED);
}
if (!input_device_available) {
fprintf(stderr, "there are input devices, but they are not " "available, skipping\n");
}
cubeb_device_collection_destroy(ctx, &devices);
int backend_has_input_capabilities; constchar * backend_id = cubeb_get_backend_id(ctx); for (uint32_t i = 0; i < sizeof(backend_capabilities) / sizeof(backend_caps);
i++) { if (strcmp(backend_capabilities[i].id, backend_id) == 0) {
backend_has_input_capabilities =
backend_capabilities[i].input_capabilities;
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.