mirror of https://github.com/mpv-player/mpv
ao_coreaudio: fix CoreAudio deprecations
This commit is contained in:
parent
6f009a91a6
commit
84adbd9d35
|
@ -27,6 +27,7 @@
|
||||||
#include "ao_coreaudio_chmap.h"
|
#include "ao_coreaudio_chmap.h"
|
||||||
#include "ao_coreaudio_properties.h"
|
#include "ao_coreaudio_properties.h"
|
||||||
#include "ao_coreaudio_utils.h"
|
#include "ao_coreaudio_utils.h"
|
||||||
|
#include "osdep/mac/compat.h"
|
||||||
|
|
||||||
// The timeout for stopping the audio unit after being reset. This allows the
|
// The timeout for stopping the audio unit after being reset. This allows the
|
||||||
// device to sleep after playback paused. The duration is chosen to match the
|
// device to sleep after playback paused. The duration is chosen to match the
|
||||||
|
@ -490,7 +491,7 @@ static bool register_hotplug_cb(struct ao *ao)
|
||||||
AudioObjectPropertyAddress addr = {
|
AudioObjectPropertyAddress addr = {
|
||||||
hotplug_properties[i],
|
hotplug_properties[i],
|
||||||
kAudioObjectPropertyScopeGlobal,
|
kAudioObjectPropertyScopeGlobal,
|
||||||
kAudioObjectPropertyElementMaster
|
kAudioObjectPropertyElementMain
|
||||||
};
|
};
|
||||||
err = AudioObjectAddPropertyListener(
|
err = AudioObjectAddPropertyListener(
|
||||||
kAudioObjectSystemObject, &addr, hotplug_cb, (void *)ao);
|
kAudioObjectSystemObject, &addr, hotplug_cb, (void *)ao);
|
||||||
|
@ -520,7 +521,7 @@ static void unregister_hotplug_cb(struct ao *ao)
|
||||||
AudioObjectPropertyAddress addr = {
|
AudioObjectPropertyAddress addr = {
|
||||||
hotplug_properties[i],
|
hotplug_properties[i],
|
||||||
kAudioObjectPropertyScopeGlobal,
|
kAudioObjectPropertyScopeGlobal,
|
||||||
kAudioObjectPropertyElementMaster
|
kAudioObjectPropertyElementMain
|
||||||
};
|
};
|
||||||
err = AudioObjectRemovePropertyListener(
|
err = AudioObjectRemovePropertyListener(
|
||||||
kAudioObjectSystemObject, &addr, hotplug_cb, (void *)ao);
|
kAudioObjectSystemObject, &addr, hotplug_cb, (void *)ao);
|
||||||
|
|
|
@ -50,6 +50,7 @@
|
||||||
#include "audio/out/ao_coreaudio_chmap.h"
|
#include "audio/out/ao_coreaudio_chmap.h"
|
||||||
#include "audio/out/ao_coreaudio_properties.h"
|
#include "audio/out/ao_coreaudio_properties.h"
|
||||||
#include "audio/out/ao_coreaudio_utils.h"
|
#include "audio/out/ao_coreaudio_utils.h"
|
||||||
|
#include "osdep/mac/compat.h"
|
||||||
|
|
||||||
struct priv {
|
struct priv {
|
||||||
// This must be put in the front
|
// This must be put in the front
|
||||||
|
@ -123,7 +124,7 @@ static OSStatus enable_property_listener(struct ao *ao, bool enabled)
|
||||||
for (int n = 0; n < MP_ARRAY_SIZE(devs); n++) {
|
for (int n = 0; n < MP_ARRAY_SIZE(devs); n++) {
|
||||||
AudioObjectPropertyAddress addr = {
|
AudioObjectPropertyAddress addr = {
|
||||||
.mScope = kAudioObjectPropertyScopeGlobal,
|
.mScope = kAudioObjectPropertyScopeGlobal,
|
||||||
.mElement = kAudioObjectPropertyElementMaster,
|
.mElement = kAudioObjectPropertyElementMain,
|
||||||
.mSelector = selectors[n],
|
.mSelector = selectors[n],
|
||||||
};
|
};
|
||||||
AudioDeviceID device = devs[n];
|
AudioDeviceID device = devs[n];
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include "audio/out/ao_coreaudio_properties.h"
|
#include "audio/out/ao_coreaudio_properties.h"
|
||||||
#include "audio/out/ao_coreaudio_utils.h"
|
#include "audio/out/ao_coreaudio_utils.h"
|
||||||
#include "mpv_talloc.h"
|
#include "mpv_talloc.h"
|
||||||
|
#include "osdep/mac/compat.h"
|
||||||
|
|
||||||
OSStatus ca_get(AudioObjectID id, ca_scope scope, ca_sel selector,
|
OSStatus ca_get(AudioObjectID id, ca_scope scope, ca_sel selector,
|
||||||
uint32_t size, void *data)
|
uint32_t size, void *data)
|
||||||
|
@ -29,7 +30,7 @@ OSStatus ca_get(AudioObjectID id, ca_scope scope, ca_sel selector,
|
||||||
AudioObjectPropertyAddress p_addr = (AudioObjectPropertyAddress) {
|
AudioObjectPropertyAddress p_addr = (AudioObjectPropertyAddress) {
|
||||||
.mSelector = selector,
|
.mSelector = selector,
|
||||||
.mScope = scope,
|
.mScope = scope,
|
||||||
.mElement = kAudioObjectPropertyElementMaster,
|
.mElement = kAudioObjectPropertyElementMain,
|
||||||
};
|
};
|
||||||
|
|
||||||
return AudioObjectGetPropertyData(id, &p_addr, 0, NULL, &size, data);
|
return AudioObjectGetPropertyData(id, &p_addr, 0, NULL, &size, data);
|
||||||
|
@ -41,7 +42,7 @@ OSStatus ca_set(AudioObjectID id, ca_scope scope, ca_sel selector,
|
||||||
AudioObjectPropertyAddress p_addr = (AudioObjectPropertyAddress) {
|
AudioObjectPropertyAddress p_addr = (AudioObjectPropertyAddress) {
|
||||||
.mSelector = selector,
|
.mSelector = selector,
|
||||||
.mScope = scope,
|
.mScope = scope,
|
||||||
.mElement = kAudioObjectPropertyElementMaster,
|
.mElement = kAudioObjectPropertyElementMain,
|
||||||
};
|
};
|
||||||
|
|
||||||
return AudioObjectSetPropertyData(id, &p_addr, 0, NULL, size, data);
|
return AudioObjectSetPropertyData(id, &p_addr, 0, NULL, size, data);
|
||||||
|
@ -56,7 +57,7 @@ OSStatus ca_get_ary(AudioObjectID id, ca_scope scope, ca_sel selector,
|
||||||
AudioObjectPropertyAddress p_addr = (AudioObjectPropertyAddress) {
|
AudioObjectPropertyAddress p_addr = (AudioObjectPropertyAddress) {
|
||||||
.mSelector = selector,
|
.mSelector = selector,
|
||||||
.mScope = scope,
|
.mScope = scope,
|
||||||
.mElement = kAudioObjectPropertyElementMaster,
|
.mElement = kAudioObjectPropertyElementMain,
|
||||||
};
|
};
|
||||||
|
|
||||||
err = AudioObjectGetPropertyDataSize(id, &p_addr, 0, NULL, &p_size);
|
err = AudioObjectGetPropertyDataSize(id, &p_addr, 0, NULL, &p_size);
|
||||||
|
@ -95,7 +96,7 @@ Boolean ca_settable(AudioObjectID id, ca_scope scope, ca_sel selector,
|
||||||
AudioObjectPropertyAddress p_addr = (AudioObjectPropertyAddress) {
|
AudioObjectPropertyAddress p_addr = (AudioObjectPropertyAddress) {
|
||||||
.mSelector = selector,
|
.mSelector = selector,
|
||||||
.mScope = kAudioObjectPropertyScopeGlobal,
|
.mScope = kAudioObjectPropertyScopeGlobal,
|
||||||
.mElement = kAudioObjectPropertyElementMaster,
|
.mElement = kAudioObjectPropertyElementMain,
|
||||||
};
|
};
|
||||||
|
|
||||||
return AudioObjectIsPropertySettable(id, &p_addr, data);
|
return AudioObjectIsPropertySettable(id, &p_addr, data);
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
#include "osdep/timer.h"
|
#include "osdep/timer.h"
|
||||||
#include "osdep/endian.h"
|
#include "osdep/endian.h"
|
||||||
#include "audio/format.h"
|
#include "audio/format.h"
|
||||||
|
#include "osdep/mac/compat.h"
|
||||||
|
|
||||||
#if HAVE_COREAUDIO || HAVE_AVFOUNDATION
|
#if HAVE_COREAUDIO || HAVE_AVFOUNDATION
|
||||||
#include "audio/out/ao_coreaudio_properties.h"
|
#include "audio/out/ao_coreaudio_properties.h"
|
||||||
|
@ -97,7 +98,7 @@ OSStatus ca_select_device(struct ao *ao, char* name, AudioDeviceID *device)
|
||||||
AudioObjectPropertyAddress p_addr = (AudioObjectPropertyAddress) {
|
AudioObjectPropertyAddress p_addr = (AudioObjectPropertyAddress) {
|
||||||
.mSelector = kAudioHardwarePropertyDeviceForUID,
|
.mSelector = kAudioHardwarePropertyDeviceForUID,
|
||||||
.mScope = kAudioObjectPropertyScopeGlobal,
|
.mScope = kAudioObjectPropertyScopeGlobal,
|
||||||
.mElement = kAudioObjectPropertyElementMaster,
|
.mElement = kAudioObjectPropertyElementMain,
|
||||||
};
|
};
|
||||||
err = AudioObjectGetPropertyData(
|
err = AudioObjectGetPropertyData(
|
||||||
kAudioObjectSystemObject, &p_addr, 0, 0, &size, &v);
|
kAudioObjectSystemObject, &p_addr, 0, 0, &size, &v);
|
||||||
|
@ -377,7 +378,7 @@ static OSStatus ca_change_mixing(struct ao *ao, AudioDeviceID device,
|
||||||
AudioObjectPropertyAddress p_addr = (AudioObjectPropertyAddress) {
|
AudioObjectPropertyAddress p_addr = (AudioObjectPropertyAddress) {
|
||||||
.mSelector = kAudioDevicePropertySupportsMixing,
|
.mSelector = kAudioDevicePropertySupportsMixing,
|
||||||
.mScope = kAudioObjectPropertyScopeGlobal,
|
.mScope = kAudioObjectPropertyScopeGlobal,
|
||||||
.mElement = kAudioObjectPropertyElementMaster,
|
.mElement = kAudioObjectPropertyElementMain,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (AudioObjectHasProperty(device, &p_addr)) {
|
if (AudioObjectHasProperty(device, &p_addr)) {
|
||||||
|
@ -486,7 +487,7 @@ bool ca_change_physical_format_sync(struct ao *ao, AudioStreamID stream,
|
||||||
AudioObjectPropertyAddress p_addr = {
|
AudioObjectPropertyAddress p_addr = {
|
||||||
.mSelector = kAudioStreamPropertyPhysicalFormat,
|
.mSelector = kAudioStreamPropertyPhysicalFormat,
|
||||||
.mScope = kAudioObjectPropertyScopeGlobal,
|
.mScope = kAudioObjectPropertyScopeGlobal,
|
||||||
.mElement = kAudioObjectPropertyElementMaster,
|
.mElement = kAudioObjectPropertyElementMain,
|
||||||
};
|
};
|
||||||
|
|
||||||
err = AudioObjectAddPropertyListener(stream, &p_addr,
|
err = AudioObjectAddPropertyListener(stream, &p_addr,
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
/*
|
||||||
|
* This file is part of mpv.
|
||||||
|
*
|
||||||
|
* mpv is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 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 Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with mpv. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
#if !HAVE_MACOS_12_FEATURES
|
||||||
|
#define kAudioObjectPropertyElementMain kAudioObjectPropertyElementMaster
|
||||||
|
#endif
|
Loading…
Reference in New Issue