rtp_parse/rtcp/
rtcp_fb_header.rs1use anyhow::{Context, Result};
2use bit_cursor::{
3 bit_read_exts::BitReadExts, bit_write_exts::BitWriteExts, byte_order::NetworkOrder,
4};
5
6use crate::{PacketBuffer, PacketBufferMut};
7
8#[derive(Debug)]
15pub struct RtcpFbHeader {
16 pub sender_ssrc: u32,
17 pub media_source_ssrc: u32,
18}
19
20pub fn read_rtcp_fb_header<B: PacketBuffer>(buf: &mut B) -> Result<RtcpFbHeader> {
21 let sender_ssrc = buf.read_u32::<NetworkOrder>().context("sender ssrc")?;
22 let media_source_ssrc = buf.read_u32::<NetworkOrder>().context("media ssrc")?;
23
24 Ok(RtcpFbHeader {
25 sender_ssrc,
26 media_source_ssrc,
27 })
28}
29
30pub fn write_rtcp_fb_header<B: PacketBufferMut>(
31 buf: &mut B,
32 fb_header: &RtcpFbHeader,
33) -> Result<()> {
34 buf.write_u32::<NetworkOrder>(fb_header.sender_ssrc)
35 .context("sender ssrc")?;
36 buf.write_u32::<NetworkOrder>(fb_header.media_source_ssrc)
37 .context("media_source_ssrc")?;
38
39 Ok(())
40}