Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(988)

Side by Side Diff: webrtc/modules/audio_coding/neteq/nack_unittest.cc

Issue 1697823002: Replace scoped_ptr with unique_ptr in webrtc/modules/audio_coding/neteq/ (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@up-codecs
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
11 #include "webrtc/modules/audio_coding/neteq/nack.h" 11 #include "webrtc/modules/audio_coding/neteq/nack.h"
12 12
13 #include <stdint.h> 13 #include <stdint.h>
14 14
15 #include <algorithm> 15 #include <algorithm>
16 #include <memory>
16 17
17 #include "testing/gtest/include/gtest/gtest.h" 18 #include "testing/gtest/include/gtest/gtest.h"
18 #include "webrtc/base/scoped_ptr.h"
19 #include "webrtc/typedefs.h" 19 #include "webrtc/typedefs.h"
20 #include "webrtc/modules/audio_coding/include/audio_coding_module_typedefs.h" 20 #include "webrtc/modules/audio_coding/include/audio_coding_module_typedefs.h"
21 21
22 namespace webrtc { 22 namespace webrtc {
23 namespace { 23 namespace {
24 24
25 const int kNackThreshold = 3; 25 const int kNackThreshold = 3;
26 const int kSampleRateHz = 16000; 26 const int kSampleRateHz = 16000;
27 const int kPacketSizeMs = 30; 27 const int kPacketSizeMs = 30;
28 const uint32_t kTimestampIncrement = 480; // 30 ms. 28 const uint32_t kTimestampIncrement = 480; // 30 ms.
(...skipping 19 matching lines...) Expand all
48 } 48 }
49 if (!seq_num_matched) 49 if (!seq_num_matched)
50 return false; 50 return false;
51 } 51 }
52 return true; 52 return true;
53 } 53 }
54 54
55 } // namespace 55 } // namespace
56 56
57 TEST(NackTest, EmptyListWhenNoPacketLoss) { 57 TEST(NackTest, EmptyListWhenNoPacketLoss) {
58 rtc::scoped_ptr<Nack> nack(Nack::Create(kNackThreshold)); 58 std::unique_ptr<Nack> nack(Nack::Create(kNackThreshold));
59 nack->UpdateSampleRate(kSampleRateHz); 59 nack->UpdateSampleRate(kSampleRateHz);
60 60
61 int seq_num = 1; 61 int seq_num = 1;
62 uint32_t timestamp = 0; 62 uint32_t timestamp = 0;
63 63
64 std::vector<uint16_t> nack_list; 64 std::vector<uint16_t> nack_list;
65 for (int n = 0; n < 100; n++) { 65 for (int n = 0; n < 100; n++) {
66 nack->UpdateLastReceivedPacket(seq_num, timestamp); 66 nack->UpdateLastReceivedPacket(seq_num, timestamp);
67 nack_list = nack->GetNackList(kShortRoundTripTimeMs); 67 nack_list = nack->GetNackList(kShortRoundTripTimeMs);
68 seq_num++; 68 seq_num++;
69 timestamp += kTimestampIncrement; 69 timestamp += kTimestampIncrement;
70 nack_list = nack->GetNackList(kShortRoundTripTimeMs); 70 nack_list = nack->GetNackList(kShortRoundTripTimeMs);
71 EXPECT_TRUE(nack_list.empty()); 71 EXPECT_TRUE(nack_list.empty());
72 } 72 }
73 } 73 }
74 74
75 TEST(NackTest, NoNackIfReorderWithinNackThreshold) { 75 TEST(NackTest, NoNackIfReorderWithinNackThreshold) {
76 rtc::scoped_ptr<Nack> nack(Nack::Create(kNackThreshold)); 76 std::unique_ptr<Nack> nack(Nack::Create(kNackThreshold));
77 nack->UpdateSampleRate(kSampleRateHz); 77 nack->UpdateSampleRate(kSampleRateHz);
78 78
79 int seq_num = 1; 79 int seq_num = 1;
80 uint32_t timestamp = 0; 80 uint32_t timestamp = 0;
81 std::vector<uint16_t> nack_list; 81 std::vector<uint16_t> nack_list;
82 82
83 nack->UpdateLastReceivedPacket(seq_num, timestamp); 83 nack->UpdateLastReceivedPacket(seq_num, timestamp);
84 nack_list = nack->GetNackList(kShortRoundTripTimeMs); 84 nack_list = nack->GetNackList(kShortRoundTripTimeMs);
85 EXPECT_TRUE(nack_list.empty()); 85 EXPECT_TRUE(nack_list.empty());
86 int num_late_packets = kNackThreshold + 1; 86 int num_late_packets = kNackThreshold + 1;
87 87
88 // Push in reverse order 88 // Push in reverse order
89 while (num_late_packets > 0) { 89 while (num_late_packets > 0) {
90 nack->UpdateLastReceivedPacket( 90 nack->UpdateLastReceivedPacket(
91 seq_num + num_late_packets, 91 seq_num + num_late_packets,
92 timestamp + num_late_packets * kTimestampIncrement); 92 timestamp + num_late_packets * kTimestampIncrement);
93 nack_list = nack->GetNackList(kShortRoundTripTimeMs); 93 nack_list = nack->GetNackList(kShortRoundTripTimeMs);
94 EXPECT_TRUE(nack_list.empty()); 94 EXPECT_TRUE(nack_list.empty());
95 num_late_packets--; 95 num_late_packets--;
96 } 96 }
97 } 97 }
98 98
99 TEST(NackTest, LatePacketsMovedToNackThenNackListDoesNotChange) { 99 TEST(NackTest, LatePacketsMovedToNackThenNackListDoesNotChange) {
100 const uint16_t kSequenceNumberLostPackets[] = {2, 3, 4, 5, 6, 7, 8, 9}; 100 const uint16_t kSequenceNumberLostPackets[] = {2, 3, 4, 5, 6, 7, 8, 9};
101 static const int kNumAllLostPackets = sizeof(kSequenceNumberLostPackets) / 101 static const int kNumAllLostPackets = sizeof(kSequenceNumberLostPackets) /
102 sizeof(kSequenceNumberLostPackets[0]); 102 sizeof(kSequenceNumberLostPackets[0]);
103 103
104 for (int k = 0; k < 2; k++) { // Two iteration with/without wrap around. 104 for (int k = 0; k < 2; k++) { // Two iteration with/without wrap around.
105 rtc::scoped_ptr<Nack> nack(Nack::Create(kNackThreshold)); 105 std::unique_ptr<Nack> nack(Nack::Create(kNackThreshold));
106 nack->UpdateSampleRate(kSampleRateHz); 106 nack->UpdateSampleRate(kSampleRateHz);
107 107
108 uint16_t sequence_num_lost_packets[kNumAllLostPackets]; 108 uint16_t sequence_num_lost_packets[kNumAllLostPackets];
109 for (int n = 0; n < kNumAllLostPackets; n++) { 109 for (int n = 0; n < kNumAllLostPackets; n++) {
110 sequence_num_lost_packets[n] = 110 sequence_num_lost_packets[n] =
111 kSequenceNumberLostPackets[n] + 111 kSequenceNumberLostPackets[n] +
112 k * 65531; // Have wrap around in sequence numbers for |k == 1|. 112 k * 65531; // Have wrap around in sequence numbers for |k == 1|.
113 } 113 }
114 uint16_t seq_num = sequence_num_lost_packets[0] - 1; 114 uint16_t seq_num = sequence_num_lost_packets[0] - 1;
115 115
(...skipping 28 matching lines...) Expand all
144 } 144 }
145 } 145 }
146 } 146 }
147 147
148 TEST(NackTest, ArrivedPacketsAreRemovedFromNackList) { 148 TEST(NackTest, ArrivedPacketsAreRemovedFromNackList) {
149 const uint16_t kSequenceNumberLostPackets[] = {2, 3, 4, 5, 6, 7, 8, 9}; 149 const uint16_t kSequenceNumberLostPackets[] = {2, 3, 4, 5, 6, 7, 8, 9};
150 static const int kNumAllLostPackets = sizeof(kSequenceNumberLostPackets) / 150 static const int kNumAllLostPackets = sizeof(kSequenceNumberLostPackets) /
151 sizeof(kSequenceNumberLostPackets[0]); 151 sizeof(kSequenceNumberLostPackets[0]);
152 152
153 for (int k = 0; k < 2; ++k) { // Two iteration with/without wrap around. 153 for (int k = 0; k < 2; ++k) { // Two iteration with/without wrap around.
154 rtc::scoped_ptr<Nack> nack(Nack::Create(kNackThreshold)); 154 std::unique_ptr<Nack> nack(Nack::Create(kNackThreshold));
155 nack->UpdateSampleRate(kSampleRateHz); 155 nack->UpdateSampleRate(kSampleRateHz);
156 156
157 uint16_t sequence_num_lost_packets[kNumAllLostPackets]; 157 uint16_t sequence_num_lost_packets[kNumAllLostPackets];
158 for (int n = 0; n < kNumAllLostPackets; ++n) { 158 for (int n = 0; n < kNumAllLostPackets; ++n) {
159 sequence_num_lost_packets[n] = kSequenceNumberLostPackets[n] + 159 sequence_num_lost_packets[n] = kSequenceNumberLostPackets[n] +
160 k * 65531; // Wrap around for |k == 1|. 160 k * 65531; // Wrap around for |k == 1|.
161 } 161 }
162 162
163 uint16_t seq_num = sequence_num_lost_packets[0] - 1; 163 uint16_t seq_num = sequence_num_lost_packets[0] - 1;
164 uint32_t timestamp = 0; 164 uint32_t timestamp = 0;
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 206
207 // Assess if estimation of timestamps and time-to-play is correct. Introduce all 207 // Assess if estimation of timestamps and time-to-play is correct. Introduce all
208 // combinations that timestamps and sequence numbers might have wrap around. 208 // combinations that timestamps and sequence numbers might have wrap around.
209 TEST(NackTest, EstimateTimestampAndTimeToPlay) { 209 TEST(NackTest, EstimateTimestampAndTimeToPlay) {
210 const uint16_t kLostPackets[] = {2, 3, 4, 5, 6, 7, 8, 210 const uint16_t kLostPackets[] = {2, 3, 4, 5, 6, 7, 8,
211 9, 10, 11, 12, 13, 14, 15}; 211 9, 10, 11, 12, 13, 14, 15};
212 static const int kNumAllLostPackets = 212 static const int kNumAllLostPackets =
213 sizeof(kLostPackets) / sizeof(kLostPackets[0]); 213 sizeof(kLostPackets) / sizeof(kLostPackets[0]);
214 214
215 for (int k = 0; k < 4; ++k) { 215 for (int k = 0; k < 4; ++k) {
216 rtc::scoped_ptr<Nack> nack(Nack::Create(kNackThreshold)); 216 std::unique_ptr<Nack> nack(Nack::Create(kNackThreshold));
217 nack->UpdateSampleRate(kSampleRateHz); 217 nack->UpdateSampleRate(kSampleRateHz);
218 218
219 // Sequence number wrap around if |k| is 2 or 3; 219 // Sequence number wrap around if |k| is 2 or 3;
220 int seq_num_offset = (k < 2) ? 0 : 65531; 220 int seq_num_offset = (k < 2) ? 0 : 65531;
221 221
222 // Timestamp wrap around if |k| is 1 or 3. 222 // Timestamp wrap around if |k| is 1 or 3.
223 uint32_t timestamp_offset = 223 uint32_t timestamp_offset =
224 (k & 0x1) ? static_cast<uint32_t>(0xffffffff) - 6 : 0; 224 (k & 0x1) ? static_cast<uint32_t>(0xffffffff) - 6 : 0;
225 225
226 uint32_t timestamp_lost_packets[kNumAllLostPackets]; 226 uint32_t timestamp_lost_packets[kNumAllLostPackets];
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
277 int index = seq_num - kLostPackets[0]; 277 int index = seq_num - kLostPackets[0];
278 EXPECT_EQ((index + 2) * kPacketSizeMs - 10, it->second.time_to_play_ms); 278 EXPECT_EQ((index + 2) * kPacketSizeMs - 10, it->second.time_to_play_ms);
279 ++it; 279 ++it;
280 } 280 }
281 } 281 }
282 } 282 }
283 283
284 TEST(NackTest, MissingPacketsPriorToLastDecodedRtpShouldNotBeInNackList) { 284 TEST(NackTest, MissingPacketsPriorToLastDecodedRtpShouldNotBeInNackList) {
285 for (int m = 0; m < 2; ++m) { 285 for (int m = 0; m < 2; ++m) {
286 uint16_t seq_num_offset = (m == 0) ? 0 : 65531; // Wrap around if |m| is 1. 286 uint16_t seq_num_offset = (m == 0) ? 0 : 65531; // Wrap around if |m| is 1.
287 rtc::scoped_ptr<Nack> nack(Nack::Create(kNackThreshold)); 287 std::unique_ptr<Nack> nack(Nack::Create(kNackThreshold));
288 nack->UpdateSampleRate(kSampleRateHz); 288 nack->UpdateSampleRate(kSampleRateHz);
289 289
290 // Two consecutive packets to have a correct estimate of timestamp increase. 290 // Two consecutive packets to have a correct estimate of timestamp increase.
291 uint16_t seq_num = 0; 291 uint16_t seq_num = 0;
292 nack->UpdateLastReceivedPacket(seq_num_offset + seq_num, 292 nack->UpdateLastReceivedPacket(seq_num_offset + seq_num,
293 seq_num * kTimestampIncrement); 293 seq_num * kTimestampIncrement);
294 seq_num++; 294 seq_num++;
295 nack->UpdateLastReceivedPacket(seq_num_offset + seq_num, 295 nack->UpdateLastReceivedPacket(seq_num_offset + seq_num,
296 seq_num * kTimestampIncrement); 296 seq_num * kTimestampIncrement);
297 297
(...skipping 30 matching lines...) Expand all
328 seq_num++; 328 seq_num++;
329 nack->UpdateLastReceivedPacket(seq_num_offset + seq_num, 329 nack->UpdateLastReceivedPacket(seq_num_offset + seq_num,
330 seq_num * kTimestampIncrement); 330 seq_num * kTimestampIncrement);
331 nack_list = nack->GetNackList(kShortRoundTripTimeMs); 331 nack_list = nack->GetNackList(kShortRoundTripTimeMs);
332 EXPECT_TRUE(nack_list.empty()); 332 EXPECT_TRUE(nack_list.empty());
333 } 333 }
334 } 334 }
335 } 335 }
336 336
337 TEST(NackTest, Reset) { 337 TEST(NackTest, Reset) {
338 rtc::scoped_ptr<Nack> nack(Nack::Create(kNackThreshold)); 338 std::unique_ptr<Nack> nack(Nack::Create(kNackThreshold));
339 nack->UpdateSampleRate(kSampleRateHz); 339 nack->UpdateSampleRate(kSampleRateHz);
340 340
341 // Two consecutive packets to have a correct estimate of timestamp increase. 341 // Two consecutive packets to have a correct estimate of timestamp increase.
342 uint16_t seq_num = 0; 342 uint16_t seq_num = 0;
343 nack->UpdateLastReceivedPacket(seq_num, seq_num * kTimestampIncrement); 343 nack->UpdateLastReceivedPacket(seq_num, seq_num * kTimestampIncrement);
344 seq_num++; 344 seq_num++;
345 nack->UpdateLastReceivedPacket(seq_num, seq_num * kTimestampIncrement); 345 nack->UpdateLastReceivedPacket(seq_num, seq_num * kTimestampIncrement);
346 346
347 // Skip 10 packets (larger than NACK threshold). 347 // Skip 10 packets (larger than NACK threshold).
348 const int kNumLostPackets = 10; 348 const int kNumLostPackets = 10;
349 seq_num += kNumLostPackets + 1; 349 seq_num += kNumLostPackets + 1;
350 nack->UpdateLastReceivedPacket(seq_num, seq_num * kTimestampIncrement); 350 nack->UpdateLastReceivedPacket(seq_num, seq_num * kTimestampIncrement);
351 351
352 const size_t kExpectedListSize = kNumLostPackets - kNackThreshold; 352 const size_t kExpectedListSize = kNumLostPackets - kNackThreshold;
353 std::vector<uint16_t> nack_list = nack->GetNackList(kShortRoundTripTimeMs); 353 std::vector<uint16_t> nack_list = nack->GetNackList(kShortRoundTripTimeMs);
354 EXPECT_EQ(kExpectedListSize, nack_list.size()); 354 EXPECT_EQ(kExpectedListSize, nack_list.size());
355 355
356 nack->Reset(); 356 nack->Reset();
357 nack_list = nack->GetNackList(kShortRoundTripTimeMs); 357 nack_list = nack->GetNackList(kShortRoundTripTimeMs);
358 EXPECT_TRUE(nack_list.empty()); 358 EXPECT_TRUE(nack_list.empty());
359 } 359 }
360 360
361 TEST(NackTest, ListSizeAppliedFromBeginning) { 361 TEST(NackTest, ListSizeAppliedFromBeginning) {
362 const size_t kNackListSize = 10; 362 const size_t kNackListSize = 10;
363 for (int m = 0; m < 2; ++m) { 363 for (int m = 0; m < 2; ++m) {
364 uint16_t seq_num_offset = (m == 0) ? 0 : 65525; // Wrap around if |m| is 1. 364 uint16_t seq_num_offset = (m == 0) ? 0 : 65525; // Wrap around if |m| is 1.
365 rtc::scoped_ptr<Nack> nack(Nack::Create(kNackThreshold)); 365 std::unique_ptr<Nack> nack(Nack::Create(kNackThreshold));
366 nack->UpdateSampleRate(kSampleRateHz); 366 nack->UpdateSampleRate(kSampleRateHz);
367 nack->SetMaxNackListSize(kNackListSize); 367 nack->SetMaxNackListSize(kNackListSize);
368 368
369 uint16_t seq_num = seq_num_offset; 369 uint16_t seq_num = seq_num_offset;
370 uint32_t timestamp = 0x12345678; 370 uint32_t timestamp = 0x12345678;
371 nack->UpdateLastReceivedPacket(seq_num, timestamp); 371 nack->UpdateLastReceivedPacket(seq_num, timestamp);
372 372
373 // Packet lost more than NACK-list size limit. 373 // Packet lost more than NACK-list size limit.
374 uint16_t num_lost_packets = kNackThreshold + kNackListSize + 5; 374 uint16_t num_lost_packets = kNackThreshold + kNackListSize + 5;
375 375
376 seq_num += num_lost_packets + 1; 376 seq_num += num_lost_packets + 1;
377 timestamp += (num_lost_packets + 1) * kTimestampIncrement; 377 timestamp += (num_lost_packets + 1) * kTimestampIncrement;
378 nack->UpdateLastReceivedPacket(seq_num, timestamp); 378 nack->UpdateLastReceivedPacket(seq_num, timestamp);
379 379
380 std::vector<uint16_t> nack_list = nack->GetNackList(kShortRoundTripTimeMs); 380 std::vector<uint16_t> nack_list = nack->GetNackList(kShortRoundTripTimeMs);
381 EXPECT_EQ(kNackListSize - kNackThreshold, nack_list.size()); 381 EXPECT_EQ(kNackListSize - kNackThreshold, nack_list.size());
382 } 382 }
383 } 383 }
384 384
385 TEST(NackTest, ChangeOfListSizeAppliedAndOldElementsRemoved) { 385 TEST(NackTest, ChangeOfListSizeAppliedAndOldElementsRemoved) {
386 const size_t kNackListSize = 10; 386 const size_t kNackListSize = 10;
387 for (int m = 0; m < 2; ++m) { 387 for (int m = 0; m < 2; ++m) {
388 uint16_t seq_num_offset = (m == 0) ? 0 : 65525; // Wrap around if |m| is 1. 388 uint16_t seq_num_offset = (m == 0) ? 0 : 65525; // Wrap around if |m| is 1.
389 rtc::scoped_ptr<Nack> nack(Nack::Create(kNackThreshold)); 389 std::unique_ptr<Nack> nack(Nack::Create(kNackThreshold));
390 nack->UpdateSampleRate(kSampleRateHz); 390 nack->UpdateSampleRate(kSampleRateHz);
391 391
392 uint16_t seq_num = seq_num_offset; 392 uint16_t seq_num = seq_num_offset;
393 uint32_t timestamp = 0x87654321; 393 uint32_t timestamp = 0x87654321;
394 nack->UpdateLastReceivedPacket(seq_num, timestamp); 394 nack->UpdateLastReceivedPacket(seq_num, timestamp);
395 395
396 // Packet lost more than NACK-list size limit. 396 // Packet lost more than NACK-list size limit.
397 uint16_t num_lost_packets = kNackThreshold + kNackListSize + 5; 397 uint16_t num_lost_packets = kNackThreshold + kNackListSize + 5;
398 398
399 rtc::scoped_ptr<uint16_t[]> seq_num_lost(new uint16_t[num_lost_packets]); 399 std::unique_ptr<uint16_t[]> seq_num_lost(new uint16_t[num_lost_packets]);
400 for (int n = 0; n < num_lost_packets; ++n) { 400 for (int n = 0; n < num_lost_packets; ++n) {
401 seq_num_lost[n] = ++seq_num; 401 seq_num_lost[n] = ++seq_num;
402 } 402 }
403 403
404 ++seq_num; 404 ++seq_num;
405 timestamp += (num_lost_packets + 1) * kTimestampIncrement; 405 timestamp += (num_lost_packets + 1) * kTimestampIncrement;
406 nack->UpdateLastReceivedPacket(seq_num, timestamp); 406 nack->UpdateLastReceivedPacket(seq_num, timestamp);
407 size_t expected_size = num_lost_packets - kNackThreshold; 407 size_t expected_size = num_lost_packets - kNackThreshold;
408 408
409 std::vector<uint16_t> nack_list = nack->GetNackList(kShortRoundTripTimeMs); 409 std::vector<uint16_t> nack_list = nack->GetNackList(kShortRoundTripTimeMs);
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 ++seq_num; 445 ++seq_num;
446 timestamp += kTimestampIncrement; 446 timestamp += kTimestampIncrement;
447 nack->UpdateLastReceivedPacket(seq_num, timestamp); 447 nack->UpdateLastReceivedPacket(seq_num, timestamp);
448 nack_list = nack->GetNackList(kShortRoundTripTimeMs); 448 nack_list = nack->GetNackList(kShortRoundTripTimeMs);
449 EXPECT_TRUE(nack_list.empty()); 449 EXPECT_TRUE(nack_list.empty());
450 } 450 }
451 } 451 }
452 452
453 TEST(NackTest, RoudTripTimeIsApplied) { 453 TEST(NackTest, RoudTripTimeIsApplied) {
454 const int kNackListSize = 200; 454 const int kNackListSize = 200;
455 rtc::scoped_ptr<Nack> nack(Nack::Create(kNackThreshold)); 455 std::unique_ptr<Nack> nack(Nack::Create(kNackThreshold));
456 nack->UpdateSampleRate(kSampleRateHz); 456 nack->UpdateSampleRate(kSampleRateHz);
457 nack->SetMaxNackListSize(kNackListSize); 457 nack->SetMaxNackListSize(kNackListSize);
458 458
459 uint16_t seq_num = 0; 459 uint16_t seq_num = 0;
460 uint32_t timestamp = 0x87654321; 460 uint32_t timestamp = 0x87654321;
461 nack->UpdateLastReceivedPacket(seq_num, timestamp); 461 nack->UpdateLastReceivedPacket(seq_num, timestamp);
462 462
463 // Packet lost more than NACK-list size limit. 463 // Packet lost more than NACK-list size limit.
464 uint16_t kNumLostPackets = kNackThreshold + 5; 464 uint16_t kNumLostPackets = kNackThreshold + 5;
465 465
466 seq_num += (1 + kNumLostPackets); 466 seq_num += (1 + kNumLostPackets);
467 timestamp += (1 + kNumLostPackets) * kTimestampIncrement; 467 timestamp += (1 + kNumLostPackets) * kTimestampIncrement;
468 nack->UpdateLastReceivedPacket(seq_num, timestamp); 468 nack->UpdateLastReceivedPacket(seq_num, timestamp);
469 469
470 // Expected time-to-play are: 470 // Expected time-to-play are:
471 // kPacketSizeMs - 10, 2*kPacketSizeMs - 10, 3*kPacketSizeMs - 10, ... 471 // kPacketSizeMs - 10, 2*kPacketSizeMs - 10, 3*kPacketSizeMs - 10, ...
472 // 472 //
473 // sequence number: 1, 2, 3, 4, 5 473 // sequence number: 1, 2, 3, 4, 5
474 // time-to-play: 20, 50, 80, 110, 140 474 // time-to-play: 20, 50, 80, 110, 140
475 // 475 //
476 std::vector<uint16_t> nack_list = nack->GetNackList(100); 476 std::vector<uint16_t> nack_list = nack->GetNackList(100);
477 ASSERT_EQ(2u, nack_list.size()); 477 ASSERT_EQ(2u, nack_list.size());
478 EXPECT_EQ(4, nack_list[0]); 478 EXPECT_EQ(4, nack_list[0]);
479 EXPECT_EQ(5, nack_list[1]); 479 EXPECT_EQ(5, nack_list[1]);
480 } 480 }
481 481
482 } // namespace webrtc 482 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/audio_coding/neteq/nack.h ('k') | webrtc/modules/audio_coding/neteq/neteq_external_decoder_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698