Skip to main content

cidre/av/audio/unit/
time_effect.rs

1use crate::{arc, at, av::audio, define_cls, define_obj_type, objc};
2
3define_obj_type!(pub TimeEffect(audio::Unit));
4
5impl arc::A<TimeEffect> {
6    #[objc::msg_send(initWithAudioComponentDescription:)]
7    pub fn init_with_audio_component_desc(
8        self,
9        description: at::audio::ComponentDesc,
10    ) -> arc::R<TimeEffect>;
11}
12
13/// Unit that processes audio in non real-time
14///
15/// An TimeEffect represents an audio unit of type `aufc`.
16/// These effects do not process audio in real-time. The varispeed
17/// unit is an example of a time effect unit.
18///
19/// AVAudioUnitTimeEffect
20impl TimeEffect {
21    define_cls!(AV_AUDIO_UNIT_TIME_EFFECT);
22
23    #[objc::msg_send(bypass)]
24    pub fn bypass(&self) -> bool;
25
26    #[objc::msg_send(setBypass:)]
27    pub fn set_bypass(&mut self, value: bool);
28
29    pub fn with_component_desc(description: at::audio::ComponentDesc) -> arc::R<Self> {
30        Self::alloc().init_with_audio_component_desc(description)
31    }
32}
33
34unsafe extern "C" {
35    static AV_AUDIO_UNIT_TIME_EFFECT: &'static objc::Class<TimeEffect>;
36}