active_call/media/
mod.rs

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}
52// get timestamp in milliseconds
53pub 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}