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

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: 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 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
255 255
256 SimulatedClock clock_; 256 SimulatedClock clock_;
257 TestTransport test_transport_; 257 TestTransport test_transport_;
258 rtc::scoped_ptr<ReceiveStatistics> receive_statistics_; 258 rtc::scoped_ptr<ReceiveStatistics> receive_statistics_;
259 rtc::scoped_ptr<ModuleRtpRtcpImpl> rtp_rtcp_impl_; 259 rtc::scoped_ptr<ModuleRtpRtcpImpl> rtp_rtcp_impl_;
260 rtc::scoped_ptr<RTCPSender> rtcp_sender_; 260 rtc::scoped_ptr<RTCPSender> rtcp_sender_;
261 }; 261 };
262 262
263 TEST_F(RtcpSenderTest, SetRtcpStatus) { 263 TEST_F(RtcpSenderTest, SetRtcpStatus) {
264 EXPECT_EQ(kRtcpOff, rtcp_sender_->Status()); 264 EXPECT_EQ(kRtcpOff, rtcp_sender_->Status());
265 rtcp_sender_->SetRTCPStatus(kRtcpNonCompound); 265 rtcp_sender_->SetRTCPStatus(kRtcpReducedSize);
266 EXPECT_EQ(kRtcpNonCompound, rtcp_sender_->Status()); 266 EXPECT_EQ(kRtcpReducedSize, rtcp_sender_->Status());
267 } 267 }
268 268
269 TEST_F(RtcpSenderTest, SetSendingStatus) { 269 TEST_F(RtcpSenderTest, SetSendingStatus) {
270 EXPECT_FALSE(rtcp_sender_->Sending()); 270 EXPECT_FALSE(rtcp_sender_->Sending());
271 EXPECT_EQ(0, rtcp_sender_->SetSendingStatus(feedback_state(), true)); 271 EXPECT_EQ(0, rtcp_sender_->SetSendingStatus(feedback_state(), true));
272 EXPECT_TRUE(rtcp_sender_->Sending()); 272 EXPECT_TRUE(rtcp_sender_->Sending());
273 } 273 }
274 274
275 TEST_F(RtcpSenderTest, NoPacketSentIfOff) { 275 TEST_F(RtcpSenderTest, NoPacketSentIfOff) {
276 rtcp_sender_->SetRTCPStatus(kRtcpOff); 276 rtcp_sender_->SetRTCPStatus(kRtcpOff);
277 EXPECT_EQ(-1, rtcp_sender_->SendRTCP(feedback_state(), kRtcpSr)); 277 EXPECT_EQ(-1, rtcp_sender_->SendRTCP(feedback_state(), kRtcpSr));
278 } 278 }
279 279
280 TEST_F(RtcpSenderTest, SendSr) { 280 TEST_F(RtcpSenderTest, SendSr) {
281 const uint32_t kPacketCount = 0x12345; 281 const uint32_t kPacketCount = 0x12345;
282 const uint32_t kOctetCount = 0x23456; 282 const uint32_t kOctetCount = 0x23456;
283 rtcp_sender_->SetRTCPStatus(kRtcpNonCompound); 283 rtcp_sender_->SetRTCPStatus(kRtcpReducedSize);
284 RTCPSender::FeedbackState feedback_state = rtp_rtcp_impl_->GetFeedbackState(); 284 RTCPSender::FeedbackState feedback_state = rtp_rtcp_impl_->GetFeedbackState();
285 feedback_state.packets_sent = kPacketCount; 285 feedback_state.packets_sent = kPacketCount;
286 feedback_state.media_bytes_sent = kOctetCount; 286 feedback_state.media_bytes_sent = kOctetCount;
287 uint32_t ntp_secs; 287 uint32_t ntp_secs;
288 uint32_t ntp_frac; 288 uint32_t ntp_frac;
289 clock_.CurrentNtp(ntp_secs, ntp_frac); 289 clock_.CurrentNtp(ntp_secs, ntp_frac);
290 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state, kRtcpSr)); 290 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state, kRtcpSr));
291 EXPECT_EQ(1, parser()->sender_report()->num_packets()); 291 EXPECT_EQ(1, parser()->sender_report()->num_packets());
292 EXPECT_EQ(kSenderSsrc, parser()->sender_report()->Ssrc()); 292 EXPECT_EQ(kSenderSsrc, parser()->sender_report()->Ssrc());
293 EXPECT_EQ(ntp_secs, parser()->sender_report()->NtpSec()); 293 EXPECT_EQ(ntp_secs, parser()->sender_report()->NtpSec());
294 EXPECT_EQ(ntp_frac, parser()->sender_report()->NtpFrac()); 294 EXPECT_EQ(ntp_frac, parser()->sender_report()->NtpFrac());
295 EXPECT_EQ(kPacketCount, parser()->sender_report()->PacketCount()); 295 EXPECT_EQ(kPacketCount, parser()->sender_report()->PacketCount());
296 EXPECT_EQ(kOctetCount, parser()->sender_report()->OctetCount()); 296 EXPECT_EQ(kOctetCount, parser()->sender_report()->OctetCount());
297 EXPECT_EQ(0, parser()->report_block()->num_packets()); 297 EXPECT_EQ(0, parser()->report_block()->num_packets());
298 } 298 }
299 299
300 TEST_F(RtcpSenderTest, SendRr) { 300 TEST_F(RtcpSenderTest, SendRr) {
301 rtcp_sender_->SetRTCPStatus(kRtcpNonCompound); 301 rtcp_sender_->SetRTCPStatus(kRtcpReducedSize);
302 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpRr)); 302 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpRr));
303 EXPECT_EQ(1, parser()->receiver_report()->num_packets()); 303 EXPECT_EQ(1, parser()->receiver_report()->num_packets());
304 EXPECT_EQ(kSenderSsrc, parser()->receiver_report()->Ssrc()); 304 EXPECT_EQ(kSenderSsrc, parser()->receiver_report()->Ssrc());
305 EXPECT_EQ(0, parser()->report_block()->num_packets()); 305 EXPECT_EQ(0, parser()->report_block()->num_packets());
306 } 306 }
307 307
308 TEST_F(RtcpSenderTest, SendRrWithOneReportBlock) { 308 TEST_F(RtcpSenderTest, SendRrWithOneReportBlock) {
309 const uint16_t kSeqNum = 11111; 309 const uint16_t kSeqNum = 11111;
310 InsertIncomingPacket(kRemoteSsrc, kSeqNum); 310 InsertIncomingPacket(kRemoteSsrc, kSeqNum);
311 rtcp_sender_->SetRTCPStatus(kRtcpCompound); 311 rtcp_sender_->SetRTCPStatus(kRtcpCompound);
(...skipping 14 matching lines...) Expand all
326 rtcp_sender_->SetRTCPStatus(kRtcpCompound); 326 rtcp_sender_->SetRTCPStatus(kRtcpCompound);
327 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpRr)); 327 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpRr));
328 EXPECT_EQ(1, parser()->receiver_report()->num_packets()); 328 EXPECT_EQ(1, parser()->receiver_report()->num_packets());
329 EXPECT_EQ(kSenderSsrc, parser()->receiver_report()->Ssrc()); 329 EXPECT_EQ(kSenderSsrc, parser()->receiver_report()->Ssrc());
330 EXPECT_EQ(2, parser()->report_block()->num_packets()); 330 EXPECT_EQ(2, parser()->report_block()->num_packets());
331 EXPECT_EQ(1, parser()->report_blocks_per_ssrc(kRemoteSsrc)); 331 EXPECT_EQ(1, parser()->report_blocks_per_ssrc(kRemoteSsrc));
332 EXPECT_EQ(1, parser()->report_blocks_per_ssrc(kRemoteSsrc + 1)); 332 EXPECT_EQ(1, parser()->report_blocks_per_ssrc(kRemoteSsrc + 1));
333 } 333 }
334 334
335 TEST_F(RtcpSenderTest, SendSdes) { 335 TEST_F(RtcpSenderTest, SendSdes) {
336 rtcp_sender_->SetRTCPStatus(kRtcpNonCompound); 336 rtcp_sender_->SetRTCPStatus(kRtcpReducedSize);
337 EXPECT_EQ(0, rtcp_sender_->SetCNAME("alice@host")); 337 EXPECT_EQ(0, rtcp_sender_->SetCNAME("alice@host"));
338 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpSdes)); 338 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpSdes));
339 EXPECT_EQ(1, parser()->sdes()->num_packets()); 339 EXPECT_EQ(1, parser()->sdes()->num_packets());
340 EXPECT_EQ(1, parser()->sdes_chunk()->num_packets()); 340 EXPECT_EQ(1, parser()->sdes_chunk()->num_packets());
341 EXPECT_EQ(kSenderSsrc, parser()->sdes_chunk()->Ssrc()); 341 EXPECT_EQ(kSenderSsrc, parser()->sdes_chunk()->Ssrc());
342 EXPECT_EQ("alice@host", parser()->sdes_chunk()->Cname()); 342 EXPECT_EQ("alice@host", parser()->sdes_chunk()->Cname());
343 } 343 }
344 344
345 TEST_F(RtcpSenderTest, SdesIncludedInCompoundPacket) { 345 TEST_F(RtcpSenderTest, SdesIncludedInCompoundPacket) {
346 rtcp_sender_->SetRTCPStatus(kRtcpCompound); 346 rtcp_sender_->SetRTCPStatus(kRtcpCompound);
347 EXPECT_EQ(0, rtcp_sender_->SetCNAME("alice@host")); 347 EXPECT_EQ(0, rtcp_sender_->SetCNAME("alice@host"));
348 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpReport)); 348 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpReport));
349 EXPECT_EQ(1, parser()->receiver_report()->num_packets()); 349 EXPECT_EQ(1, parser()->receiver_report()->num_packets());
350 EXPECT_EQ(1, parser()->sdes()->num_packets()); 350 EXPECT_EQ(1, parser()->sdes()->num_packets());
351 EXPECT_EQ(1, parser()->sdes_chunk()->num_packets()); 351 EXPECT_EQ(1, parser()->sdes_chunk()->num_packets());
352 } 352 }
353 353
354 TEST_F(RtcpSenderTest, SendBye) { 354 TEST_F(RtcpSenderTest, SendBye) {
355 rtcp_sender_->SetRTCPStatus(kRtcpNonCompound); 355 rtcp_sender_->SetRTCPStatus(kRtcpReducedSize);
356 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpBye)); 356 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpBye));
357 EXPECT_EQ(1, parser()->bye()->num_packets()); 357 EXPECT_EQ(1, parser()->bye()->num_packets());
358 EXPECT_EQ(kSenderSsrc, parser()->bye()->Ssrc()); 358 EXPECT_EQ(kSenderSsrc, parser()->bye()->Ssrc());
359 } 359 }
360 360
361 TEST_F(RtcpSenderTest, StopSendingTriggersBye) { 361 TEST_F(RtcpSenderTest, StopSendingTriggersBye) {
362 rtcp_sender_->SetRTCPStatus(kRtcpNonCompound); 362 rtcp_sender_->SetRTCPStatus(kRtcpReducedSize);
363 EXPECT_EQ(0, rtcp_sender_->SetSendingStatus(feedback_state(), true)); 363 EXPECT_EQ(0, rtcp_sender_->SetSendingStatus(feedback_state(), true));
364 EXPECT_EQ(0, rtcp_sender_->SetSendingStatus(feedback_state(), false)); 364 EXPECT_EQ(0, rtcp_sender_->SetSendingStatus(feedback_state(), false));
365 EXPECT_EQ(1, parser()->bye()->num_packets()); 365 EXPECT_EQ(1, parser()->bye()->num_packets());
366 EXPECT_EQ(kSenderSsrc, parser()->bye()->Ssrc()); 366 EXPECT_EQ(kSenderSsrc, parser()->bye()->Ssrc());
367 } 367 }
368 368
369 TEST_F(RtcpSenderTest, SendApp) { 369 TEST_F(RtcpSenderTest, SendApp) {
370 const uint8_t kSubType = 30; 370 const uint8_t kSubType = 30;
371 uint32_t name = 'n' << 24; 371 uint32_t name = 'n' << 24;
372 name += 'a' << 16; 372 name += 'a' << 16;
373 name += 'm' << 8; 373 name += 'm' << 8;
374 name += 'e'; 374 name += 'e';
375 const uint8_t kData[] = {'t', 'e', 's', 't', 'd', 'a', 't', 'a'}; 375 const uint8_t kData[] = {'t', 'e', 's', 't', 'd', 'a', 't', 'a'};
376 const uint16_t kDataLength = sizeof(kData) / sizeof(kData[0]); 376 const uint16_t kDataLength = sizeof(kData) / sizeof(kData[0]);
377 EXPECT_EQ(0, rtcp_sender_->SetApplicationSpecificData(kSubType, name, kData, 377 EXPECT_EQ(0, rtcp_sender_->SetApplicationSpecificData(kSubType, name, kData,
378 kDataLength)); 378 kDataLength));
379 rtcp_sender_->SetRTCPStatus(kRtcpNonCompound); 379 rtcp_sender_->SetRTCPStatus(kRtcpReducedSize);
380 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpApp)); 380 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpApp));
381 EXPECT_EQ(1, parser()->app()->num_packets()); 381 EXPECT_EQ(1, parser()->app()->num_packets());
382 EXPECT_EQ(kSubType, parser()->app()->SubType()); 382 EXPECT_EQ(kSubType, parser()->app()->SubType());
383 EXPECT_EQ(name, parser()->app()->Name()); 383 EXPECT_EQ(name, parser()->app()->Name());
384 EXPECT_EQ(1, parser()->app_item()->num_packets()); 384 EXPECT_EQ(1, parser()->app_item()->num_packets());
385 EXPECT_EQ(kDataLength, parser()->app_item()->DataLength()); 385 EXPECT_EQ(kDataLength, parser()->app_item()->DataLength());
386 EXPECT_EQ(0, strncmp(reinterpret_cast<const char*>(kData), 386 EXPECT_EQ(0, strncmp(reinterpret_cast<const char*>(kData),
387 reinterpret_cast<const char*>(parser()->app_item()->Data()), 387 reinterpret_cast<const char*>(parser()->app_item()->Data()),
388 parser()->app_item()->DataLength())); 388 parser()->app_item()->DataLength()));
389 } 389 }
390 390
391 TEST_F(RtcpSenderTest, SendEmptyApp) { 391 TEST_F(RtcpSenderTest, SendEmptyApp) {
392 const uint8_t kSubType = 30; 392 const uint8_t kSubType = 30;
393 const uint32_t kName = 0x6E616D65; 393 const uint32_t kName = 0x6E616D65;
394 394
395 EXPECT_EQ( 395 EXPECT_EQ(
396 0, rtcp_sender_->SetApplicationSpecificData(kSubType, kName, nullptr, 0)); 396 0, rtcp_sender_->SetApplicationSpecificData(kSubType, kName, nullptr, 0));
397 397
398 rtcp_sender_->SetRTCPStatus(kRtcpNonCompound); 398 rtcp_sender_->SetRTCPStatus(kRtcpReducedSize);
399 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpApp)); 399 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpApp));
400 EXPECT_EQ(1, parser()->app()->num_packets()); 400 EXPECT_EQ(1, parser()->app()->num_packets());
401 EXPECT_EQ(kSubType, parser()->app()->SubType()); 401 EXPECT_EQ(kSubType, parser()->app()->SubType());
402 EXPECT_EQ(kName, parser()->app()->Name()); 402 EXPECT_EQ(kName, parser()->app()->Name());
403 EXPECT_EQ(0, parser()->app_item()->num_packets()); 403 EXPECT_EQ(0, parser()->app_item()->num_packets());
404 } 404 }
405 405
406 TEST_F(RtcpSenderTest, SetInvalidApplicationSpecificData) { 406 TEST_F(RtcpSenderTest, SetInvalidApplicationSpecificData) {
407 const uint8_t kData[] = {'t', 'e', 's', 't', 'd', 'a', 't'}; 407 const uint8_t kData[] = {'t', 'e', 's', 't', 'd', 'a', 't'};
408 const uint16_t kInvalidDataLength = sizeof(kData) / sizeof(kData[0]); 408 const uint16_t kInvalidDataLength = sizeof(kData) / sizeof(kData[0]);
409 EXPECT_EQ(-1, rtcp_sender_->SetApplicationSpecificData( 409 EXPECT_EQ(-1, rtcp_sender_->SetApplicationSpecificData(
410 0, 0, kData, kInvalidDataLength)); // Should by multiple of 4. 410 0, 0, kData, kInvalidDataLength)); // Should by multiple of 4.
411 } 411 }
412 412
413 TEST_F(RtcpSenderTest, SendFirNonRepeat) { 413 TEST_F(RtcpSenderTest, SendFirNonRepeat) {
414 rtcp_sender_->SetRTCPStatus(kRtcpNonCompound); 414 rtcp_sender_->SetRTCPStatus(kRtcpReducedSize);
415 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpFir)); 415 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpFir));
416 EXPECT_EQ(1, parser()->fir()->num_packets()); 416 EXPECT_EQ(1, parser()->fir()->num_packets());
417 EXPECT_EQ(kSenderSsrc, parser()->fir()->Ssrc()); 417 EXPECT_EQ(kSenderSsrc, parser()->fir()->Ssrc());
418 EXPECT_EQ(1, parser()->fir_item()->num_packets()); 418 EXPECT_EQ(1, parser()->fir_item()->num_packets());
419 EXPECT_EQ(kRemoteSsrc, parser()->fir_item()->Ssrc()); 419 EXPECT_EQ(kRemoteSsrc, parser()->fir_item()->Ssrc());
420 uint8_t seq = parser()->fir_item()->SeqNum(); 420 uint8_t seq = parser()->fir_item()->SeqNum();
421 // Sends non-repeat FIR as default. 421 // Sends non-repeat FIR as default.
422 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpFir)); 422 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpFir));
423 EXPECT_EQ(2, parser()->fir()->num_packets()); 423 EXPECT_EQ(2, parser()->fir()->num_packets());
424 EXPECT_EQ(2, parser()->fir_item()->num_packets()); 424 EXPECT_EQ(2, parser()->fir_item()->num_packets());
425 EXPECT_EQ(seq + 1, parser()->fir_item()->SeqNum()); 425 EXPECT_EQ(seq + 1, parser()->fir_item()->SeqNum());
426 } 426 }
427 427
428 TEST_F(RtcpSenderTest, SendFirRepeat) { 428 TEST_F(RtcpSenderTest, SendFirRepeat) {
429 rtcp_sender_->SetRTCPStatus(kRtcpNonCompound); 429 rtcp_sender_->SetRTCPStatus(kRtcpReducedSize);
430 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpFir)); 430 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpFir));
431 EXPECT_EQ(1, parser()->fir()->num_packets()); 431 EXPECT_EQ(1, parser()->fir()->num_packets());
432 EXPECT_EQ(1, parser()->fir_item()->num_packets()); 432 EXPECT_EQ(1, parser()->fir_item()->num_packets());
433 uint8_t seq = parser()->fir_item()->SeqNum(); 433 uint8_t seq = parser()->fir_item()->SeqNum();
434 const bool kRepeat = true; 434 const bool kRepeat = true;
435 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpFir, 0, nullptr, 435 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpFir, 0, nullptr,
436 kRepeat)); 436 kRepeat));
437 EXPECT_EQ(2, parser()->fir()->num_packets()); 437 EXPECT_EQ(2, parser()->fir()->num_packets());
438 EXPECT_EQ(2, parser()->fir_item()->num_packets()); 438 EXPECT_EQ(2, parser()->fir_item()->num_packets());
439 EXPECT_EQ(seq, parser()->fir_item()->SeqNum()); 439 EXPECT_EQ(seq, parser()->fir_item()->SeqNum());
440 } 440 }
441 441
442 TEST_F(RtcpSenderTest, SendPli) { 442 TEST_F(RtcpSenderTest, SendPli) {
443 rtcp_sender_->SetRTCPStatus(kRtcpNonCompound); 443 rtcp_sender_->SetRTCPStatus(kRtcpReducedSize);
444 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpPli)); 444 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpPli));
445 EXPECT_EQ(1, parser()->pli()->num_packets()); 445 EXPECT_EQ(1, parser()->pli()->num_packets());
446 EXPECT_EQ(kSenderSsrc, parser()->pli()->Ssrc()); 446 EXPECT_EQ(kSenderSsrc, parser()->pli()->Ssrc());
447 EXPECT_EQ(kRemoteSsrc, parser()->pli()->MediaSsrc()); 447 EXPECT_EQ(kRemoteSsrc, parser()->pli()->MediaSsrc());
448 } 448 }
449 449
450 TEST_F(RtcpSenderTest, SendRpsi) { 450 TEST_F(RtcpSenderTest, SendRpsi) {
451 const uint64_t kPictureId = 0x41; 451 const uint64_t kPictureId = 0x41;
452 const int8_t kPayloadType = 100; 452 const int8_t kPayloadType = 100;
453 rtcp_sender_->SetRTCPStatus(kRtcpNonCompound); 453 rtcp_sender_->SetRTCPStatus(kRtcpReducedSize);
454 RTCPSender::FeedbackState feedback_state = rtp_rtcp_impl_->GetFeedbackState(); 454 RTCPSender::FeedbackState feedback_state = rtp_rtcp_impl_->GetFeedbackState();
455 feedback_state.send_payload_type = kPayloadType; 455 feedback_state.send_payload_type = kPayloadType;
456 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state, kRtcpRpsi, 0, nullptr, 456 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state, kRtcpRpsi, 0, nullptr,
457 false, kPictureId)); 457 false, kPictureId));
458 EXPECT_EQ(kPayloadType, parser()->rpsi()->PayloadType()); 458 EXPECT_EQ(kPayloadType, parser()->rpsi()->PayloadType());
459 EXPECT_EQ(kPictureId, parser()->rpsi()->PictureId()); 459 EXPECT_EQ(kPictureId, parser()->rpsi()->PictureId());
460 } 460 }
461 461
462 TEST_F(RtcpSenderTest, SendSli) { 462 TEST_F(RtcpSenderTest, SendSli) {
463 const uint16_t kFirstMb = 0; 463 const uint16_t kFirstMb = 0;
464 const uint16_t kNumberOfMb = 0x1FFF; 464 const uint16_t kNumberOfMb = 0x1FFF;
465 const uint8_t kPictureId = 60; 465 const uint8_t kPictureId = 60;
466 rtcp_sender_->SetRTCPStatus(kRtcpNonCompound); 466 rtcp_sender_->SetRTCPStatus(kRtcpReducedSize);
467 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpSli, 0, nullptr, 467 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpSli, 0, nullptr,
468 false, kPictureId)); 468 false, kPictureId));
469 EXPECT_EQ(1, parser()->sli()->num_packets()); 469 EXPECT_EQ(1, parser()->sli()->num_packets());
470 EXPECT_EQ(kSenderSsrc, parser()->sli()->Ssrc()); 470 EXPECT_EQ(kSenderSsrc, parser()->sli()->Ssrc());
471 EXPECT_EQ(kRemoteSsrc, parser()->sli()->MediaSsrc()); 471 EXPECT_EQ(kRemoteSsrc, parser()->sli()->MediaSsrc());
472 EXPECT_EQ(1, parser()->sli_item()->num_packets()); 472 EXPECT_EQ(1, parser()->sli_item()->num_packets());
473 EXPECT_EQ(kFirstMb, parser()->sli_item()->FirstMb()); 473 EXPECT_EQ(kFirstMb, parser()->sli_item()->FirstMb());
474 EXPECT_EQ(kNumberOfMb, parser()->sli_item()->NumberOfMb()); 474 EXPECT_EQ(kNumberOfMb, parser()->sli_item()->NumberOfMb());
475 EXPECT_EQ(kPictureId, parser()->sli_item()->PictureId()); 475 EXPECT_EQ(kPictureId, parser()->sli_item()->PictureId());
476 } 476 }
477 477
478 TEST_F(RtcpSenderTest, SendNack) { 478 TEST_F(RtcpSenderTest, SendNack) {
479 rtcp_sender_->SetRTCPStatus(kRtcpNonCompound); 479 rtcp_sender_->SetRTCPStatus(kRtcpReducedSize);
480 const uint16_t kList[] = {0, 1, 16}; 480 const uint16_t kList[] = {0, 1, 16};
481 const int32_t kListLength = sizeof(kList) / sizeof(kList[0]); 481 const int32_t kListLength = sizeof(kList) / sizeof(kList[0]);
482 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpNack, kListLength, 482 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpNack, kListLength,
483 kList)); 483 kList));
484 EXPECT_EQ(1, parser()->nack()->num_packets()); 484 EXPECT_EQ(1, parser()->nack()->num_packets());
485 EXPECT_EQ(kSenderSsrc, parser()->nack()->Ssrc()); 485 EXPECT_EQ(kSenderSsrc, parser()->nack()->Ssrc());
486 EXPECT_EQ(kRemoteSsrc, parser()->nack()->MediaSsrc()); 486 EXPECT_EQ(kRemoteSsrc, parser()->nack()->MediaSsrc());
487 EXPECT_EQ(1, parser()->nack_item()->num_packets()); 487 EXPECT_EQ(1, parser()->nack_item()->num_packets());
488 EXPECT_THAT(parser()->nack_item()->last_nack_list(), ElementsAre(0, 1, 16)); 488 EXPECT_THAT(parser()->nack_item()->last_nack_list(), ElementsAre(0, 1, 16));
489 } 489 }
490 490
491 TEST_F(RtcpSenderTest, SendRemb) { 491 TEST_F(RtcpSenderTest, SendRemb) {
492 const int kBitrate = 261011; 492 const int kBitrate = 261011;
493 std::vector<uint32_t> ssrcs; 493 std::vector<uint32_t> ssrcs;
494 ssrcs.push_back(kRemoteSsrc); 494 ssrcs.push_back(kRemoteSsrc);
495 ssrcs.push_back(kRemoteSsrc + 1); 495 ssrcs.push_back(kRemoteSsrc + 1);
496 rtcp_sender_->SetRTCPStatus(kRtcpNonCompound); 496 rtcp_sender_->SetRTCPStatus(kRtcpReducedSize);
497 rtcp_sender_->SetREMBData(kBitrate, ssrcs); 497 rtcp_sender_->SetREMBData(kBitrate, ssrcs);
498 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpRemb)); 498 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpRemb));
499 EXPECT_EQ(1, parser()->psfb_app()->num_packets()); 499 EXPECT_EQ(1, parser()->psfb_app()->num_packets());
500 EXPECT_EQ(kSenderSsrc, parser()->psfb_app()->Ssrc()); 500 EXPECT_EQ(kSenderSsrc, parser()->psfb_app()->Ssrc());
501 EXPECT_EQ(1, parser()->remb_item()->num_packets()); 501 EXPECT_EQ(1, parser()->remb_item()->num_packets());
502 EXPECT_EQ(kBitrate, parser()->remb_item()->last_bitrate_bps()); 502 EXPECT_EQ(kBitrate, parser()->remb_item()->last_bitrate_bps());
503 EXPECT_THAT(parser()->remb_item()->last_ssrc_list(), 503 EXPECT_THAT(parser()->remb_item()->last_ssrc_list(),
504 ElementsAre(kRemoteSsrc, kRemoteSsrc + 1)); 504 ElementsAre(kRemoteSsrc, kRemoteSsrc + 1));
505 } 505 }
506 506
(...skipping 19 matching lines...) Expand all
526 std::vector<uint32_t> ssrcs; 526 std::vector<uint32_t> ssrcs;
527 ssrcs.push_back(kRemoteSsrc); 527 ssrcs.push_back(kRemoteSsrc);
528 rtcp_sender_->SetRTCPStatus(kRtcpCompound); 528 rtcp_sender_->SetRTCPStatus(kRtcpCompound);
529 rtcp_sender_->SetREMBData(kBitrate, ssrcs); 529 rtcp_sender_->SetREMBData(kBitrate, ssrcs);
530 EXPECT_FALSE(rtcp_sender_->REMB()); 530 EXPECT_FALSE(rtcp_sender_->REMB());
531 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpReport)); 531 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpReport));
532 EXPECT_EQ(0, parser()->psfb_app()->num_packets()); 532 EXPECT_EQ(0, parser()->psfb_app()->num_packets());
533 } 533 }
534 534
535 TEST_F(RtcpSenderTest, SendXrWithVoipMetric) { 535 TEST_F(RtcpSenderTest, SendXrWithVoipMetric) {
536 rtcp_sender_->SetRTCPStatus(kRtcpNonCompound); 536 rtcp_sender_->SetRTCPStatus(kRtcpReducedSize);
537 RTCPVoIPMetric metric; 537 RTCPVoIPMetric metric;
538 metric.lossRate = 1; 538 metric.lossRate = 1;
539 metric.discardRate = 2; 539 metric.discardRate = 2;
540 metric.burstDensity = 3; 540 metric.burstDensity = 3;
541 metric.gapDensity = 4; 541 metric.gapDensity = 4;
542 metric.burstDuration = 0x1111; 542 metric.burstDuration = 0x1111;
543 metric.gapDuration = 0x2222; 543 metric.gapDuration = 0x2222;
544 metric.roundTripDelay = 0x3333; 544 metric.roundTripDelay = 0x3333;
545 metric.endSystemDelay = 0x4444; 545 metric.endSystemDelay = 0x4444;
546 metric.signalLevel = 5; 546 metric.signalLevel = 5;
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
664 // The first report should no longer be stored. 664 // The first report should no longer be stored.
665 EXPECT_FALSE(rtcp_sender_->SendTimeOfXrRrReport(initial_mid_ntp, &time_ms)); 665 EXPECT_FALSE(rtcp_sender_->SendTimeOfXrRrReport(initial_mid_ntp, &time_ms));
666 } 666 }
667 667
668 TEST_F(RtcpSenderTest, TestRegisterRtcpPacketTypeObserver) { 668 TEST_F(RtcpSenderTest, TestRegisterRtcpPacketTypeObserver) {
669 RtcpPacketTypeCounterObserverImpl observer; 669 RtcpPacketTypeCounterObserverImpl observer;
670 rtcp_sender_.reset( 670 rtcp_sender_.reset(
671 new RTCPSender(false, &clock_, receive_statistics_.get(), &observer)); 671 new RTCPSender(false, &clock_, receive_statistics_.get(), &observer));
672 rtcp_sender_->SetRemoteSSRC(kRemoteSsrc); 672 rtcp_sender_->SetRemoteSSRC(kRemoteSsrc);
673 EXPECT_EQ(0, rtcp_sender_->RegisterSendTransport(&test_transport_)); 673 EXPECT_EQ(0, rtcp_sender_->RegisterSendTransport(&test_transport_));
674 rtcp_sender_->SetRTCPStatus(kRtcpNonCompound); 674 rtcp_sender_->SetRTCPStatus(kRtcpReducedSize);
675 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpPli)); 675 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpPli));
676 EXPECT_EQ(1, parser()->pli()->num_packets()); 676 EXPECT_EQ(1, parser()->pli()->num_packets());
677 EXPECT_EQ(kRemoteSsrc, observer.ssrc_); 677 EXPECT_EQ(kRemoteSsrc, observer.ssrc_);
678 EXPECT_EQ(1U, observer.counter_.pli_packets); 678 EXPECT_EQ(1U, observer.counter_.pli_packets);
679 EXPECT_EQ(clock_.TimeInMilliseconds(), 679 EXPECT_EQ(clock_.TimeInMilliseconds(),
680 observer.counter_.first_packet_time_ms); 680 observer.counter_.first_packet_time_ms);
681 } 681 }
682 682
683 TEST_F(RtcpSenderTest, SendTmmbr) { 683 TEST_F(RtcpSenderTest, SendTmmbr) {
684 const unsigned int kBitrateBps = 312000; 684 const unsigned int kBitrateBps = 312000;
685 rtcp_sender_->SetRTCPStatus(kRtcpNonCompound); 685 rtcp_sender_->SetRTCPStatus(kRtcpReducedSize);
686 rtcp_sender_->SetTargetBitrate(kBitrateBps); 686 rtcp_sender_->SetTargetBitrate(kBitrateBps);
687 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpTmmbr)); 687 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpTmmbr));
688 EXPECT_EQ(1, parser()->tmmbr()->num_packets()); 688 EXPECT_EQ(1, parser()->tmmbr()->num_packets());
689 EXPECT_EQ(kSenderSsrc, parser()->tmmbr()->Ssrc()); 689 EXPECT_EQ(kSenderSsrc, parser()->tmmbr()->Ssrc());
690 EXPECT_EQ(1, parser()->tmmbr_item()->num_packets()); 690 EXPECT_EQ(1, parser()->tmmbr_item()->num_packets());
691 EXPECT_EQ(kBitrateBps / 1000, parser()->tmmbr_item()->BitrateKbps()); 691 EXPECT_EQ(kBitrateBps / 1000, parser()->tmmbr_item()->BitrateKbps());
692 // TODO(asapersson): tmmbr_item()->Overhead() looks broken, always zero. 692 // TODO(asapersson): tmmbr_item()->Overhead() looks broken, always zero.
693 } 693 }
694 694
695 TEST_F(RtcpSenderTest, TmmbrIncludedInCompoundPacketIfEnabled) { 695 TEST_F(RtcpSenderTest, TmmbrIncludedInCompoundPacketIfEnabled) {
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
755 rtcp_sender_->SetREMBData(kBitrate, ssrcs); 755 rtcp_sender_->SetREMBData(kBitrate, ssrcs);
756 std::set<RTCPPacketType> packet_types; 756 std::set<RTCPPacketType> packet_types;
757 packet_types.insert(kRtcpRemb); 757 packet_types.insert(kRtcpRemb);
758 packet_types.insert(kRtcpPli); 758 packet_types.insert(kRtcpPli);
759 EXPECT_EQ(0, rtcp_sender_->SendCompoundRTCP(feedback_state(), packet_types)); 759 EXPECT_EQ(0, rtcp_sender_->SendCompoundRTCP(feedback_state(), packet_types));
760 EXPECT_EQ(1, parser()->remb_item()->num_packets()); 760 EXPECT_EQ(1, parser()->remb_item()->num_packets());
761 EXPECT_EQ(1, parser()->pli()->num_packets()); 761 EXPECT_EQ(1, parser()->pli()->num_packets());
762 } 762 }
763 763
764 } // namespace webrtc 764 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698