makepad_platform/
media_api.rs1use crate::{
2 audio::{AudioDeviceId, AudioInfo, AudioBuffer,AudioInputFn,AudioOutputFn},
3 video::*,
4 midi::*,
5};
6
7pub trait CxMediaApi {
8 fn midi_input(&mut self) -> MidiInput;
9 fn midi_output(&mut self) -> MidiOutput;
10 fn midi_reset(&mut self);
11
12 fn use_midi_inputs(&mut self, ports:&[MidiPortId]);
13 fn use_midi_outputs(&mut self, ports:&[MidiPortId]);
14
15 fn use_audio_inputs(&mut self, devices:&[AudioDeviceId]);
16 fn use_audio_outputs(&mut self, devices:&[AudioDeviceId]);
17
18 fn audio_output<F>(&mut self, index:usize, f: F) where F: FnMut(AudioInfo, &mut AudioBuffer) + Send + 'static{
19 self.audio_output_box(index, Box::new(f))
20 }
21 fn audio_input<F>(&mut self, index:usize, f: F) where F: FnMut(AudioInfo, &AudioBuffer) + Send + 'static{
22 self.audio_input_box(index, Box::new(f))
23 }
24
25 fn audio_output_box(&mut self, index:usize, f: AudioOutputFn);
26 fn audio_input_box(&mut self, index:usize, f: AudioInputFn);
27
28 fn video_input<F>(&mut self, index:usize, f: F) where F: FnMut(VideoBufferRef) + Send + 'static{
29 self.video_input_box(index, Box::new(f))
30 }
31
32 fn video_input_box(&mut self, index:usize, f: VideoInputFn);
33
34 fn use_video_input(&mut self, devices:&[(VideoInputId, VideoFormatId)]);
35}