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

Side by Side Diff: webrtc/modules/rtp_rtcp/source/rtcp_sender_unittest.cc

Issue 1373903003: Unify newapi::RtcpMode and RTCPMethod. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: ehm, compile the code Created 5 years, 2 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) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 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
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 } 253 }
254 254
255 SimulatedClock clock_; 255 SimulatedClock clock_;
256 TestTransport test_transport_; 256 TestTransport test_transport_;
257 rtc::scoped_ptr<ReceiveStatistics> receive_statistics_; 257 rtc::scoped_ptr<ReceiveStatistics> receive_statistics_;
258 rtc::scoped_ptr<ModuleRtpRtcpImpl> rtp_rtcp_impl_; 258 rtc::scoped_ptr<ModuleRtpRtcpImpl> rtp_rtcp_impl_;
259 rtc::scoped_ptr<RTCPSender> rtcp_sender_; 259 rtc::scoped_ptr<RTCPSender> rtcp_sender_;
260 }; 260 };
261 261
262 TEST_F(RtcpSenderTest, SetRtcpStatus) { 262 TEST_F(RtcpSenderTest, SetRtcpStatus) {
263 EXPECT_EQ(kRtcpOff, rtcp_sender_->Status()); 263 EXPECT_EQ(RtcpMode::kOff, rtcp_sender_->Status());
264 rtcp_sender_->SetRTCPStatus(kRtcpNonCompound); 264 rtcp_sender_->SetRTCPStatus(RtcpMode::kReducedSize);
265 EXPECT_EQ(kRtcpNonCompound, rtcp_sender_->Status()); 265 EXPECT_EQ(RtcpMode::kReducedSize, rtcp_sender_->Status());
266 } 266 }
267 267
268 TEST_F(RtcpSenderTest, SetSendingStatus) { 268 TEST_F(RtcpSenderTest, SetSendingStatus) {
269 EXPECT_FALSE(rtcp_sender_->Sending()); 269 EXPECT_FALSE(rtcp_sender_->Sending());
270 EXPECT_EQ(0, rtcp_sender_->SetSendingStatus(feedback_state(), true)); 270 EXPECT_EQ(0, rtcp_sender_->SetSendingStatus(feedback_state(), true));
271 EXPECT_TRUE(rtcp_sender_->Sending()); 271 EXPECT_TRUE(rtcp_sender_->Sending());
272 } 272 }
273 273
274 TEST_F(RtcpSenderTest, NoPacketSentIfOff) { 274 TEST_F(RtcpSenderTest, NoPacketSentIfOff) {
275 rtcp_sender_->SetRTCPStatus(kRtcpOff); 275 rtcp_sender_->SetRTCPStatus(RtcpMode::kOff);
276 EXPECT_EQ(-1, rtcp_sender_->SendRTCP(feedback_state(), kRtcpSr)); 276 EXPECT_EQ(-1, rtcp_sender_->SendRTCP(feedback_state(), kRtcpSr));
277 } 277 }
278 278
279 TEST_F(RtcpSenderTest, SendSr) { 279 TEST_F(RtcpSenderTest, SendSr) {
280 const uint32_t kPacketCount = 0x12345; 280 const uint32_t kPacketCount = 0x12345;
281 const uint32_t kOctetCount = 0x23456; 281 const uint32_t kOctetCount = 0x23456;
282 rtcp_sender_->SetRTCPStatus(kRtcpNonCompound); 282 rtcp_sender_->SetRTCPStatus(RtcpMode::kReducedSize);
283 RTCPSender::FeedbackState feedback_state = rtp_rtcp_impl_->GetFeedbackState(); 283 RTCPSender::FeedbackState feedback_state = rtp_rtcp_impl_->GetFeedbackState();
284 feedback_state.packets_sent = kPacketCount; 284 feedback_state.packets_sent = kPacketCount;
285 feedback_state.media_bytes_sent = kOctetCount; 285 feedback_state.media_bytes_sent = kOctetCount;
286 uint32_t ntp_secs; 286 uint32_t ntp_secs;
287 uint32_t ntp_frac; 287 uint32_t ntp_frac;
288 clock_.CurrentNtp(ntp_secs, ntp_frac); 288 clock_.CurrentNtp(ntp_secs, ntp_frac);
289 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state, kRtcpSr)); 289 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state, kRtcpSr));
290 EXPECT_EQ(1, parser()->sender_report()->num_packets()); 290 EXPECT_EQ(1, parser()->sender_report()->num_packets());
291 EXPECT_EQ(kSenderSsrc, parser()->sender_report()->Ssrc()); 291 EXPECT_EQ(kSenderSsrc, parser()->sender_report()->Ssrc());
292 EXPECT_EQ(ntp_secs, parser()->sender_report()->NtpSec()); 292 EXPECT_EQ(ntp_secs, parser()->sender_report()->NtpSec());
293 EXPECT_EQ(ntp_frac, parser()->sender_report()->NtpFrac()); 293 EXPECT_EQ(ntp_frac, parser()->sender_report()->NtpFrac());
294 EXPECT_EQ(kPacketCount, parser()->sender_report()->PacketCount()); 294 EXPECT_EQ(kPacketCount, parser()->sender_report()->PacketCount());
295 EXPECT_EQ(kOctetCount, parser()->sender_report()->OctetCount()); 295 EXPECT_EQ(kOctetCount, parser()->sender_report()->OctetCount());
296 EXPECT_EQ(0, parser()->report_block()->num_packets()); 296 EXPECT_EQ(0, parser()->report_block()->num_packets());
297 } 297 }
298 298
299 TEST_F(RtcpSenderTest, SendRr) { 299 TEST_F(RtcpSenderTest, SendRr) {
300 rtcp_sender_->SetRTCPStatus(kRtcpNonCompound); 300 rtcp_sender_->SetRTCPStatus(RtcpMode::kReducedSize);
301 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpRr)); 301 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpRr));
302 EXPECT_EQ(1, parser()->receiver_report()->num_packets()); 302 EXPECT_EQ(1, parser()->receiver_report()->num_packets());
303 EXPECT_EQ(kSenderSsrc, parser()->receiver_report()->Ssrc()); 303 EXPECT_EQ(kSenderSsrc, parser()->receiver_report()->Ssrc());
304 EXPECT_EQ(0, parser()->report_block()->num_packets()); 304 EXPECT_EQ(0, parser()->report_block()->num_packets());
305 } 305 }
306 306
307 TEST_F(RtcpSenderTest, SendRrWithOneReportBlock) { 307 TEST_F(RtcpSenderTest, SendRrWithOneReportBlock) {
308 const uint16_t kSeqNum = 11111; 308 const uint16_t kSeqNum = 11111;
309 InsertIncomingPacket(kRemoteSsrc, kSeqNum); 309 InsertIncomingPacket(kRemoteSsrc, kSeqNum);
310 rtcp_sender_->SetRTCPStatus(kRtcpCompound); 310 rtcp_sender_->SetRTCPStatus(RtcpMode::kCompound);
311 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpRr)); 311 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpRr));
312 EXPECT_EQ(1, parser()->receiver_report()->num_packets()); 312 EXPECT_EQ(1, parser()->receiver_report()->num_packets());
313 EXPECT_EQ(kSenderSsrc, parser()->receiver_report()->Ssrc()); 313 EXPECT_EQ(kSenderSsrc, parser()->receiver_report()->Ssrc());
314 EXPECT_EQ(1, parser()->report_block()->num_packets()); 314 EXPECT_EQ(1, parser()->report_block()->num_packets());
315 EXPECT_EQ(kRemoteSsrc, parser()->report_block()->Ssrc()); 315 EXPECT_EQ(kRemoteSsrc, parser()->report_block()->Ssrc());
316 EXPECT_EQ(0U, parser()->report_block()->FractionLost()); 316 EXPECT_EQ(0U, parser()->report_block()->FractionLost());
317 EXPECT_EQ(0U, parser()->report_block()->CumPacketLost()); 317 EXPECT_EQ(0U, parser()->report_block()->CumPacketLost());
318 EXPECT_EQ(kSeqNum, parser()->report_block()->ExtHighestSeqNum()); 318 EXPECT_EQ(kSeqNum, parser()->report_block()->ExtHighestSeqNum());
319 } 319 }
320 320
321 TEST_F(RtcpSenderTest, SendRrWithTwoReportBlocks) { 321 TEST_F(RtcpSenderTest, SendRrWithTwoReportBlocks) {
322 const uint16_t kSeqNum = 11111; 322 const uint16_t kSeqNum = 11111;
323 InsertIncomingPacket(kRemoteSsrc, kSeqNum); 323 InsertIncomingPacket(kRemoteSsrc, kSeqNum);
324 InsertIncomingPacket(kRemoteSsrc + 1, kSeqNum + 1); 324 InsertIncomingPacket(kRemoteSsrc + 1, kSeqNum + 1);
325 rtcp_sender_->SetRTCPStatus(kRtcpCompound); 325 rtcp_sender_->SetRTCPStatus(RtcpMode::kCompound);
326 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpRr)); 326 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpRr));
327 EXPECT_EQ(1, parser()->receiver_report()->num_packets()); 327 EXPECT_EQ(1, parser()->receiver_report()->num_packets());
328 EXPECT_EQ(kSenderSsrc, parser()->receiver_report()->Ssrc()); 328 EXPECT_EQ(kSenderSsrc, parser()->receiver_report()->Ssrc());
329 EXPECT_EQ(2, parser()->report_block()->num_packets()); 329 EXPECT_EQ(2, parser()->report_block()->num_packets());
330 EXPECT_EQ(1, parser()->report_blocks_per_ssrc(kRemoteSsrc)); 330 EXPECT_EQ(1, parser()->report_blocks_per_ssrc(kRemoteSsrc));
331 EXPECT_EQ(1, parser()->report_blocks_per_ssrc(kRemoteSsrc + 1)); 331 EXPECT_EQ(1, parser()->report_blocks_per_ssrc(kRemoteSsrc + 1));
332 } 332 }
333 333
334 TEST_F(RtcpSenderTest, SendSdes) { 334 TEST_F(RtcpSenderTest, SendSdes) {
335 rtcp_sender_->SetRTCPStatus(kRtcpNonCompound); 335 rtcp_sender_->SetRTCPStatus(RtcpMode::kReducedSize);
336 EXPECT_EQ(0, rtcp_sender_->SetCNAME("alice@host")); 336 EXPECT_EQ(0, rtcp_sender_->SetCNAME("alice@host"));
337 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpSdes)); 337 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpSdes));
338 EXPECT_EQ(1, parser()->sdes()->num_packets()); 338 EXPECT_EQ(1, parser()->sdes()->num_packets());
339 EXPECT_EQ(1, parser()->sdes_chunk()->num_packets()); 339 EXPECT_EQ(1, parser()->sdes_chunk()->num_packets());
340 EXPECT_EQ(kSenderSsrc, parser()->sdes_chunk()->Ssrc()); 340 EXPECT_EQ(kSenderSsrc, parser()->sdes_chunk()->Ssrc());
341 EXPECT_EQ("alice@host", parser()->sdes_chunk()->Cname()); 341 EXPECT_EQ("alice@host", parser()->sdes_chunk()->Cname());
342 } 342 }
343 343
344 TEST_F(RtcpSenderTest, SdesIncludedInCompoundPacket) { 344 TEST_F(RtcpSenderTest, SdesIncludedInCompoundPacket) {
345 rtcp_sender_->SetRTCPStatus(kRtcpCompound); 345 rtcp_sender_->SetRTCPStatus(RtcpMode::kCompound);
346 EXPECT_EQ(0, rtcp_sender_->SetCNAME("alice@host")); 346 EXPECT_EQ(0, rtcp_sender_->SetCNAME("alice@host"));
347 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpReport)); 347 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpReport));
348 EXPECT_EQ(1, parser()->receiver_report()->num_packets()); 348 EXPECT_EQ(1, parser()->receiver_report()->num_packets());
349 EXPECT_EQ(1, parser()->sdes()->num_packets()); 349 EXPECT_EQ(1, parser()->sdes()->num_packets());
350 EXPECT_EQ(1, parser()->sdes_chunk()->num_packets()); 350 EXPECT_EQ(1, parser()->sdes_chunk()->num_packets());
351 } 351 }
352 352
353 TEST_F(RtcpSenderTest, SendBye) { 353 TEST_F(RtcpSenderTest, SendBye) {
354 rtcp_sender_->SetRTCPStatus(kRtcpNonCompound); 354 rtcp_sender_->SetRTCPStatus(RtcpMode::kReducedSize);
355 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpBye)); 355 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpBye));
356 EXPECT_EQ(1, parser()->bye()->num_packets()); 356 EXPECT_EQ(1, parser()->bye()->num_packets());
357 EXPECT_EQ(kSenderSsrc, parser()->bye()->Ssrc()); 357 EXPECT_EQ(kSenderSsrc, parser()->bye()->Ssrc());
358 } 358 }
359 359
360 TEST_F(RtcpSenderTest, StopSendingTriggersBye) { 360 TEST_F(RtcpSenderTest, StopSendingTriggersBye) {
361 rtcp_sender_->SetRTCPStatus(kRtcpNonCompound); 361 rtcp_sender_->SetRTCPStatus(RtcpMode::kReducedSize);
362 EXPECT_EQ(0, rtcp_sender_->SetSendingStatus(feedback_state(), true)); 362 EXPECT_EQ(0, rtcp_sender_->SetSendingStatus(feedback_state(), true));
363 EXPECT_EQ(0, rtcp_sender_->SetSendingStatus(feedback_state(), false)); 363 EXPECT_EQ(0, rtcp_sender_->SetSendingStatus(feedback_state(), false));
364 EXPECT_EQ(1, parser()->bye()->num_packets()); 364 EXPECT_EQ(1, parser()->bye()->num_packets());
365 EXPECT_EQ(kSenderSsrc, parser()->bye()->Ssrc()); 365 EXPECT_EQ(kSenderSsrc, parser()->bye()->Ssrc());
366 } 366 }
367 367
368 TEST_F(RtcpSenderTest, SendApp) { 368 TEST_F(RtcpSenderTest, SendApp) {
369 const uint8_t kSubType = 30; 369 const uint8_t kSubType = 30;
370 uint32_t name = 'n' << 24; 370 uint32_t name = 'n' << 24;
371 name += 'a' << 16; 371 name += 'a' << 16;
372 name += 'm' << 8; 372 name += 'm' << 8;
373 name += 'e'; 373 name += 'e';
374 const uint8_t kData[] = {'t', 'e', 's', 't', 'd', 'a', 't', 'a'}; 374 const uint8_t kData[] = {'t', 'e', 's', 't', 'd', 'a', 't', 'a'};
375 const uint16_t kDataLength = sizeof(kData) / sizeof(kData[0]); 375 const uint16_t kDataLength = sizeof(kData) / sizeof(kData[0]);
376 EXPECT_EQ(0, rtcp_sender_->SetApplicationSpecificData(kSubType, name, kData, 376 EXPECT_EQ(0, rtcp_sender_->SetApplicationSpecificData(kSubType, name, kData,
377 kDataLength)); 377 kDataLength));
378 rtcp_sender_->SetRTCPStatus(kRtcpNonCompound); 378 rtcp_sender_->SetRTCPStatus(RtcpMode::kReducedSize);
379 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpApp)); 379 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpApp));
380 EXPECT_EQ(1, parser()->app()->num_packets()); 380 EXPECT_EQ(1, parser()->app()->num_packets());
381 EXPECT_EQ(kSubType, parser()->app()->SubType()); 381 EXPECT_EQ(kSubType, parser()->app()->SubType());
382 EXPECT_EQ(name, parser()->app()->Name()); 382 EXPECT_EQ(name, parser()->app()->Name());
383 EXPECT_EQ(1, parser()->app_item()->num_packets()); 383 EXPECT_EQ(1, parser()->app_item()->num_packets());
384 EXPECT_EQ(kDataLength, parser()->app_item()->DataLength()); 384 EXPECT_EQ(kDataLength, parser()->app_item()->DataLength());
385 EXPECT_EQ(0, strncmp(reinterpret_cast<const char*>(kData), 385 EXPECT_EQ(0, strncmp(reinterpret_cast<const char*>(kData),
386 reinterpret_cast<const char*>(parser()->app_item()->Data()), 386 reinterpret_cast<const char*>(parser()->app_item()->Data()),
387 parser()->app_item()->DataLength())); 387 parser()->app_item()->DataLength()));
388 } 388 }
389 389
390 TEST_F(RtcpSenderTest, SendEmptyApp) { 390 TEST_F(RtcpSenderTest, SendEmptyApp) {
391 const uint8_t kSubType = 30; 391 const uint8_t kSubType = 30;
392 const uint32_t kName = 0x6E616D65; 392 const uint32_t kName = 0x6E616D65;
393 393
394 EXPECT_EQ( 394 EXPECT_EQ(
395 0, rtcp_sender_->SetApplicationSpecificData(kSubType, kName, nullptr, 0)); 395 0, rtcp_sender_->SetApplicationSpecificData(kSubType, kName, nullptr, 0));
396 396
397 rtcp_sender_->SetRTCPStatus(kRtcpNonCompound); 397 rtcp_sender_->SetRTCPStatus(RtcpMode::kReducedSize);
398 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpApp)); 398 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpApp));
399 EXPECT_EQ(1, parser()->app()->num_packets()); 399 EXPECT_EQ(1, parser()->app()->num_packets());
400 EXPECT_EQ(kSubType, parser()->app()->SubType()); 400 EXPECT_EQ(kSubType, parser()->app()->SubType());
401 EXPECT_EQ(kName, parser()->app()->Name()); 401 EXPECT_EQ(kName, parser()->app()->Name());
402 EXPECT_EQ(0, parser()->app_item()->num_packets()); 402 EXPECT_EQ(0, parser()->app_item()->num_packets());
403 } 403 }
404 404
405 TEST_F(RtcpSenderTest, SetInvalidApplicationSpecificData) { 405 TEST_F(RtcpSenderTest, SetInvalidApplicationSpecificData) {
406 const uint8_t kData[] = {'t', 'e', 's', 't', 'd', 'a', 't'}; 406 const uint8_t kData[] = {'t', 'e', 's', 't', 'd', 'a', 't'};
407 const uint16_t kInvalidDataLength = sizeof(kData) / sizeof(kData[0]); 407 const uint16_t kInvalidDataLength = sizeof(kData) / sizeof(kData[0]);
408 EXPECT_EQ(-1, rtcp_sender_->SetApplicationSpecificData( 408 EXPECT_EQ(-1, rtcp_sender_->SetApplicationSpecificData(
409 0, 0, kData, kInvalidDataLength)); // Should by multiple of 4. 409 0, 0, kData, kInvalidDataLength)); // Should by multiple of 4.
410 } 410 }
411 411
412 TEST_F(RtcpSenderTest, SendFirNonRepeat) { 412 TEST_F(RtcpSenderTest, SendFirNonRepeat) {
413 rtcp_sender_->SetRTCPStatus(kRtcpNonCompound); 413 rtcp_sender_->SetRTCPStatus(RtcpMode::kReducedSize);
414 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpFir)); 414 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpFir));
415 EXPECT_EQ(1, parser()->fir()->num_packets()); 415 EXPECT_EQ(1, parser()->fir()->num_packets());
416 EXPECT_EQ(kSenderSsrc, parser()->fir()->Ssrc()); 416 EXPECT_EQ(kSenderSsrc, parser()->fir()->Ssrc());
417 EXPECT_EQ(1, parser()->fir_item()->num_packets()); 417 EXPECT_EQ(1, parser()->fir_item()->num_packets());
418 EXPECT_EQ(kRemoteSsrc, parser()->fir_item()->Ssrc()); 418 EXPECT_EQ(kRemoteSsrc, parser()->fir_item()->Ssrc());
419 uint8_t seq = parser()->fir_item()->SeqNum(); 419 uint8_t seq = parser()->fir_item()->SeqNum();
420 // Sends non-repeat FIR as default. 420 // Sends non-repeat FIR as default.
421 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpFir)); 421 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpFir));
422 EXPECT_EQ(2, parser()->fir()->num_packets()); 422 EXPECT_EQ(2, parser()->fir()->num_packets());
423 EXPECT_EQ(2, parser()->fir_item()->num_packets()); 423 EXPECT_EQ(2, parser()->fir_item()->num_packets());
424 EXPECT_EQ(seq + 1, parser()->fir_item()->SeqNum()); 424 EXPECT_EQ(seq + 1, parser()->fir_item()->SeqNum());
425 } 425 }
426 426
427 TEST_F(RtcpSenderTest, SendFirRepeat) { 427 TEST_F(RtcpSenderTest, SendFirRepeat) {
428 rtcp_sender_->SetRTCPStatus(kRtcpNonCompound); 428 rtcp_sender_->SetRTCPStatus(RtcpMode::kReducedSize);
429 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpFir)); 429 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpFir));
430 EXPECT_EQ(1, parser()->fir()->num_packets()); 430 EXPECT_EQ(1, parser()->fir()->num_packets());
431 EXPECT_EQ(1, parser()->fir_item()->num_packets()); 431 EXPECT_EQ(1, parser()->fir_item()->num_packets());
432 uint8_t seq = parser()->fir_item()->SeqNum(); 432 uint8_t seq = parser()->fir_item()->SeqNum();
433 const bool kRepeat = true; 433 const bool kRepeat = true;
434 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpFir, 0, nullptr, 434 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpFir, 0, nullptr,
435 kRepeat)); 435 kRepeat));
436 EXPECT_EQ(2, parser()->fir()->num_packets()); 436 EXPECT_EQ(2, parser()->fir()->num_packets());
437 EXPECT_EQ(2, parser()->fir_item()->num_packets()); 437 EXPECT_EQ(2, parser()->fir_item()->num_packets());
438 EXPECT_EQ(seq, parser()->fir_item()->SeqNum()); 438 EXPECT_EQ(seq, parser()->fir_item()->SeqNum());
439 } 439 }
440 440
441 TEST_F(RtcpSenderTest, SendPli) { 441 TEST_F(RtcpSenderTest, SendPli) {
442 rtcp_sender_->SetRTCPStatus(kRtcpNonCompound); 442 rtcp_sender_->SetRTCPStatus(RtcpMode::kReducedSize);
443 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpPli)); 443 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpPli));
444 EXPECT_EQ(1, parser()->pli()->num_packets()); 444 EXPECT_EQ(1, parser()->pli()->num_packets());
445 EXPECT_EQ(kSenderSsrc, parser()->pli()->Ssrc()); 445 EXPECT_EQ(kSenderSsrc, parser()->pli()->Ssrc());
446 EXPECT_EQ(kRemoteSsrc, parser()->pli()->MediaSsrc()); 446 EXPECT_EQ(kRemoteSsrc, parser()->pli()->MediaSsrc());
447 } 447 }
448 448
449 TEST_F(RtcpSenderTest, SendRpsi) { 449 TEST_F(RtcpSenderTest, SendRpsi) {
450 const uint64_t kPictureId = 0x41; 450 const uint64_t kPictureId = 0x41;
451 const int8_t kPayloadType = 100; 451 const int8_t kPayloadType = 100;
452 rtcp_sender_->SetRTCPStatus(kRtcpNonCompound); 452 rtcp_sender_->SetRTCPStatus(RtcpMode::kReducedSize);
453 RTCPSender::FeedbackState feedback_state = rtp_rtcp_impl_->GetFeedbackState(); 453 RTCPSender::FeedbackState feedback_state = rtp_rtcp_impl_->GetFeedbackState();
454 feedback_state.send_payload_type = kPayloadType; 454 feedback_state.send_payload_type = kPayloadType;
455 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state, kRtcpRpsi, 0, nullptr, 455 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state, kRtcpRpsi, 0, nullptr,
456 false, kPictureId)); 456 false, kPictureId));
457 EXPECT_EQ(kPayloadType, parser()->rpsi()->PayloadType()); 457 EXPECT_EQ(kPayloadType, parser()->rpsi()->PayloadType());
458 EXPECT_EQ(kPictureId, parser()->rpsi()->PictureId()); 458 EXPECT_EQ(kPictureId, parser()->rpsi()->PictureId());
459 } 459 }
460 460
461 TEST_F(RtcpSenderTest, SendSli) { 461 TEST_F(RtcpSenderTest, SendSli) {
462 const uint16_t kFirstMb = 0; 462 const uint16_t kFirstMb = 0;
463 const uint16_t kNumberOfMb = 0x1FFF; 463 const uint16_t kNumberOfMb = 0x1FFF;
464 const uint8_t kPictureId = 60; 464 const uint8_t kPictureId = 60;
465 rtcp_sender_->SetRTCPStatus(kRtcpNonCompound); 465 rtcp_sender_->SetRTCPStatus(RtcpMode::kReducedSize);
466 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpSli, 0, nullptr, 466 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpSli, 0, nullptr,
467 false, kPictureId)); 467 false, kPictureId));
468 EXPECT_EQ(1, parser()->sli()->num_packets()); 468 EXPECT_EQ(1, parser()->sli()->num_packets());
469 EXPECT_EQ(kSenderSsrc, parser()->sli()->Ssrc()); 469 EXPECT_EQ(kSenderSsrc, parser()->sli()->Ssrc());
470 EXPECT_EQ(kRemoteSsrc, parser()->sli()->MediaSsrc()); 470 EXPECT_EQ(kRemoteSsrc, parser()->sli()->MediaSsrc());
471 EXPECT_EQ(1, parser()->sli_item()->num_packets()); 471 EXPECT_EQ(1, parser()->sli_item()->num_packets());
472 EXPECT_EQ(kFirstMb, parser()->sli_item()->FirstMb()); 472 EXPECT_EQ(kFirstMb, parser()->sli_item()->FirstMb());
473 EXPECT_EQ(kNumberOfMb, parser()->sli_item()->NumberOfMb()); 473 EXPECT_EQ(kNumberOfMb, parser()->sli_item()->NumberOfMb());
474 EXPECT_EQ(kPictureId, parser()->sli_item()->PictureId()); 474 EXPECT_EQ(kPictureId, parser()->sli_item()->PictureId());
475 } 475 }
476 476
477 TEST_F(RtcpSenderTest, SendNack) { 477 TEST_F(RtcpSenderTest, SendNack) {
478 rtcp_sender_->SetRTCPStatus(kRtcpNonCompound); 478 rtcp_sender_->SetRTCPStatus(RtcpMode::kReducedSize);
479 const uint16_t kList[] = {0, 1, 16}; 479 const uint16_t kList[] = {0, 1, 16};
480 const int32_t kListLength = sizeof(kList) / sizeof(kList[0]); 480 const int32_t kListLength = sizeof(kList) / sizeof(kList[0]);
481 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpNack, kListLength, 481 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpNack, kListLength,
482 kList)); 482 kList));
483 EXPECT_EQ(1, parser()->nack()->num_packets()); 483 EXPECT_EQ(1, parser()->nack()->num_packets());
484 EXPECT_EQ(kSenderSsrc, parser()->nack()->Ssrc()); 484 EXPECT_EQ(kSenderSsrc, parser()->nack()->Ssrc());
485 EXPECT_EQ(kRemoteSsrc, parser()->nack()->MediaSsrc()); 485 EXPECT_EQ(kRemoteSsrc, parser()->nack()->MediaSsrc());
486 EXPECT_EQ(1, parser()->nack_item()->num_packets()); 486 EXPECT_EQ(1, parser()->nack_item()->num_packets());
487 EXPECT_THAT(parser()->nack_item()->last_nack_list(), ElementsAre(0, 1, 16)); 487 EXPECT_THAT(parser()->nack_item()->last_nack_list(), ElementsAre(0, 1, 16));
488 } 488 }
489 489
490 TEST_F(RtcpSenderTest, SendRemb) { 490 TEST_F(RtcpSenderTest, SendRemb) {
491 const int kBitrate = 261011; 491 const int kBitrate = 261011;
492 std::vector<uint32_t> ssrcs; 492 std::vector<uint32_t> ssrcs;
493 ssrcs.push_back(kRemoteSsrc); 493 ssrcs.push_back(kRemoteSsrc);
494 ssrcs.push_back(kRemoteSsrc + 1); 494 ssrcs.push_back(kRemoteSsrc + 1);
495 rtcp_sender_->SetRTCPStatus(kRtcpNonCompound); 495 rtcp_sender_->SetRTCPStatus(RtcpMode::kReducedSize);
496 rtcp_sender_->SetREMBData(kBitrate, ssrcs); 496 rtcp_sender_->SetREMBData(kBitrate, ssrcs);
497 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpRemb)); 497 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpRemb));
498 EXPECT_EQ(1, parser()->psfb_app()->num_packets()); 498 EXPECT_EQ(1, parser()->psfb_app()->num_packets());
499 EXPECT_EQ(kSenderSsrc, parser()->psfb_app()->Ssrc()); 499 EXPECT_EQ(kSenderSsrc, parser()->psfb_app()->Ssrc());
500 EXPECT_EQ(1, parser()->remb_item()->num_packets()); 500 EXPECT_EQ(1, parser()->remb_item()->num_packets());
501 EXPECT_EQ(kBitrate, parser()->remb_item()->last_bitrate_bps()); 501 EXPECT_EQ(kBitrate, parser()->remb_item()->last_bitrate_bps());
502 EXPECT_THAT(parser()->remb_item()->last_ssrc_list(), 502 EXPECT_THAT(parser()->remb_item()->last_ssrc_list(),
503 ElementsAre(kRemoteSsrc, kRemoteSsrc + 1)); 503 ElementsAre(kRemoteSsrc, kRemoteSsrc + 1));
504 } 504 }
505 505
506 TEST_F(RtcpSenderTest, RembIncludedInCompoundPacketIfEnabled) { 506 TEST_F(RtcpSenderTest, RembIncludedInCompoundPacketIfEnabled) {
507 const int kBitrate = 261011; 507 const int kBitrate = 261011;
508 std::vector<uint32_t> ssrcs; 508 std::vector<uint32_t> ssrcs;
509 ssrcs.push_back(kRemoteSsrc); 509 ssrcs.push_back(kRemoteSsrc);
510 rtcp_sender_->SetRTCPStatus(kRtcpCompound); 510 rtcp_sender_->SetRTCPStatus(RtcpMode::kCompound);
511 rtcp_sender_->SetREMBStatus(true); 511 rtcp_sender_->SetREMBStatus(true);
512 EXPECT_TRUE(rtcp_sender_->REMB()); 512 EXPECT_TRUE(rtcp_sender_->REMB());
513 rtcp_sender_->SetREMBData(kBitrate, ssrcs); 513 rtcp_sender_->SetREMBData(kBitrate, ssrcs);
514 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpReport)); 514 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpReport));
515 EXPECT_EQ(1, parser()->psfb_app()->num_packets()); 515 EXPECT_EQ(1, parser()->psfb_app()->num_packets());
516 EXPECT_EQ(1, parser()->remb_item()->num_packets()); 516 EXPECT_EQ(1, parser()->remb_item()->num_packets());
517 // REMB should be included in each compound packet. 517 // REMB should be included in each compound packet.
518 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpReport)); 518 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpReport));
519 EXPECT_EQ(2, parser()->psfb_app()->num_packets()); 519 EXPECT_EQ(2, parser()->psfb_app()->num_packets());
520 EXPECT_EQ(2, parser()->remb_item()->num_packets()); 520 EXPECT_EQ(2, parser()->remb_item()->num_packets());
521 } 521 }
522 522
523 TEST_F(RtcpSenderTest, RembNotIncludedInCompoundPacketIfNotEnabled) { 523 TEST_F(RtcpSenderTest, RembNotIncludedInCompoundPacketIfNotEnabled) {
524 const int kBitrate = 261011; 524 const int kBitrate = 261011;
525 std::vector<uint32_t> ssrcs; 525 std::vector<uint32_t> ssrcs;
526 ssrcs.push_back(kRemoteSsrc); 526 ssrcs.push_back(kRemoteSsrc);
527 rtcp_sender_->SetRTCPStatus(kRtcpCompound); 527 rtcp_sender_->SetRTCPStatus(RtcpMode::kCompound);
528 rtcp_sender_->SetREMBData(kBitrate, ssrcs); 528 rtcp_sender_->SetREMBData(kBitrate, ssrcs);
529 EXPECT_FALSE(rtcp_sender_->REMB()); 529 EXPECT_FALSE(rtcp_sender_->REMB());
530 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpReport)); 530 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpReport));
531 EXPECT_EQ(0, parser()->psfb_app()->num_packets()); 531 EXPECT_EQ(0, parser()->psfb_app()->num_packets());
532 } 532 }
533 533
534 TEST_F(RtcpSenderTest, SendXrWithVoipMetric) { 534 TEST_F(RtcpSenderTest, SendXrWithVoipMetric) {
535 rtcp_sender_->SetRTCPStatus(kRtcpNonCompound); 535 rtcp_sender_->SetRTCPStatus(RtcpMode::kReducedSize);
536 RTCPVoIPMetric metric; 536 RTCPVoIPMetric metric;
537 metric.lossRate = 1; 537 metric.lossRate = 1;
538 metric.discardRate = 2; 538 metric.discardRate = 2;
539 metric.burstDensity = 3; 539 metric.burstDensity = 3;
540 metric.gapDensity = 4; 540 metric.gapDensity = 4;
541 metric.burstDuration = 0x1111; 541 metric.burstDuration = 0x1111;
542 metric.gapDuration = 0x2222; 542 metric.gapDuration = 0x2222;
543 metric.roundTripDelay = 0x3333; 543 metric.roundTripDelay = 0x3333;
544 metric.endSystemDelay = 0x4444; 544 metric.endSystemDelay = 0x4444;
545 metric.signalLevel = 5; 545 metric.signalLevel = 5;
(...skipping 30 matching lines...) Expand all
576 EXPECT_EQ(metric.extRfactor, parser()->voip_metric()->ExtRfactor()); 576 EXPECT_EQ(metric.extRfactor, parser()->voip_metric()->ExtRfactor());
577 EXPECT_EQ(metric.MOSLQ, parser()->voip_metric()->MosLq()); 577 EXPECT_EQ(metric.MOSLQ, parser()->voip_metric()->MosLq());
578 EXPECT_EQ(metric.MOSCQ, parser()->voip_metric()->MosCq()); 578 EXPECT_EQ(metric.MOSCQ, parser()->voip_metric()->MosCq());
579 EXPECT_EQ(metric.RXconfig, parser()->voip_metric()->RxConfig()); 579 EXPECT_EQ(metric.RXconfig, parser()->voip_metric()->RxConfig());
580 EXPECT_EQ(metric.JBnominal, parser()->voip_metric()->JbNominal()); 580 EXPECT_EQ(metric.JBnominal, parser()->voip_metric()->JbNominal());
581 EXPECT_EQ(metric.JBmax, parser()->voip_metric()->JbMax()); 581 EXPECT_EQ(metric.JBmax, parser()->voip_metric()->JbMax());
582 EXPECT_EQ(metric.JBabsMax, parser()->voip_metric()->JbAbsMax()); 582 EXPECT_EQ(metric.JBabsMax, parser()->voip_metric()->JbAbsMax());
583 } 583 }
584 584
585 TEST_F(RtcpSenderTest, SendXrWithDlrr) { 585 TEST_F(RtcpSenderTest, SendXrWithDlrr) {
586 rtcp_sender_->SetRTCPStatus(kRtcpCompound); 586 rtcp_sender_->SetRTCPStatus(RtcpMode::kCompound);
587 RTCPSender::FeedbackState feedback_state = rtp_rtcp_impl_->GetFeedbackState(); 587 RTCPSender::FeedbackState feedback_state = rtp_rtcp_impl_->GetFeedbackState();
588 feedback_state.has_last_xr_rr = true; 588 feedback_state.has_last_xr_rr = true;
589 RtcpReceiveTimeInfo last_xr_rr; 589 RtcpReceiveTimeInfo last_xr_rr;
590 last_xr_rr.sourceSSRC = 0x11111111; 590 last_xr_rr.sourceSSRC = 0x11111111;
591 last_xr_rr.lastRR = 0x22222222; 591 last_xr_rr.lastRR = 0x22222222;
592 last_xr_rr.delaySinceLastRR = 0x33333333; 592 last_xr_rr.delaySinceLastRR = 0x33333333;
593 feedback_state.last_xr_rr = last_xr_rr; 593 feedback_state.last_xr_rr = last_xr_rr;
594 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state, kRtcpReport)); 594 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state, kRtcpReport));
595 EXPECT_EQ(1, parser()->xr_header()->num_packets()); 595 EXPECT_EQ(1, parser()->xr_header()->num_packets());
596 EXPECT_EQ(kSenderSsrc, parser()->xr_header()->Ssrc()); 596 EXPECT_EQ(kSenderSsrc, parser()->xr_header()->Ssrc());
597 EXPECT_EQ(1, parser()->dlrr()->num_packets()); 597 EXPECT_EQ(1, parser()->dlrr()->num_packets());
598 EXPECT_EQ(1, parser()->dlrr_items()->num_packets()); 598 EXPECT_EQ(1, parser()->dlrr_items()->num_packets());
599 EXPECT_EQ(last_xr_rr.sourceSSRC, parser()->dlrr_items()->Ssrc(0)); 599 EXPECT_EQ(last_xr_rr.sourceSSRC, parser()->dlrr_items()->Ssrc(0));
600 EXPECT_EQ(last_xr_rr.lastRR, parser()->dlrr_items()->LastRr(0)); 600 EXPECT_EQ(last_xr_rr.lastRR, parser()->dlrr_items()->LastRr(0));
601 EXPECT_EQ(last_xr_rr.delaySinceLastRR, 601 EXPECT_EQ(last_xr_rr.delaySinceLastRR,
602 parser()->dlrr_items()->DelayLastRr(0)); 602 parser()->dlrr_items()->DelayLastRr(0));
603 } 603 }
604 604
605 TEST_F(RtcpSenderTest, SendXrWithRrtr) { 605 TEST_F(RtcpSenderTest, SendXrWithRrtr) {
606 rtcp_sender_->SetRTCPStatus(kRtcpCompound); 606 rtcp_sender_->SetRTCPStatus(RtcpMode::kCompound);
607 EXPECT_EQ(0, rtcp_sender_->SetSendingStatus(feedback_state(), false)); 607 EXPECT_EQ(0, rtcp_sender_->SetSendingStatus(feedback_state(), false));
608 rtcp_sender_->SendRtcpXrReceiverReferenceTime(true); 608 rtcp_sender_->SendRtcpXrReceiverReferenceTime(true);
609 uint32_t ntp_secs; 609 uint32_t ntp_secs;
610 uint32_t ntp_frac; 610 uint32_t ntp_frac;
611 clock_.CurrentNtp(ntp_secs, ntp_frac); 611 clock_.CurrentNtp(ntp_secs, ntp_frac);
612 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpReport)); 612 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpReport));
613 EXPECT_EQ(1, parser()->xr_header()->num_packets()); 613 EXPECT_EQ(1, parser()->xr_header()->num_packets());
614 EXPECT_EQ(kSenderSsrc, parser()->xr_header()->Ssrc()); 614 EXPECT_EQ(kSenderSsrc, parser()->xr_header()->Ssrc());
615 EXPECT_EQ(0, parser()->dlrr()->num_packets()); 615 EXPECT_EQ(0, parser()->dlrr()->num_packets());
616 EXPECT_EQ(1, parser()->rrtr()->num_packets()); 616 EXPECT_EQ(1, parser()->rrtr()->num_packets());
617 EXPECT_EQ(ntp_secs, parser()->rrtr()->NtpSec()); 617 EXPECT_EQ(ntp_secs, parser()->rrtr()->NtpSec());
618 EXPECT_EQ(ntp_frac, parser()->rrtr()->NtpFrac()); 618 EXPECT_EQ(ntp_frac, parser()->rrtr()->NtpFrac());
619 } 619 }
620 620
621 TEST_F(RtcpSenderTest, TestNoXrRrtrSentIfSending) { 621 TEST_F(RtcpSenderTest, TestNoXrRrtrSentIfSending) {
622 rtcp_sender_->SetRTCPStatus(kRtcpCompound); 622 rtcp_sender_->SetRTCPStatus(RtcpMode::kCompound);
623 EXPECT_EQ(0, rtcp_sender_->SetSendingStatus(feedback_state(), true)); 623 EXPECT_EQ(0, rtcp_sender_->SetSendingStatus(feedback_state(), true));
624 rtcp_sender_->SendRtcpXrReceiverReferenceTime(true); 624 rtcp_sender_->SendRtcpXrReceiverReferenceTime(true);
625 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpReport)); 625 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpReport));
626 EXPECT_EQ(0, parser()->xr_header()->num_packets()); 626 EXPECT_EQ(0, parser()->xr_header()->num_packets());
627 EXPECT_EQ(0, parser()->rrtr()->num_packets()); 627 EXPECT_EQ(0, parser()->rrtr()->num_packets());
628 } 628 }
629 629
630 TEST_F(RtcpSenderTest, TestNoXrRrtrSentIfNotEnabled) { 630 TEST_F(RtcpSenderTest, TestNoXrRrtrSentIfNotEnabled) {
631 rtcp_sender_->SetRTCPStatus(kRtcpCompound); 631 rtcp_sender_->SetRTCPStatus(RtcpMode::kCompound);
632 EXPECT_EQ(0, rtcp_sender_->SetSendingStatus(feedback_state(), false)); 632 EXPECT_EQ(0, rtcp_sender_->SetSendingStatus(feedback_state(), false));
633 rtcp_sender_->SendRtcpXrReceiverReferenceTime(false); 633 rtcp_sender_->SendRtcpXrReceiverReferenceTime(false);
634 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpReport)); 634 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpReport));
635 EXPECT_EQ(0, parser()->xr_header()->num_packets()); 635 EXPECT_EQ(0, parser()->xr_header()->num_packets());
636 EXPECT_EQ(0, parser()->rrtr()->num_packets()); 636 EXPECT_EQ(0, parser()->rrtr()->num_packets());
637 } 637 }
638 638
639 TEST_F(RtcpSenderTest, TestSendTimeOfXrRrtr) { 639 TEST_F(RtcpSenderTest, TestSendTimeOfXrRrtr) {
640 rtcp_sender_->SetRTCPStatus(kRtcpCompound); 640 rtcp_sender_->SetRTCPStatus(RtcpMode::kCompound);
641 RTCPSender::FeedbackState feedback_state = rtp_rtcp_impl_->GetFeedbackState(); 641 RTCPSender::FeedbackState feedback_state = rtp_rtcp_impl_->GetFeedbackState();
642 EXPECT_EQ(0, rtcp_sender_->SetSendingStatus(feedback_state, false)); 642 EXPECT_EQ(0, rtcp_sender_->SetSendingStatus(feedback_state, false));
643 rtcp_sender_->SendRtcpXrReceiverReferenceTime(true); 643 rtcp_sender_->SendRtcpXrReceiverReferenceTime(true);
644 uint32_t ntp_sec; 644 uint32_t ntp_sec;
645 uint32_t ntp_frac; 645 uint32_t ntp_frac;
646 clock_.CurrentNtp(ntp_sec, ntp_frac); 646 clock_.CurrentNtp(ntp_sec, ntp_frac);
647 uint32_t initial_mid_ntp = RTCPUtility::MidNtp(ntp_sec, ntp_frac); 647 uint32_t initial_mid_ntp = RTCPUtility::MidNtp(ntp_sec, ntp_frac);
648 648
649 // No packet sent. 649 // No packet sent.
650 int64_t time_ms; 650 int64_t time_ms;
(...skipping 11 matching lines...) Expand all
662 } 662 }
663 // The first report should no longer be stored. 663 // The first report should no longer be stored.
664 EXPECT_FALSE(rtcp_sender_->SendTimeOfXrRrReport(initial_mid_ntp, &time_ms)); 664 EXPECT_FALSE(rtcp_sender_->SendTimeOfXrRrReport(initial_mid_ntp, &time_ms));
665 } 665 }
666 666
667 TEST_F(RtcpSenderTest, TestRegisterRtcpPacketTypeObserver) { 667 TEST_F(RtcpSenderTest, TestRegisterRtcpPacketTypeObserver) {
668 RtcpPacketTypeCounterObserverImpl observer; 668 RtcpPacketTypeCounterObserverImpl observer;
669 rtcp_sender_.reset(new RTCPSender(false, &clock_, receive_statistics_.get(), 669 rtcp_sender_.reset(new RTCPSender(false, &clock_, receive_statistics_.get(),
670 &observer, &test_transport_)); 670 &observer, &test_transport_));
671 rtcp_sender_->SetRemoteSSRC(kRemoteSsrc); 671 rtcp_sender_->SetRemoteSSRC(kRemoteSsrc);
672 rtcp_sender_->SetRTCPStatus(kRtcpNonCompound); 672 rtcp_sender_->SetRTCPStatus(RtcpMode::kReducedSize);
673 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpPli)); 673 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpPli));
674 EXPECT_EQ(1, parser()->pli()->num_packets()); 674 EXPECT_EQ(1, parser()->pli()->num_packets());
675 EXPECT_EQ(kRemoteSsrc, observer.ssrc_); 675 EXPECT_EQ(kRemoteSsrc, observer.ssrc_);
676 EXPECT_EQ(1U, observer.counter_.pli_packets); 676 EXPECT_EQ(1U, observer.counter_.pli_packets);
677 EXPECT_EQ(clock_.TimeInMilliseconds(), 677 EXPECT_EQ(clock_.TimeInMilliseconds(),
678 observer.counter_.first_packet_time_ms); 678 observer.counter_.first_packet_time_ms);
679 } 679 }
680 680
681 TEST_F(RtcpSenderTest, SendTmmbr) { 681 TEST_F(RtcpSenderTest, SendTmmbr) {
682 const unsigned int kBitrateBps = 312000; 682 const unsigned int kBitrateBps = 312000;
683 rtcp_sender_->SetRTCPStatus(kRtcpNonCompound); 683 rtcp_sender_->SetRTCPStatus(RtcpMode::kReducedSize);
684 rtcp_sender_->SetTargetBitrate(kBitrateBps); 684 rtcp_sender_->SetTargetBitrate(kBitrateBps);
685 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpTmmbr)); 685 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpTmmbr));
686 EXPECT_EQ(1, parser()->tmmbr()->num_packets()); 686 EXPECT_EQ(1, parser()->tmmbr()->num_packets());
687 EXPECT_EQ(kSenderSsrc, parser()->tmmbr()->Ssrc()); 687 EXPECT_EQ(kSenderSsrc, parser()->tmmbr()->Ssrc());
688 EXPECT_EQ(1, parser()->tmmbr_item()->num_packets()); 688 EXPECT_EQ(1, parser()->tmmbr_item()->num_packets());
689 EXPECT_EQ(kBitrateBps / 1000, parser()->tmmbr_item()->BitrateKbps()); 689 EXPECT_EQ(kBitrateBps / 1000, parser()->tmmbr_item()->BitrateKbps());
690 // TODO(asapersson): tmmbr_item()->Overhead() looks broken, always zero. 690 // TODO(asapersson): tmmbr_item()->Overhead() looks broken, always zero.
691 } 691 }
692 692
693 TEST_F(RtcpSenderTest, TmmbrIncludedInCompoundPacketIfEnabled) { 693 TEST_F(RtcpSenderTest, TmmbrIncludedInCompoundPacketIfEnabled) {
694 const unsigned int kBitrateBps = 312000; 694 const unsigned int kBitrateBps = 312000;
695 rtcp_sender_->SetRTCPStatus(kRtcpCompound); 695 rtcp_sender_->SetRTCPStatus(RtcpMode::kCompound);
696 EXPECT_FALSE(rtcp_sender_->TMMBR()); 696 EXPECT_FALSE(rtcp_sender_->TMMBR());
697 rtcp_sender_->SetTMMBRStatus(true); 697 rtcp_sender_->SetTMMBRStatus(true);
698 EXPECT_TRUE(rtcp_sender_->TMMBR()); 698 EXPECT_TRUE(rtcp_sender_->TMMBR());
699 rtcp_sender_->SetTargetBitrate(kBitrateBps); 699 rtcp_sender_->SetTargetBitrate(kBitrateBps);
700 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpReport)); 700 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpReport));
701 EXPECT_EQ(1, parser()->tmmbr()->num_packets()); 701 EXPECT_EQ(1, parser()->tmmbr()->num_packets());
702 EXPECT_EQ(1, parser()->tmmbr_item()->num_packets()); 702 EXPECT_EQ(1, parser()->tmmbr_item()->num_packets());
703 // TMMBR should be included in each compound packet. 703 // TMMBR should be included in each compound packet.
704 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpReport)); 704 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpReport));
705 EXPECT_EQ(2, parser()->tmmbr()->num_packets()); 705 EXPECT_EQ(2, parser()->tmmbr()->num_packets());
706 EXPECT_EQ(2, parser()->tmmbr_item()->num_packets()); 706 EXPECT_EQ(2, parser()->tmmbr_item()->num_packets());
707 707
708 rtcp_sender_->SetTMMBRStatus(false); 708 rtcp_sender_->SetTMMBRStatus(false);
709 EXPECT_FALSE(rtcp_sender_->TMMBR()); 709 EXPECT_FALSE(rtcp_sender_->TMMBR());
710 } 710 }
711 711
712 TEST_F(RtcpSenderTest, SendTmmbn) { 712 TEST_F(RtcpSenderTest, SendTmmbn) {
713 rtcp_sender_->SetRTCPStatus(kRtcpCompound); 713 rtcp_sender_->SetRTCPStatus(RtcpMode::kCompound);
714 TMMBRSet bounding_set; 714 TMMBRSet bounding_set;
715 bounding_set.VerifyAndAllocateSet(1); 715 bounding_set.VerifyAndAllocateSet(1);
716 const uint32_t kBitrateKbps = 32768; 716 const uint32_t kBitrateKbps = 32768;
717 const uint32_t kPacketOh = 40; 717 const uint32_t kPacketOh = 40;
718 const uint32_t kSourceSsrc = 12345; 718 const uint32_t kSourceSsrc = 12345;
719 bounding_set.AddEntry(kBitrateKbps, kPacketOh, kSourceSsrc); 719 bounding_set.AddEntry(kBitrateKbps, kPacketOh, kSourceSsrc);
720 EXPECT_EQ(0, rtcp_sender_->SetTMMBN(&bounding_set, 0)); 720 EXPECT_EQ(0, rtcp_sender_->SetTMMBN(&bounding_set, 0));
721 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpSr)); 721 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpSr));
722 EXPECT_EQ(1, parser()->sender_report()->num_packets()); 722 EXPECT_EQ(1, parser()->sender_report()->num_packets());
723 EXPECT_EQ(1, parser()->tmmbn()->num_packets()); 723 EXPECT_EQ(1, parser()->tmmbn()->num_packets());
724 EXPECT_EQ(kSenderSsrc, parser()->tmmbn()->Ssrc()); 724 EXPECT_EQ(kSenderSsrc, parser()->tmmbn()->Ssrc());
725 EXPECT_EQ(1, parser()->tmmbn_items()->num_packets()); 725 EXPECT_EQ(1, parser()->tmmbn_items()->num_packets());
726 EXPECT_EQ(kBitrateKbps, parser()->tmmbn_items()->BitrateKbps(0)); 726 EXPECT_EQ(kBitrateKbps, parser()->tmmbn_items()->BitrateKbps(0));
727 EXPECT_EQ(kPacketOh, parser()->tmmbn_items()->Overhead(0)); 727 EXPECT_EQ(kPacketOh, parser()->tmmbn_items()->Overhead(0));
728 EXPECT_EQ(kSourceSsrc, parser()->tmmbn_items()->Ssrc(0)); 728 EXPECT_EQ(kSourceSsrc, parser()->tmmbn_items()->Ssrc(0));
729 } 729 }
730 730
731 // This test is written to verify actual behaviour. It does not seem 731 // This test is written to verify actual behaviour. It does not seem
732 // to make much sense to send an empty TMMBN, since there is no place 732 // to make much sense to send an empty TMMBN, since there is no place
733 // to put an actual limit here. It's just information that no limit 733 // to put an actual limit here. It's just information that no limit
734 // is set, which is kind of the starting assumption. 734 // is set, which is kind of the starting assumption.
735 // See http://code.google.com/p/webrtc/issues/detail?id=468 for one 735 // See http://code.google.com/p/webrtc/issues/detail?id=468 for one
736 // situation where this caused confusion. 736 // situation where this caused confusion.
737 TEST_F(RtcpSenderTest, SendsTmmbnIfSetAndEmpty) { 737 TEST_F(RtcpSenderTest, SendsTmmbnIfSetAndEmpty) {
738 rtcp_sender_->SetRTCPStatus(kRtcpCompound); 738 rtcp_sender_->SetRTCPStatus(RtcpMode::kCompound);
739 TMMBRSet bounding_set; 739 TMMBRSet bounding_set;
740 EXPECT_EQ(0, rtcp_sender_->SetTMMBN(&bounding_set, 3)); 740 EXPECT_EQ(0, rtcp_sender_->SetTMMBN(&bounding_set, 3));
741 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpSr)); 741 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpSr));
742 EXPECT_EQ(1, parser()->sender_report()->num_packets()); 742 EXPECT_EQ(1, parser()->sender_report()->num_packets());
743 EXPECT_EQ(1, parser()->tmmbn()->num_packets()); 743 EXPECT_EQ(1, parser()->tmmbn()->num_packets());
744 EXPECT_EQ(kSenderSsrc, parser()->tmmbn()->Ssrc()); 744 EXPECT_EQ(kSenderSsrc, parser()->tmmbn()->Ssrc());
745 EXPECT_EQ(0, parser()->tmmbn_items()->num_packets()); 745 EXPECT_EQ(0, parser()->tmmbn_items()->num_packets());
746 } 746 }
747 747
748 TEST_F(RtcpSenderTest, SendCompoundPliRemb) { 748 TEST_F(RtcpSenderTest, SendCompoundPliRemb) {
749 const int kBitrate = 261011; 749 const int kBitrate = 261011;
750 std::vector<uint32_t> ssrcs; 750 std::vector<uint32_t> ssrcs;
751 ssrcs.push_back(kRemoteSsrc); 751 ssrcs.push_back(kRemoteSsrc);
752 rtcp_sender_->SetRTCPStatus(kRtcpCompound); 752 rtcp_sender_->SetRTCPStatus(RtcpMode::kCompound);
753 rtcp_sender_->SetREMBData(kBitrate, ssrcs); 753 rtcp_sender_->SetREMBData(kBitrate, ssrcs);
754 std::set<RTCPPacketType> packet_types; 754 std::set<RTCPPacketType> packet_types;
755 packet_types.insert(kRtcpRemb); 755 packet_types.insert(kRtcpRemb);
756 packet_types.insert(kRtcpPli); 756 packet_types.insert(kRtcpPli);
757 EXPECT_EQ(0, rtcp_sender_->SendCompoundRTCP(feedback_state(), packet_types)); 757 EXPECT_EQ(0, rtcp_sender_->SendCompoundRTCP(feedback_state(), packet_types));
758 EXPECT_EQ(1, parser()->remb_item()->num_packets()); 758 EXPECT_EQ(1, parser()->remb_item()->num_packets());
759 EXPECT_EQ(1, parser()->pli()->num_packets()); 759 EXPECT_EQ(1, parser()->pli()->num_packets());
760 } 760 }
761 761
762 } // namespace webrtc 762 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtcp_sender.cc ('k') | webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698