rtc_rtp/codecs/g7xx/
mod.rs1#[cfg(test)]
2mod g7xx_test;
3
4use crate::packetizer::Payloader;
5use shared::error::Result;
6
7use bytes::Bytes;
8
9pub type G711Payloader = G7xxPayloader;
11pub type G722Payloader = G7xxPayloader;
13
14#[derive(Default, Debug, Copy, Clone)]
15pub struct G7xxPayloader;
16
17impl Payloader for G7xxPayloader {
18 fn payload(&mut self, mtu: usize, payload: &Bytes) -> Result<Vec<Bytes>> {
20 if payload.is_empty() || mtu == 0 {
21 return Ok(vec![]);
22 }
23
24 let mut payload_data_remaining = payload.len();
25 let mut payload_data_index = 0;
26 let mut payloads = Vec::with_capacity(payload_data_remaining / mtu);
27 while payload_data_remaining > 0 {
28 let current_fragment_size = std::cmp::min(mtu, payload_data_remaining);
29 payloads.push(
30 payload.slice(payload_data_index..payload_data_index + current_fragment_size),
31 );
32
33 payload_data_remaining -= current_fragment_size;
34 payload_data_index += current_fragment_size;
35 }
36
37 Ok(payloads)
38 }
39
40 fn clone_to(&self) -> Box<dyn Payloader> {
41 Box::new(*self)
42 }
43}