Skip to content

Commit abb2b41

Browse files
committed
Update coreaudio-rs
1 parent 614cb70 commit abb2b41

File tree

6 files changed

+146
-156
lines changed

6 files changed

+146
-156
lines changed

Cargo.toml

Lines changed: 46 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -44,28 +44,62 @@ libc = "0.2"
4444
jack = { version = "0.13.0", optional = true }
4545

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

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

5669
[target.'cfg(target_os = "emscripten")'.dependencies]
5770
wasm-bindgen = { version = "0.2.89" }
5871
wasm-bindgen-futures = "0.4.33"
5972
js-sys = { version = "0.3.35" }
60-
web-sys = { version = "0.3.35", features = [ "AudioContext", "AudioContextOptions", "AudioBuffer", "AudioBufferSourceNode", "AudioNode", "AudioDestinationNode", "Window", "AudioContextState"] }
73+
web-sys = { version = "0.3.35", features = [
74+
"AudioContext",
75+
"AudioContextOptions",
76+
"AudioBuffer",
77+
"AudioBufferSourceNode",
78+
"AudioNode",
79+
"AudioDestinationNode",
80+
"Window",
81+
"AudioContextState",
82+
] }
6183

6284
[target.'cfg(all(target_arch = "wasm32", target_os = "unknown"))'.dependencies]
6385
wasm-bindgen = { version = "0.2.58", optional = true }
6486
js-sys = { version = "0.3.35" }
65-
web-sys = { version = "0.3.35", features = [ "AudioContext", "AudioContextOptions", "AudioBuffer", "AudioBufferSourceNode", "AudioNode", "AudioDestinationNode", "Window", "AudioContextState"] }
87+
web-sys = { version = "0.3.35", features = [
88+
"AudioContext",
89+
"AudioContextOptions",
90+
"AudioBuffer",
91+
"AudioBufferSourceNode",
92+
"AudioNode",
93+
"AudioDestinationNode",
94+
"Window",
95+
"AudioContextState",
96+
] }
6697

6798
[target.'cfg(target_os = "android")'.dependencies]
68-
ndk = { version = "0.9", default-features = false, features = ["audio", "api-level-26"]}
99+
ndk = { version = "0.9", default-features = false, features = [
100+
"audio",
101+
"api-level-26",
102+
] }
69103
ndk-context = "0.1"
70104
jni = "0.21"
71105
num-derive = "0.4"
@@ -85,3 +119,6 @@ name = "record_wav"
85119

86120
[[example]]
87121
name = "synth_tones"
122+
123+
[patch.crates-io]
124+
coreaudio-rs = { path = "../coreaudio" }

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)