rtp_parse/rtcp/
rtcp_sender_info.rs1use anyhow::{Context, Result};
2use bit_cursor::{
3 bit_read::BitRead, bit_read_exts::BitReadExts, bit_write::BitWrite,
4 bit_write_exts::BitWriteExts, byte_order::NetworkOrder,
5};
6
7#[derive(Debug)]
20pub struct RtcpSenderInfo {
21 pub ntp_timestamp_msw: u32,
22 pub ntp_timestamp_lsw: u32,
23 pub rtp_timestamp: u32,
24 pub sender_packet_count: u32,
25 pub sender_octet_count: u32,
26}
27
28pub fn read_rtcp_sender_info<R: BitRead>(buf: &mut R) -> Result<RtcpSenderInfo> {
29 Ok(RtcpSenderInfo {
30 ntp_timestamp_msw: buf
31 .read_u32::<NetworkOrder>()
32 .context("ntp_timestamp_msw")?,
33 ntp_timestamp_lsw: buf
34 .read_u32::<NetworkOrder>()
35 .context("ntp_timestamp_lsw")?,
36 rtp_timestamp: buf.read_u32::<NetworkOrder>().context("rtp_timestamp")?,
37 sender_packet_count: buf
38 .read_u32::<NetworkOrder>()
39 .context("sender_packet_count")?,
40 sender_octet_count: buf
41 .read_u32::<NetworkOrder>()
42 .context("sender_octet_count")?,
43 })
44}
45
46pub fn write_rtcp_sender_info<W: BitWrite>(
47 buf: &mut W,
48 rtcp_sender_info: &RtcpSenderInfo,
49) -> Result<()> {
50 buf.write_u32::<NetworkOrder>(rtcp_sender_info.ntp_timestamp_msw)
51 .context("ntp_timestamp_msw")?;
52 buf.write_u32::<NetworkOrder>(rtcp_sender_info.ntp_timestamp_lsw)
53 .context("ntp_timestamp_lsw")?;
54 buf.write_u32::<NetworkOrder>(rtcp_sender_info.rtp_timestamp)
55 .context("rtp_timestamp")?;
56 buf.write_u32::<NetworkOrder>(rtcp_sender_info.sender_packet_count)
57 .context("sender_packet_count")?;
58 buf.write_u32::<NetworkOrder>(rtcp_sender_info.sender_octet_count)
59 .context("sender_octet_count")?;
60
61 Ok(())
62}