-const struct uaudio *uaudio_apis[] = {
-#if HAVE_COREAUDIO_AUDIOHARDWARE_H
- &uaudio_coreaudio,
-#endif
-#if HAVE_ALSA_ASOUNDLIB_H
- &uaudio_alsa,
-#endif
-#if HAVE_SYS_SOUNDCARD_H || EMPEG_HOST
- &uaudio_oss,
-#endif
- &uaudio_rtp,
- NULL,
-};
+void uaudio_set_format(int rate, int channels, int bits, int signed_) {
+ uaudio_rate = rate;
+ uaudio_channels = channels;
+ uaudio_bits = bits;
+ uaudio_signed = signed_;
+ uaudio_sample_size = bits / CHAR_BIT;
+}
+
+/** @brief Choose the default audio API by context
+ * @param apis Table of APIs or a null pointer
+ * @param context @ref UAUDIO_API_SERVER or @ref UAUDIO_API_CLIENT
+ * @return Default API or a null pointer
+ */
+const struct uaudio *uaudio_default(const struct uaudio *const *apis,
+ unsigned context) {
+ if(apis) {
+ for(int n = 0; apis[n]; ++n)
+ if(apis[n]->flags & context)
+ return apis[n];
+ }
+ return 0;
+}