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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#[cfg(test)]
mod opus_test;
use crate::{
error::{Error, Result},
packetizer::{Depacketizer, Payloader},
};
use bytes::Bytes;
#[derive(Default, Debug, Copy, Clone)]
pub struct OpusPayloader;
impl Payloader for OpusPayloader {
fn payload(&mut self, mtu: usize, payload: &Bytes) -> Result<Vec<Bytes>> {
if payload.is_empty() || mtu == 0 {
return Ok(vec![]);
}
Ok(vec![payload.clone()])
}
fn clone_to(&self) -> Box<dyn Payloader + Send + Sync> {
Box::new(*self)
}
}
#[derive(PartialEq, Debug, Default, Clone)]
pub struct OpusPacket;
impl Depacketizer for OpusPacket {
fn depacketize(&mut self, packet: &Bytes) -> Result<Bytes> {
if packet.is_empty() {
Err(Error::ErrShortPacket)
} else {
Ok(packet.clone())
}
}
fn is_partition_head(&self, _payload: &Bytes) -> bool {
true
}
fn is_partition_tail(&self, _marker: bool, _payload: &Bytes) -> bool {
true
}
}