mirror of
https://github.com/mpv-player/mpv
synced 2025-01-06 23:20:15 +00:00
de4f997752
Previously we let the user use the audio device ID, but this is not persistent and can change when plugging in new devices. That of course made it quite worthless for storing it as a user setting for GUIs, or for user scripts. In theory getting the kAudioDevicePropertyDeviceUID can fail but it doesn't on any of my devices, so I'm leaving the error reporting quite high and see if someone complains.
60 lines
2.0 KiB
C
60 lines
2.0 KiB
C
/*
|
|
* 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 "common/msg.h"
|
|
#include "audio/out/ao.h"
|
|
#include "internal.h"
|
|
|
|
#define CA_CFSTR_ENCODING kCFStringEncodingASCII
|
|
|
|
CFStringRef cfstr_from_cstr(char *str);
|
|
char *cfstr_get_cstr(CFStringRef cfstr);
|
|
|
|
char *fourcc_repr(void *talloc_ctx, uint32_t code);
|
|
bool check_ca_st(struct ao *ao, int level, OSStatus code, const char *message);
|
|
|
|
#define CHECK_CA_ERROR_L(label, message) \
|
|
do { \
|
|
if (!check_ca_st(ao, 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(ao, MSGL_WARN, err, message)
|
|
|
|
#define CHECK_CA_ERROR_SILENT_L(label) \
|
|
do { \
|
|
if (err != noErr) goto label; \
|
|
} while (0)
|
|
|
|
void ca_get_device_list(struct ao *ao, struct ao_device_list *list);
|
|
OSStatus ca_select_device(struct ao *ao, char* name, AudioDeviceID *device);
|
|
|
|
void ca_fill_asbd(struct ao *ao, AudioStreamBasicDescription *asbd);
|
|
void ca_print_asbd(struct ao *ao, const char *description,
|
|
const AudioStreamBasicDescription *asbd);
|
|
|
|
#endif /* MPV_COREAUDIO_UTILS_H */
|