Fix for stats updated twice when switching content type (realtime <-> screenshare). Add unittest.
BUG= Review URL: https://codereview.webrtc.org/1543933004 Cr-Commit-Position: refs/heads/master@{#11180}
This commit is contained in:
@ -162,7 +162,6 @@ void SendStatisticsProxy::SetContentType(
|
|||||||
VideoEncoderConfig::ContentType content_type) {
|
VideoEncoderConfig::ContentType content_type) {
|
||||||
rtc::CritScope lock(&crit_);
|
rtc::CritScope lock(&crit_);
|
||||||
if (content_type_ != content_type) {
|
if (content_type_ != content_type) {
|
||||||
uma_container_->UpdateHistograms();
|
|
||||||
uma_container_.reset(new UmaSamplesContainer(GetUmaPrefix(content_type)));
|
uma_container_.reset(new UmaSamplesContainer(GetUmaPrefix(content_type)));
|
||||||
content_type_ = content_type;
|
content_type_ = content_type;
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include "testing/gtest/include/gtest/gtest.h"
|
#include "testing/gtest/include/gtest/gtest.h"
|
||||||
|
#include "webrtc/test/histogram.h"
|
||||||
|
|
||||||
namespace webrtc {
|
namespace webrtc {
|
||||||
|
|
||||||
@ -296,6 +297,25 @@ TEST_F(SendStatisticsProxyTest, OnEncodedFrame) {
|
|||||||
EXPECT_EQ(kEncodeTimeMs, stats.avg_encode_time_ms);
|
EXPECT_EQ(kEncodeTimeMs, stats.avg_encode_time_ms);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(SendStatisticsProxyTest, SwitchContentTypeUpdatesHistograms) {
|
||||||
|
test::ClearHistograms();
|
||||||
|
const int kMinRequiredSamples = 200;
|
||||||
|
const int kWidth = 640;
|
||||||
|
const int kHeight = 480;
|
||||||
|
|
||||||
|
for (int i = 0; i < kMinRequiredSamples; ++i)
|
||||||
|
statistics_proxy_->OnIncomingFrame(kWidth, kHeight);
|
||||||
|
|
||||||
|
// No switch, stats not should be updated.
|
||||||
|
statistics_proxy_->SetContentType(
|
||||||
|
VideoEncoderConfig::ContentType::kRealtimeVideo);
|
||||||
|
EXPECT_EQ(0, test::NumHistogramSamples("WebRTC.Video.InputWidthInPixels"));
|
||||||
|
|
||||||
|
// Switch to screenshare, real-time stats should be updated.
|
||||||
|
statistics_proxy_->SetContentType(VideoEncoderConfig::ContentType::kScreen);
|
||||||
|
EXPECT_EQ(1, test::NumHistogramSamples("WebRTC.Video.InputWidthInPixels"));
|
||||||
|
}
|
||||||
|
|
||||||
TEST_F(SendStatisticsProxyTest, NoSubstreams) {
|
TEST_F(SendStatisticsProxyTest, NoSubstreams) {
|
||||||
uint32_t excluded_ssrc =
|
uint32_t excluded_ssrc =
|
||||||
std::max(
|
std::max(
|
||||||
|
Reference in New Issue
Block a user