From 0c0ff638a38a1354209413ba3546840ae2933444 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Tue, 28 Oct 2014 14:10:29 +0100 Subject: coreaudio: only list output devices --- audio/out/ao_coreaudio_utils.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/audio/out/ao_coreaudio_utils.c b/audio/out/ao_coreaudio_utils.c index b073cd6d8a..8d85842dfd 100644 --- a/audio/out/ao_coreaudio_utils.c +++ b/audio/out/ao_coreaudio_utils.c @@ -28,6 +28,16 @@ #include "osdep/endian.h" #include "audio/format.h" +static bool ca_is_output_device(struct ao *ao, AudioDeviceID dev) +{ + size_t n_buffers; + AudioBufferList *buffers; + const ca_scope scope = kAudioDevicePropertyStreamConfiguration; + CA_GET_ARY_O(dev, scope, &buffers, &n_buffers); + talloc_free(buffers); + return n_buffers > 0; +} + void ca_get_device_list(struct ao *ao, struct ao_device_list *list) { AudioDeviceID *devs; @@ -37,6 +47,8 @@ void ca_get_device_list(struct ao *ao, struct ao_device_list *list) &devs, &n_devs); CHECK_CA_ERROR("Failed to get list of output devices."); for (int i = 0; i < n_devs; i++) { + if (!ca_is_output_device(ao, devs[i])) + continue; char name[32]; char *desc; sprintf(name, "%d", devs[i]); -- cgit v1.2.3