Skip to content

Commit a166fff

Browse files
author
Oto Dušek
committed
Fix of rtp header size calculation
1 parent 7bf1438 commit a166fff

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

rtp/src/header.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ pub struct Header {
4747
pub csrc: Vec<u32>,
4848
pub extension_profile: u16,
4949
pub extensions: Vec<Extension>,
50+
pub extensions_padding: usize
5051
}
5152

5253
impl Unmarshal for Header {
@@ -97,7 +98,7 @@ impl Unmarshal for Header {
9798
for _ in 0..cc {
9899
csrc.push(raw_packet.get_u32());
99100
}
100-
101+
let mut extensions_padding: usize = 0;
101102
let (extension_profile, extensions) = if extension {
102103
let expected = curr_offset + 4;
103104
if raw_packet_len < expected {
@@ -123,6 +124,7 @@ impl Unmarshal for Header {
123124
if b == 0x00 {
124125
// padding
125126
curr_offset += 1;
127+
extensions_padding += 1;
126128
continue;
127129
}
128130

@@ -149,6 +151,7 @@ impl Unmarshal for Header {
149151
if b == 0x00 {
150152
// padding
151153
curr_offset += 1;
154+
extensions_padding += 1;
152155
continue;
153156
}
154157

@@ -194,6 +197,7 @@ impl Unmarshal for Header {
194197
csrc,
195198
extension_profile,
196199
extensions,
200+
extensions_padding
197201
})
198202
}
199203
}
@@ -203,7 +207,7 @@ impl MarshalSize for Header {
203207
fn marshal_size(&self) -> usize {
204208
let mut head_size = 12 + (self.csrc.len() * CSRC_LENGTH);
205209
if self.extension {
206-
let extension_payload_len = self.get_extension_payload_len();
210+
let extension_payload_len = self.get_extension_payload_len() + self.extensions_padding;
207211
let extension_payload_size = (extension_payload_len + 3) / 4;
208212
head_size += 4 + extension_payload_size * 4;
209213
}

0 commit comments

Comments
 (0)