1use serde::{Deserialize, Serialize};
2
3pub mod asr_processor;
4pub mod cache;
5pub mod denoiser;
6pub mod dtmf;
7pub mod engine;
8pub mod inactivity;
9pub mod jitter;
10pub mod negotiate;
11pub mod processor;
12pub mod recorder;
13pub mod stream;
14#[cfg(test)]
15mod tests;
16pub mod track;
17pub mod vad;
18pub mod volume_control;
19pub use audio_codec::PcmBuf;
20pub use audio_codec::Sample;
21pub type TrackId = String;
22pub type PayloadBuf = Vec<u8>;
23
24#[derive(Debug, Clone, Serialize, Deserialize)]
25pub enum Samples {
26 PCM {
27 samples: PcmBuf,
28 },
29 RTP {
30 sequence_number: u16,
31 payload_type: u8,
32 payload: PayloadBuf,
33 },
34 Empty,
35}
36#[derive(Debug, Clone, Serialize, Deserialize)]
37pub struct AudioFrame {
38 pub track_id: TrackId,
39 pub samples: Samples,
40 pub timestamp: u64,
41 pub sample_rate: u32,
42}
43
44impl Samples {
45 pub fn payload_type(&self) -> Option<u8> {
46 match self {
47 Samples::RTP { payload_type, .. } => Some(*payload_type),
48 _ => None,
49 }
50 }
51}
52pub fn get_timestamp() -> u64 {
54 let now = std::time::SystemTime::now();
55 now.duration_since(std::time::UNIX_EPOCH)
56 .expect("Time went backwards")
57 .as_millis() as u64
58}