OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |