Skip to content

Commit 92d376b

Browse files
authored
Merge pull request webrtc-rs#454 from oto313/feature/fix-calculation-rtp-header-size
Fix of rtp header size calculation
2 parents f33c5f5 + 81c7b56 commit 92d376b

File tree

4 files changed

+11
-2
lines changed

4 files changed

+11
-2
lines changed

media/src/io/ivf_writer/ivf_writer_test.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ fn test_ivf_writer_add_packet_and_close() -> Result<()> {
2424
csrc: vec![],
2525
padding: false,
2626
extensions: vec![],
27+
extensions_padding: 0,
2728
},
2829
payload: raw_valid_pkt.slice(20..),
2930
};
@@ -51,6 +52,7 @@ fn test_ivf_writer_add_packet_and_close() -> Result<()> {
5152
csrc: vec![],
5253
padding: raw_mid_part_pkt.len() % 4 != 0,
5354
extensions: vec![],
55+
extensions_padding: 0,
5456
},
5557
payload: raw_mid_part_pkt.slice(20..),
5658
};
@@ -78,6 +80,7 @@ fn test_ivf_writer_add_packet_and_close() -> Result<()> {
7880
csrc: vec![],
7981
padding: raw_keyframe_pkt.len() % 4 != 0,
8082
extensions: vec![],
83+
extensions_padding: 0,
8184
},
8285
payload: raw_keyframe_pkt.slice(20..),
8386
};

media/src/io/ogg_writer/ogg_writer_test.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ fn test_ogg_writer_add_packet_and_close() -> Result<()> {
2323
csrc: vec![],
2424
padding: false,
2525
extensions: vec![],
26+
extensions_padding: 0,
2627
},
2728
payload: raw_pkt.slice(20..),
2829
};

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
}

rtp/src/packetizer/packetizer_test.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ fn test_packetizer_abs_send_time() -> Result<()> {
7777
id: 1,
7878
payload: Bytes::from_static(&[0x40, 0, 0]),
7979
}],
80+
extensions_padding: 0,
8081
},
8182
payload: Bytes::from_static(&[0x11, 0x12, 0x13, 0x14]),
8283
};

0 commit comments

Comments
 (0)