summaryrefslogtreecommitdiffstats
path: root/audio/out/ao_coreaudio_utils.h
diff options
context:
space:
mode:
authorStefano Pigozzi <stefano.pigozzi@gmail.com>2013-07-13 09:48:10 +0200
committerStefano Pigozzi <stefano.pigozzi@gmail.com>2013-07-22 21:53:18 +0200
commit1e379655971b7d263189f5e001a0f5724a8657f7 (patch)
tree74e9c444e5cd693b9703210fca2a7caf06379576 /audio/out/ao_coreaudio_utils.h
parent5a195845e3a5b37f1081546e275858bedb85f755 (diff)
downloadmpv-1e379655971b7d263189f5e001a0f5724a8657f7.tar.bz2
mpv-1e379655971b7d263189f5e001a0f5724a8657f7.tar.xz
ao_coreaudio: split ao_coreaudio_common in two files
* ao_coreaudio_utils: contains several utility function * ao_coreaudio_properties: contains functions to set and get audio object properties. Conflicts: audio/out/ao_coreaudio.c
Diffstat (limited to 'audio/out/ao_coreaudio_utils.h')
-rw-r--r--audio/out/ao_coreaudio_utils.h77
1 files changed, 77 insertions, 0 deletions
diff --git a/audio/out/ao_coreaudio_utils.h b/audio/out/ao_coreaudio_utils.h
new file mode 100644
index 0000000000..dd68ed1082
--- /dev/null
+++ b/audio/out/ao_coreaudio_utils.h
@@ -0,0 +1,77 @@
+/*
+ * This file is part of mpv.
+ * Copyright (c) 2013 Stefano Pigozzi <stefano.pigozzi@gmail.com>
+ *
+ * mpv is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * mpv is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with mpv. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef MPV_COREAUDIO_UTILS_H
+#define MPV_COREAUDIO_UTILS_H
+
+#include <AudioToolbox/AudioToolbox.h>
+#include <inttypes.h>
+#include <stdbool.h>
+#include "core/mp_msg.h"
+
+#define ca_msg(a, b ...) mp_msg(MSGT_AO, a, "AO: [coreaudio] " b)
+#define CA_CFSTR_ENCODING kCFStringEncodingASCII
+
+char *fourcc_repr(void *talloc_ctx, uint32_t code);
+bool check_ca_st(int level, OSStatus code, const char *message);
+
+#define CHECK_CA_ERROR_L(label, message) \
+ do { \
+ if (!check_ca_st(MSGL_ERR, err, message)) { \
+ goto label; \
+ } \
+ } while (0)
+
+#define CHECK_CA_ERROR(message) CHECK_CA_ERROR_L(coreaudio_error, message)
+#define CHECK_CA_WARN(message) check_ca_st(MSGL_WARN, err, message)
+
+void ca_print_asbd(const char *description,
+ const AudioStreamBasicDescription *asbd);
+
+int AudioFormatIsDigital(AudioStreamBasicDescription asbd);
+int AudioStreamSupportsDigital(AudioStreamID stream);
+int AudioDeviceSupportsDigital(AudioDeviceID device);
+
+OSStatus ca_property_listener(AudioObjectPropertySelector selector,
+ AudioObjectID object, uint32_t n_addresses,
+ const AudioObjectPropertyAddress addresses[],
+ void *data);
+
+OSStatus ca_stream_listener(AudioObjectID object, uint32_t n_addresses,
+ const AudioObjectPropertyAddress addresses[],
+ void *data);
+
+OSStatus ca_device_listener(AudioObjectID object, uint32_t n_addresses,
+ const AudioObjectPropertyAddress addresses[],
+ void *data);
+
+OSStatus ca_lock_device(AudioDeviceID device, pid_t *pid);
+OSStatus ca_unlock_device(AudioDeviceID device, pid_t *pid);
+OSStatus ca_disable_mixing(AudioDeviceID device, bool *changed);
+OSStatus ca_enable_mixing(AudioDeviceID device, bool changed);
+OSStatus ca_enable_device_listener(AudioDeviceID device, void *flag);
+OSStatus ca_disable_device_listener(AudioDeviceID device, void *flag);
+
+int AudioStreamChangeFormat(AudioStreamID i_stream_id,
+ AudioStreamBasicDescription change_format);
+
+bool ca_bitmap_from_ch_descriptions(AudioChannelLayout layout,
+ uint32_t *bitmap);
+bool ca_bitmap_from_ch_tag(AudioChannelLayout layout, uint32_t *bitmap);
+
+#endif /* MPV_COREAUDIO_UTILS_H */