servo_media_audio/
lib.rs

1/* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
5#[macro_use]
6extern crate serde_derive;
7
8#[macro_use]
9extern crate servo_media_derive;
10
11extern crate servo_media_player as player;
12
13extern crate byte_slice_cast;
14extern crate euclid;
15extern crate log;
16extern crate num_complex;
17extern crate num_traits;
18extern crate petgraph;
19extern crate smallvec;
20extern crate speexdsp_resampler;
21#[macro_use]
22pub mod macros;
23extern crate servo_media_streams;
24extern crate servo_media_traits;
25
26pub mod analyser_node;
27pub mod biquad_filter_node;
28pub mod block;
29pub mod buffer_source_node;
30pub mod channel_node;
31pub mod constant_source_node;
32pub mod context;
33pub mod decoder;
34pub mod destination_node;
35pub mod gain_node;
36pub mod graph;
37pub mod iir_filter_node;
38pub mod listener;
39pub mod media_element_source_node;
40pub mod media_stream_destination_node;
41pub mod media_stream_source_node;
42pub mod node;
43pub mod offline_sink;
44pub mod oscillator_node;
45pub mod panner_node;
46pub mod param;
47pub mod render_thread;
48pub mod sink;
49pub mod stereo_panner;
50pub mod wave_shaper_node;
51
52pub trait AudioBackend {
53    type Sink: sink::AudioSink + 'static;
54    fn make_decoder() -> Box<dyn decoder::AudioDecoder>;
55    fn make_sink() -> Result<Self::Sink, sink::AudioSinkError>;
56    fn make_streamreader(
57        id: servo_media_streams::MediaStreamId,
58        sample_rate: f32,
59    ) -> Box<dyn AudioStreamReader + Send>;
60}
61
62pub trait AudioStreamReader {
63    fn pull(&self) -> block::Block;
64    fn start(&self);
65    fn stop(&self);
66}