Skip to content

Commit ed9d643

Browse files
authored
Update coreaudio-rs (#943)
1 parent 0401e3c commit ed9d643

File tree

6 files changed

+119
-153
lines changed

6 files changed

+119
-153
lines changed

Cargo.toml

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,27 @@ audio_thread_priority = { version = "0.33.0", optional = true }
4949
jack = { version = "0.13.0", optional = true }
5050

5151
[target.'cfg(any(target_os = "macos", target_os = "ios"))'.dependencies]
52-
core-foundation-sys = "0.8.2" # For linking to CoreFoundation.framework and handling device name `CFString`s.
5352
mach2 = "0.4" # For access to mach_timebase type.
5453

55-
[target.'cfg(target_os = "macos")'.dependencies]
56-
coreaudio-rs = { version = "0.11", default-features = false, features = ["audio_unit", "core_audio"] }
57-
58-
[target.'cfg(target_os = "ios")'.dependencies]
59-
coreaudio-rs = { version = "0.11", default-features = false, features = ["audio_unit", "core_audio", "audio_toolbox"] }
54+
[target.'cfg(target_vendor = "apple")'.dependencies]
55+
coreaudio-rs = { version = "0.13.0", default-features = false, features = [
56+
"core_audio",
57+
"audio_toolbox",
58+
] }
59+
objc2-core-audio = { version = "0.3.1", default-features = false, features = [
60+
"std",
61+
"AudioHardware",
62+
"AudioHardwareDeprecated",
63+
] }
64+
objc2-audio-toolbox = { version = "0.3.1", default-features = false, features = [
65+
"std",
66+
"AUComponent",
67+
"AudioUnitProperties",
68+
] }
69+
objc2-core-audio-types = { version = "0.3.1", default-features = false, features = [
70+
"std",
71+
"CoreAudioBaseTypes",
72+
] }
6073

6174
[target.'cfg(target_os = "emscripten")'.dependencies]
6275
wasm-bindgen = { version = "0.2.89" }

src/host/coreaudio/ios/mod.rs

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,12 @@
77
//! buffer size.
88
//!
99
10-
extern crate core_foundation_sys;
11-
extern crate coreaudio;
12-
1310
use std::cell::RefCell;
1411

15-
use self::coreaudio::audio_unit::render_callback::data;
16-
use self::coreaudio::audio_unit::{render_callback, AudioUnit, Element, Scope};
17-
use self::coreaudio::sys::{
18-
kAudioOutputUnitProperty_EnableIO, kAudioUnitProperty_StreamFormat, AudioBuffer,
19-
AudioStreamBasicDescription,
20-
};
12+
use coreaudio::audio_unit::render_callback::data;
13+
use coreaudio::audio_unit::{render_callback, AudioUnit, Element, Scope};
14+
use objc2_audio_toolbox::{kAudioOutputUnitProperty_EnableIO, kAudioUnitProperty_StreamFormat};
15+
use objc2_core_audio_types::{AudioBuffer, AudioStreamBasicDescription};
2116

2217
use super::{asbd_from_config, frames_to_duration, host_time_to_stream_instant};
2318
use crate::traits::{DeviceTrait, HostTrait, StreamTrait};

src/host/coreaudio/macos/enumerate.rs

Lines changed: 25 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
1-
extern crate coreaudio;
2-
3-
use self::coreaudio::sys::{
1+
use super::{Device, OSStatus};
2+
use crate::{BackendSpecificError, DevicesError, SupportedStreamConfigRange};
3+
use objc2_core_audio::{
44
kAudioHardwareNoError, kAudioHardwarePropertyDefaultInputDevice,
55
kAudioHardwarePropertyDefaultOutputDevice, kAudioHardwarePropertyDevices,
66
kAudioObjectPropertyElementMaster, kAudioObjectPropertyScopeGlobal, kAudioObjectSystemObject,
7-
AudioDeviceID, AudioObjectGetPropertyData, AudioObjectGetPropertyDataSize,
8-
AudioObjectPropertyAddress, OSStatus,
7+
AudioDeviceID, AudioObjectGetPropertyData, AudioObjectGetPropertyDataSize, AudioObjectID,
8+
AudioObjectPropertyAddress,
99
};
10-
use super::Device;
11-
use crate::{BackendSpecificError, DevicesError, SupportedStreamConfigRange};
1210
use std::mem;
13-
use std::ptr::null;
11+
use std::ptr::{null, NonNull};
1412
use std::vec::IntoIter as VecIntoIter;
1513

1614
unsafe fn audio_devices() -> Result<Vec<AudioDeviceID>, OSStatus> {
@@ -30,11 +28,11 @@ unsafe fn audio_devices() -> Result<Vec<AudioDeviceID>, OSStatus> {
3028

3129
let data_size = 0u32;
3230
let status = AudioObjectGetPropertyDataSize(
33-
kAudioObjectSystemObject,
34-
&property_address as *const _,
31+
kAudioObjectSystemObject as AudioObjectID,
32+
NonNull::from(&property_address),
3533
0,
3634
null(),
37-
&data_size as *const _ as *mut _,
35+
NonNull::from(&data_size),
3836
);
3937
try_status_or_return!(status);
4038

@@ -43,12 +41,12 @@ unsafe fn audio_devices() -> Result<Vec<AudioDeviceID>, OSStatus> {
4341
audio_devices.reserve_exact(device_count as usize);
4442

4543
let status = AudioObjectGetPropertyData(
46-
kAudioObjectSystemObject,
47-
&property_address as *const _,
44+
kAudioObjectSystemObject as AudioObjectID,
45+
NonNull::from(&property_address),
4846
0,
4947
null(),
50-
&data_size as *const _ as *mut _,
51-
audio_devices.as_mut_ptr() as *mut _,
48+
NonNull::from(&data_size),
49+
NonNull::new(audio_devices.as_mut_ptr()).unwrap().cast(),
5250
);
5351
try_status_or_return!(status);
5452

@@ -95,16 +93,16 @@ pub fn default_input_device() -> Option<Device> {
9593
mElement: kAudioObjectPropertyElementMaster,
9694
};
9795

98-
let audio_device_id: AudioDeviceID = 0;
99-
let data_size = mem::size_of::<AudioDeviceID>();
96+
let mut audio_device_id: AudioDeviceID = 0;
97+
let data_size = mem::size_of::<AudioDeviceID>() as u32;
10098
let status = unsafe {
10199
AudioObjectGetPropertyData(
102-
kAudioObjectSystemObject,
103-
&property_address as *const _,
100+
kAudioObjectSystemObject as AudioObjectID,
101+
NonNull::from(&property_address),
104102
0,
105103
null(),
106-
&data_size as *const _ as *mut _,
107-
&audio_device_id as *const _ as *mut _,
104+
NonNull::from(&data_size),
105+
NonNull::from(&mut audio_device_id).cast(),
108106
)
109107
};
110108
if status != kAudioHardwareNoError as i32 {
@@ -125,16 +123,16 @@ pub fn default_output_device() -> Option<Device> {
125123
mElement: kAudioObjectPropertyElementMaster,
126124
};
127125

128-
let audio_device_id: AudioDeviceID = 0;
129-
let data_size = mem::size_of::<AudioDeviceID>();
126+
let mut audio_device_id: AudioDeviceID = 0;
127+
let data_size = mem::size_of::<AudioDeviceID>() as u32;
130128
let status = unsafe {
131129
AudioObjectGetPropertyData(
132-
kAudioObjectSystemObject,
133-
&property_address as *const _,
130+
kAudioObjectSystemObject as AudioObjectID,
131+
NonNull::from(&property_address),
134132
0,
135133
null(),
136-
&data_size as *const _ as *mut _,
137-
&audio_device_id as *const _ as *mut _,
134+
NonNull::from(&data_size),
135+
NonNull::from(&mut audio_device_id).cast(),
138136
)
139137
};
140138
if status != kAudioHardwareNoError as i32 {

0 commit comments

Comments
 (0)