makepad_platform/
media_api.rs

1use 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}