OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
219 callback->DataCountersUpdated(counters, ssrc); | 219 callback->DataCountersUpdated(counters, ssrc); |
220 } | 220 } |
221 | 221 |
222 VideoSendStream::Stats stats = statistics_proxy_->GetStats(); | 222 VideoSendStream::Stats stats = statistics_proxy_->GetStats(); |
223 ExpectEqual(expected_, stats); | 223 ExpectEqual(expected_, stats); |
224 } | 224 } |
225 | 225 |
226 TEST_F(SendStatisticsProxyTest, Bitrate) { | 226 TEST_F(SendStatisticsProxyTest, Bitrate) { |
227 BitrateStatisticsObserver* observer = statistics_proxy_.get(); | 227 BitrateStatisticsObserver* observer = statistics_proxy_.get(); |
228 for (const auto& ssrc : config_.rtp.ssrcs) { | 228 for (const auto& ssrc : config_.rtp.ssrcs) { |
229 uint32_t total; | 229 BitrateStatistics total; |
230 uint32_t retransmit; | 230 BitrateStatistics retransmit; |
231 // Use ssrc as bitrate_bps to get a unique value for each stream. | 231 // Use ssrc as bitrate_bps to get a unique value for each stream. |
232 total = ssrc; | 232 total.bitrate_bps = ssrc; |
233 retransmit = ssrc + 1; | 233 retransmit.bitrate_bps = ssrc + 1; |
234 observer->Notify(total, retransmit, ssrc); | 234 observer->Notify(total, retransmit, ssrc); |
235 expected_.substreams[ssrc].total_bitrate_bps = total; | 235 expected_.substreams[ssrc].total_bitrate_bps = total.bitrate_bps; |
236 expected_.substreams[ssrc].retransmit_bitrate_bps = retransmit; | 236 expected_.substreams[ssrc].retransmit_bitrate_bps = retransmit.bitrate_bps; |
237 } | 237 } |
238 for (const auto& ssrc : config_.rtp.rtx.ssrcs) { | 238 for (const auto& ssrc : config_.rtp.rtx.ssrcs) { |
239 uint32_t total; | 239 BitrateStatistics total; |
240 uint32_t retransmit; | 240 BitrateStatistics retransmit; |
241 // Use ssrc as bitrate_bps to get a unique value for each stream. | 241 // Use ssrc as bitrate_bps to get a unique value for each stream. |
242 total = ssrc; | 242 total.bitrate_bps = ssrc; |
243 retransmit = ssrc + 1; | 243 retransmit.bitrate_bps = ssrc + 1; |
244 observer->Notify(total, retransmit, ssrc); | 244 observer->Notify(total, retransmit, ssrc); |
245 expected_.substreams[ssrc].total_bitrate_bps = total; | 245 expected_.substreams[ssrc].total_bitrate_bps = total.bitrate_bps; |
246 expected_.substreams[ssrc].retransmit_bitrate_bps = retransmit; | 246 expected_.substreams[ssrc].retransmit_bitrate_bps = retransmit.bitrate_bps; |
247 } | 247 } |
248 | 248 |
249 VideoSendStream::Stats stats = statistics_proxy_->GetStats(); | 249 VideoSendStream::Stats stats = statistics_proxy_->GetStats(); |
250 ExpectEqual(expected_, stats); | 250 ExpectEqual(expected_, stats); |
251 } | 251 } |
252 | 252 |
253 TEST_F(SendStatisticsProxyTest, SendSideDelay) { | 253 TEST_F(SendStatisticsProxyTest, SendSideDelay) { |
254 SendSideDelayObserver* observer = statistics_proxy_.get(); | 254 SendSideDelayObserver* observer = statistics_proxy_.get(); |
255 for (const auto& ssrc : config_.rtp.ssrcs) { | 255 for (const auto& ssrc : config_.rtp.ssrcs) { |
256 // Use ssrc as avg_delay_ms and max_delay_ms to get a unique value for each | 256 // Use ssrc as avg_delay_ms and max_delay_ms to get a unique value for each |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
390 *std::max_element(config_.rtp.ssrcs.begin(), config_.rtp.ssrcs.end()), | 390 *std::max_element(config_.rtp.ssrcs.begin(), config_.rtp.ssrcs.end()), |
391 *std::max_element(config_.rtp.rtx.ssrcs.begin(), | 391 *std::max_element(config_.rtp.rtx.ssrcs.begin(), |
392 config_.rtp.rtx.ssrcs.end())) + | 392 config_.rtp.rtx.ssrcs.end())) + |
393 1; | 393 1; |
394 // From RtcpStatisticsCallback. | 394 // From RtcpStatisticsCallback. |
395 RtcpStatistics rtcp_stats; | 395 RtcpStatistics rtcp_stats; |
396 RtcpStatisticsCallback* rtcp_callback = statistics_proxy_.get(); | 396 RtcpStatisticsCallback* rtcp_callback = statistics_proxy_.get(); |
397 rtcp_callback->StatisticsUpdated(rtcp_stats, excluded_ssrc); | 397 rtcp_callback->StatisticsUpdated(rtcp_stats, excluded_ssrc); |
398 | 398 |
399 // From BitrateStatisticsObserver. | 399 // From BitrateStatisticsObserver. |
400 uint32_t total = 0; | 400 BitrateStatistics total; |
401 uint32_t retransmit = 0; | 401 BitrateStatistics retransmit; |
402 BitrateStatisticsObserver* bitrate_observer = statistics_proxy_.get(); | 402 BitrateStatisticsObserver* bitrate_observer = statistics_proxy_.get(); |
403 bitrate_observer->Notify(total, retransmit, excluded_ssrc); | 403 bitrate_observer->Notify(total, retransmit, excluded_ssrc); |
404 | 404 |
405 // From FrameCountObserver. | 405 // From FrameCountObserver. |
406 FrameCountObserver* fps_observer = statistics_proxy_.get(); | 406 FrameCountObserver* fps_observer = statistics_proxy_.get(); |
407 FrameCounts frame_counts; | 407 FrameCounts frame_counts; |
408 frame_counts.key_frames = 1; | 408 frame_counts.key_frames = 1; |
409 fps_observer->FrameCountUpdated(frame_counts, excluded_ssrc); | 409 fps_observer->FrameCountUpdated(frame_counts, excluded_ssrc); |
410 | 410 |
411 VideoSendStream::Stats stats = statistics_proxy_->GetStats(); | 411 VideoSendStream::Stats stats = statistics_proxy_->GetStats(); |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
477 | 477 |
478 statistics_proxy_->OnInactiveSsrc(config_.rtp.ssrcs[1]); | 478 statistics_proxy_->OnInactiveSsrc(config_.rtp.ssrcs[1]); |
479 VideoSendStream::Stats stats = statistics_proxy_->GetStats(); | 479 VideoSendStream::Stats stats = statistics_proxy_->GetStats(); |
480 EXPECT_EQ(kEncodedWidth, stats.substreams[config_.rtp.ssrcs[0]].width); | 480 EXPECT_EQ(kEncodedWidth, stats.substreams[config_.rtp.ssrcs[0]].width); |
481 EXPECT_EQ(kEncodedHeight, stats.substreams[config_.rtp.ssrcs[0]].height); | 481 EXPECT_EQ(kEncodedHeight, stats.substreams[config_.rtp.ssrcs[0]].height); |
482 EXPECT_EQ(0, stats.substreams[config_.rtp.ssrcs[1]].width); | 482 EXPECT_EQ(0, stats.substreams[config_.rtp.ssrcs[1]].width); |
483 EXPECT_EQ(0, stats.substreams[config_.rtp.ssrcs[1]].height); | 483 EXPECT_EQ(0, stats.substreams[config_.rtp.ssrcs[1]].height); |
484 } | 484 } |
485 | 485 |
486 TEST_F(SendStatisticsProxyTest, ClearsBitratesFromInactiveSsrcs) { | 486 TEST_F(SendStatisticsProxyTest, ClearsBitratesFromInactiveSsrcs) { |
487 uint32_t bitrate = 42; | 487 BitrateStatistics bitrate; |
| 488 bitrate.bitrate_bps = 42; |
488 BitrateStatisticsObserver* observer = statistics_proxy_.get(); | 489 BitrateStatisticsObserver* observer = statistics_proxy_.get(); |
489 observer->Notify(bitrate, bitrate, config_.rtp.ssrcs[0]); | 490 observer->Notify(bitrate, bitrate, config_.rtp.ssrcs[0]); |
490 observer->Notify(bitrate, bitrate, config_.rtp.ssrcs[1]); | 491 observer->Notify(bitrate, bitrate, config_.rtp.ssrcs[1]); |
491 | 492 |
492 statistics_proxy_->OnInactiveSsrc(config_.rtp.ssrcs[1]); | 493 statistics_proxy_->OnInactiveSsrc(config_.rtp.ssrcs[1]); |
493 | 494 |
494 VideoSendStream::Stats stats = statistics_proxy_->GetStats(); | 495 VideoSendStream::Stats stats = statistics_proxy_->GetStats(); |
495 EXPECT_EQ(static_cast<int>(bitrate), | 496 EXPECT_EQ(static_cast<int>(bitrate.bitrate_bps), |
496 stats.substreams[config_.rtp.ssrcs[0]].total_bitrate_bps); | 497 stats.substreams[config_.rtp.ssrcs[0]].total_bitrate_bps); |
497 EXPECT_EQ(static_cast<int>(bitrate), | 498 EXPECT_EQ(static_cast<int>(bitrate.bitrate_bps), |
498 stats.substreams[config_.rtp.ssrcs[0]].retransmit_bitrate_bps); | 499 stats.substreams[config_.rtp.ssrcs[0]].retransmit_bitrate_bps); |
499 EXPECT_EQ(0, stats.substreams[config_.rtp.ssrcs[1]].total_bitrate_bps); | 500 EXPECT_EQ(0, stats.substreams[config_.rtp.ssrcs[1]].total_bitrate_bps); |
500 EXPECT_EQ(0, stats.substreams[config_.rtp.ssrcs[1]].retransmit_bitrate_bps); | 501 EXPECT_EQ(0, stats.substreams[config_.rtp.ssrcs[1]].retransmit_bitrate_bps); |
501 } | 502 } |
502 | 503 |
503 TEST_F(SendStatisticsProxyTest, ResetsRtcpCountersOnContentChange) { | 504 TEST_F(SendStatisticsProxyTest, ResetsRtcpCountersOnContentChange) { |
504 RtcpPacketTypeCounterObserver* proxy = | 505 RtcpPacketTypeCounterObserver* proxy = |
505 static_cast<RtcpPacketTypeCounterObserver*>(statistics_proxy_.get()); | 506 static_cast<RtcpPacketTypeCounterObserver*>(statistics_proxy_.get()); |
506 RtcpPacketTypeCounter counters; | 507 RtcpPacketTypeCounter counters; |
507 counters.first_packet_time_ms = fake_clock_.TimeInMilliseconds(); | 508 counters.first_packet_time_ms = fake_clock_.TimeInMilliseconds(); |
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
720 | 721 |
721 EXPECT_EQ( | 722 EXPECT_EQ( |
722 1, metrics::NumSamples("WebRTC.Video.Screenshare.FecBitrateSentInKbps")); | 723 1, metrics::NumSamples("WebRTC.Video.Screenshare.FecBitrateSentInKbps")); |
723 EXPECT_EQ(1, metrics::NumEvents( | 724 EXPECT_EQ(1, metrics::NumEvents( |
724 "WebRTC.Video.Screenshare.FecBitrateSentInKbps", | 725 "WebRTC.Video.Screenshare.FecBitrateSentInKbps", |
725 static_cast<int>((rtx_counters.fec.TotalBytes() * 2 * 8) / | 726 static_cast<int>((rtx_counters.fec.TotalBytes() * 2 * 8) / |
726 metrics::kMinRunTimeInSeconds / 1000))); | 727 metrics::kMinRunTimeInSeconds / 1000))); |
727 } | 728 } |
728 | 729 |
729 } // namespace webrtc | 730 } // namespace webrtc |
OLD | NEW |