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 242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |