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 } ;
1210use std:: mem;
13- use std:: ptr:: null;
11+ use std:: ptr:: { null, NonNull } ;
1412use std:: vec:: IntoIter as VecIntoIter ;
1513
1614unsafe 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