blob: 21f8f31bb6c0cc72d9248975d63c331f92c55d9a (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
pub const HEADER_LEN: usize = 12;
pub const SAMPLE_RATE: u32 = 48_000;
/// A readable audio source.
pub trait AudioSource: Send {
fn is_stereo(&mut self) -> bool;
fn get_type(&self) -> AudioType;
fn read_pcm_frame(&mut self, buffer: &mut [i16]) -> Option<usize>;
fn read_opus_frame(&mut self) -> Option<Vec<u8>>;
}
/// A receiver for incoming audio.
pub trait AudioReceiver: Send {
fn speaking_update(&mut self, ssrc: u32, user_id: u64, speaking: bool);
fn voice_packet(&mut self,
ssrc: u32,
sequence: u16,
timestamp: u32,
stereo: bool,
data: &[i16]);
}
#[derive(Clone, Copy)]
pub enum AudioType {
Opus,
Pcm,
}
|