Skip to main content

core_media_sys/
audio_device_clock.rs

1use crate::libc::{c_void, size_t, c_long};
2use crate::core_foundation_sys::base::{OSStatus, Boolean, CFAllocatorRef, CFTypeID, CFTypeRef};
3use crate::core_foundation_sys::dictionary::CFDictionaryRef;
4use crate::core_foundation_sys::string::CFStringRef;
5
6use crate::sync::CMClockRef;
7
8
9// https://developer.apple.com/documentation/coreaudio/audioobjectid?language=objc
10pub type AudioObjectID = u32;
11// https://developer.apple.com/documentation/coreaudio/audiodeviceid
12pub type AudioDeviceID = AudioObjectID;
13
14pub const kAudioObjectUnknown: AudioObjectID = 0;
15pub const kAudioStreamUnknown: AudioObjectID = kAudioObjectUnknown;
16
17
18
19extern "C" {
20    pub fn CMAudioDeviceClockCreate(allocator: CFAllocatorRef,
21                                    deviceUID: CFStringRef,
22                                    clockOut: *mut CMClockRef) -> OSStatus;
23    pub fn CMAudioDeviceClockCreateFromAudioDeviceID(allocator: CFAllocatorRef,
24                                                     deviceID: AudioDeviceID,
25                                                     clockOut: *mut CMClockRef) -> OSStatus;
26    pub fn CMAudioDeviceClockSetAudioDeviceUID(clock: CMClockRef,
27                                               deviceUID: CFStringRef) -> OSStatus;
28    pub fn CMAudioDeviceClockSetAudioDeviceID(clock: CMClockRef,
29                                              deviceID: AudioDeviceID) -> OSStatus;
30    pub fn CMAudioDeviceClockGetAudioDevice(clock: CMClockRef,
31                                            deviceUIDOut: *mut CFStringRef,
32                                            deviceIDOut: *mut AudioDeviceID,
33                                            trackingDefaultDeviceOut: *mut Boolean) -> OSStatus;
34
35}