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 :: {
4
4
kAudioHardwareNoError, kAudioHardwarePropertyDefaultInputDevice,
5
5
kAudioHardwarePropertyDefaultOutputDevice, kAudioHardwarePropertyDevices,
6
6
kAudioObjectPropertyElementMaster, kAudioObjectPropertyScopeGlobal, kAudioObjectSystemObject,
7
- AudioDeviceID , AudioObjectGetPropertyData , AudioObjectGetPropertyDataSize ,
8
- AudioObjectPropertyAddress , OSStatus ,
7
+ AudioDeviceID , AudioObjectGetPropertyData , AudioObjectGetPropertyDataSize , AudioObjectID ,
8
+ AudioObjectPropertyAddress ,
9
9
} ;
10
- use super :: Device ;
11
- use crate :: { BackendSpecificError , DevicesError , SupportedStreamConfigRange } ;
12
10
use std:: mem;
13
- use std:: ptr:: null;
11
+ use std:: ptr:: { null, NonNull } ;
14
12
use std:: vec:: IntoIter as VecIntoIter ;
15
13
16
14
unsafe fn audio_devices ( ) -> Result < Vec < AudioDeviceID > , OSStatus > {
@@ -30,11 +28,11 @@ unsafe fn audio_devices() -> Result<Vec<AudioDeviceID>, OSStatus> {
30
28
31
29
let data_size = 0u32 ;
32
30
let status = AudioObjectGetPropertyDataSize (
33
- kAudioObjectSystemObject,
34
- & property_address as * const _ ,
31
+ kAudioObjectSystemObject as AudioObjectID ,
32
+ NonNull :: from ( & property_address) ,
35
33
0 ,
36
34
null ( ) ,
37
- & data_size as * const _ as * mut _ ,
35
+ NonNull :: from ( & data_size) ,
38
36
) ;
39
37
try_status_or_return ! ( status) ;
40
38
@@ -43,12 +41,12 @@ unsafe fn audio_devices() -> Result<Vec<AudioDeviceID>, OSStatus> {
43
41
audio_devices. reserve_exact ( device_count as usize ) ;
44
42
45
43
let status = AudioObjectGetPropertyData (
46
- kAudioObjectSystemObject,
47
- & property_address as * const _ ,
44
+ kAudioObjectSystemObject as AudioObjectID ,
45
+ NonNull :: from ( & property_address) ,
48
46
0 ,
49
47
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 ( ) ,
52
50
) ;
53
51
try_status_or_return ! ( status) ;
54
52
@@ -95,16 +93,16 @@ pub fn default_input_device() -> Option<Device> {
95
93
mElement : kAudioObjectPropertyElementMaster,
96
94
} ;
97
95
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 ;
100
98
let status = unsafe {
101
99
AudioObjectGetPropertyData (
102
- kAudioObjectSystemObject,
103
- & property_address as * const _ ,
100
+ kAudioObjectSystemObject as AudioObjectID ,
101
+ NonNull :: from ( & property_address) ,
104
102
0 ,
105
103
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 ( ) ,
108
106
)
109
107
} ;
110
108
if status != kAudioHardwareNoError as i32 {
@@ -125,16 +123,16 @@ pub fn default_output_device() -> Option<Device> {
125
123
mElement : kAudioObjectPropertyElementMaster,
126
124
} ;
127
125
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 ;
130
128
let status = unsafe {
131
129
AudioObjectGetPropertyData (
132
- kAudioObjectSystemObject,
133
- & property_address as * const _ ,
130
+ kAudioObjectSystemObject as AudioObjectID ,
131
+ NonNull :: from ( & property_address) ,
134
132
0 ,
135
133
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 ( ) ,
138
136
)
139
137
} ;
140
138
if status != kAudioHardwareNoError as i32 {
0 commit comments