Skip to content
This repository was archived by the owner on Aug 23, 2022. It is now read-only.

Commit b9ad2b0

Browse files
author
Rain Liu
committed
update nack and tests
1 parent 8521ddf commit b9ad2b0

File tree

3 files changed

+54
-12
lines changed

3 files changed

+54
-12
lines changed

Cargo.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,7 @@ repository = "https://github.com/webrtc-rs/rtcp"
1313
util = { package = "webrtc-util", version = "0.5.0", default-features = false, features = ["marshal"] }
1414
bytes = "1.1.0"
1515
thiserror = "1.0"
16+
17+
[dev-dependencies]
18+
tokio = { version = "1.12.0", features = ["sync"] }
19+
tokio-test = "0.4.2"

src/transport_feedbacks/transport_layer_cc/mod.rs

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -499,20 +499,10 @@ impl Packet for TransportLayerCc {
499499
fn raw_size(&self) -> usize {
500500
let mut n = HEADER_LENGTH + PACKET_CHUNK_OFFSET + self.packet_chunks.len() * 2;
501501
for d in &self.recv_deltas {
502-
let delta = d.delta / TYPE_TCC_DELTA_SCALE_FACTOR;
503-
504502
// small delta
505-
if d.type_tcc_packet == SymbolTypeTcc::PacketReceivedSmallDelta
506-
&& delta >= 0
507-
&& delta <= u8::MAX as i64
508-
{
503+
if d.type_tcc_packet == SymbolTypeTcc::PacketReceivedSmallDelta {
509504
n += 1;
510-
}
511-
512-
if d.type_tcc_packet == SymbolTypeTcc::PacketReceivedLargeDelta
513-
&& delta >= i16::MIN as i64
514-
&& delta <= i16::MAX as i64
515-
{
505+
} else {
516506
n += 2
517507
}
518508
}

src/transport_feedbacks/transport_layer_nack/transport_layer_nack_test.rs

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
use super::*;
22
use bytes::Bytes;
3+
use std::sync::Arc;
4+
use tokio::sync::Mutex;
35

46
#[test]
57
fn test_transport_layer_nack_unmarshal() {
@@ -190,6 +192,52 @@ fn test_nack_pair() {
190192
);
191193
}
192194

195+
#[tokio::test]
196+
async fn test_nack_pair_range() {
197+
let n = NackPair {
198+
packet_id: 42,
199+
lost_packets: 2,
200+
};
201+
202+
let out = Arc::new(Mutex::new(vec![]));
203+
let out1 = Arc::clone(&out);
204+
n.range(Box::new(
205+
move |s: u16| -> Pin<Box<dyn Future<Output = bool> + Send + 'static>> {
206+
let out2 = Arc::clone(&out1);
207+
Box::pin(async move {
208+
let mut o = out2.lock().await;
209+
o.push(s);
210+
true
211+
})
212+
},
213+
))
214+
.await;
215+
216+
{
217+
let o = out.lock().await;
218+
assert_eq!(*o, &[42, 44]);
219+
}
220+
221+
let out = Arc::new(Mutex::new(vec![]));
222+
let out1 = Arc::clone(&out);
223+
n.range(Box::new(
224+
move |s: u16| -> Pin<Box<dyn Future<Output = bool> + Send + 'static>> {
225+
let out2 = Arc::clone(&out1);
226+
Box::pin(async move {
227+
let mut o = out2.lock().await;
228+
o.push(s);
229+
false
230+
})
231+
},
232+
))
233+
.await;
234+
235+
{
236+
let o = out.lock().await;
237+
assert_eq!(*o, &[42]);
238+
}
239+
}
240+
193241
#[test]
194242
fn test_transport_layer_nack_pair_generation() {
195243
let test = vec![

0 commit comments

Comments
 (0)