servo_media_audio/
lib.rs

1#[macro_use]
2extern crate serde_derive;
3
4#[macro_use]
5extern crate servo_media_derive;
6
7extern crate servo_media_player as player;
8
9extern crate byte_slice_cast;
10extern crate euclid;
11extern crate log;
12extern crate num_complex;
13extern crate num_traits;
14extern crate petgraph;
15extern crate smallvec;
16extern crate speexdsp_resampler;
17#[macro_use]
18pub mod macros;
19extern crate servo_media_streams;
20extern crate servo_media_traits;
21
22pub mod analyser_node;
23pub mod biquad_filter_node;
24pub mod block;
25pub mod buffer_source_node;
26pub mod channel_node;
27pub mod constant_source_node;
28pub mod context;
29pub mod decoder;
30pub mod destination_node;
31pub mod gain_node;
32pub mod graph;
33pub mod iir_filter_node;
34pub mod listener;
35pub mod media_element_source_node;
36pub mod media_stream_destination_node;
37pub mod media_stream_source_node;
38pub mod node;
39pub mod offline_sink;
40pub mod oscillator_node;
41pub mod panner_node;
42pub mod param;
43pub mod render_thread;
44pub mod sink;
45pub mod stereo_panner;
46pub mod wave_shaper_node;
47
48pub trait AudioBackend {
49    type Sink: sink::AudioSink + 'static;
50    fn make_decoder() -> Box<dyn decoder::AudioDecoder>;
51    fn make_sink() -> Result<Self::Sink, sink::AudioSinkError>;
52    fn make_streamreader(
53        id: servo_media_streams::MediaStreamId,
54        sample_rate: f32,
55    ) -> Box<dyn AudioStreamReader + Send>;
56}
57
58pub trait AudioStreamReader {
59    fn pull(&self) -> block::Block;
60    fn start(&self);
61    fn stop(&self);
62}