Skip to main content

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