summaryrefslogtreecommitdiffstats
path: root/third_party/rust/coreaudio-sys-utils/src/audio_device_extensions.rs
blob: 8224d87c285ee31c89db8e1182c297bb7bc81d82 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
use crate::dispatch::*;
use coreaudio_sys::*;

// See https://opensource.apple.com/source/WebCore/WebCore-7604.5.6/platform/spi/cf/CoreAudioSPI.h.auto.html
// Per https://github.com/WebKit/WebKit/commit/7c4c851bc80f14b4cf907f76d65baee013a45eea,
// this first appeared in MacOS 10.13 and iOS 11.0.
extern "C" {
    fn AudioDeviceDuck(
        inDevice: AudioDeviceID,
        inDuckedLevel: f32,
        inStartTime: *const AudioTimeStamp,
        inRampDuration: f32,
    ) -> OSStatus;
}

pub fn audio_device_duck(
    in_device: AudioDeviceID,
    in_ducked_level: f32,
    in_start_time: *const AudioTimeStamp,
    in_ramp_duration: f32,
) -> OSStatus {
    debug_assert_running_serially();
    unsafe { AudioDeviceDuck(in_device, in_ducked_level, in_start_time, in_ramp_duration) }
}