voice_engine/media/
mod.rs1use serde::{Deserialize, Serialize};
2
3pub mod asr_processor;
4pub mod cache;
5pub mod codecs;
6pub mod denoiser;
7pub mod dtmf;
8pub mod engine;
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;
19
20pub type TrackId = String;
21pub type Sample = i16;
22pub type PcmBuf = Vec<Sample>;
23pub type PayloadBuf = Vec<u8>;
24
25#[derive(Debug, Clone, Serialize, Deserialize)]
26pub enum Samples {
27 PCM {
28 samples: PcmBuf,
29 },
30 RTP {
31 sequence_number: u16,
32 payload_type: u8,
33 payload: PayloadBuf,
34 },
35 Empty,
36}
37#[derive(Debug, Clone, Serialize, Deserialize)]
38pub struct AudioFrame {
39 pub track_id: TrackId,
40 pub samples: Samples,
41 pub timestamp: u64,
42 pub sample_rate: u32,
43}
44
45impl Samples {
46 pub fn payload_type(&self) -> Option<u8> {
47 match self {
48 Samples::RTP { payload_type, .. } => Some(*payload_type),
49 _ => None,
50 }
51 }
52}
53pub fn get_timestamp() -> u64 {
55 let now = std::time::SystemTime::now();
56 now.duration_since(std::time::UNIX_EPOCH)
57 .expect("Time went backwards")
58 .as_millis() as u64
59}