audio-device-enum.h 798 B

123456789101112131415161718192021222324252627282930313233343536
  1. #pragma once
  2. #include <util/darray.h>
  3. #include <util/dstr.h>
  4. struct device_item {
  5. struct dstr name, value;
  6. };
  7. static inline void device_item_free(struct device_item *item)
  8. {
  9. dstr_free(&item->name);
  10. dstr_free(&item->value);
  11. }
  12. struct device_list {
  13. DARRAY(struct device_item) items;
  14. };
  15. static inline void device_list_free(struct device_list *list)
  16. {
  17. for (size_t i = 0; i < list->items.num; i++)
  18. device_item_free(list->items.array + i);
  19. da_free(list->items);
  20. }
  21. static inline void device_list_add(struct device_list *list,
  22. struct device_item *item)
  23. {
  24. da_push_back(list->items, item);
  25. memset(item, 0, sizeof(struct device_item));
  26. }
  27. extern void coreaudio_enum_devices(struct device_list *list, bool input);
  28. extern bool coreaudio_get_device_id(CFStringRef uid, AudioDeviceID *id);