aboutsummaryrefslogtreecommitdiff
path: root/call
diff options
context:
space:
mode:
authorNiels Möller <nisse@webrtc.org>2018-04-19 09:04:13 +0200
committerCommit Bot <commit-bot@chromium.org>2018-04-19 08:48:58 +0000
commit4db138e889ba3508329783c34462a8b82bde1070 (patch)
tree41a1b4c55219dd5fc5763a8dc6ba25c6574e0796 /call
parent5396232d033f7c2cda9e3417b319b0454751cfe5 (diff)
downloadwebrtc-4db138e889ba3508329783c34462a8b82bde1070.tar.gz
Reland "Move creating encoder to VideoStreamEncoder."
This is a reland of fb82fcc7f9c414dc8ba1ddd314e9524fee54cb80 Original change's description: > Move creating encoder to VideoStreamEncoder. > > This used to be in WebRtcVideoChannel::WebRtcVideoSendStream. > One implication is that encoder is not created until the first > frame arrives, and some of the tests needed updates to emit a > frame or two. > > Bug: webrtc:8830 > Change-Id: I78169b2bb4dfa4197b4b4229af9fd69d0f747835 > Reviewed-on: https://webrtc-review.googlesource.com/64885 > Commit-Queue: Niels Moller <nisse@webrtc.org> > Reviewed-by: Erik Språng <sprang@webrtc.org> > Reviewed-by: Karl Wiberg <kwiberg@webrtc.org> > Cr-Commit-Position: refs/heads/master@{#22905} TBR=magjed@webrtc.org,kwiberg@webrtc.org Bug: webrtc:8830 Change-Id: I9565095ea1880fb49d15111198c08b2fcb84f18c Reviewed-on: https://webrtc-review.googlesource.com/70740 Commit-Queue: Niels Moller <nisse@webrtc.org> Reviewed-by: Niels Moller <nisse@webrtc.org> Reviewed-by: Erik Språng <sprang@webrtc.org> Cr-Commit-Position: refs/heads/master@{#22930}
Diffstat (limited to 'call')
-rw-r--r--call/bitrate_estimator_tests.cc7
-rw-r--r--call/call_perf_tests.cc9
-rw-r--r--call/video_send_stream.cc1
-rw-r--r--call/video_send_stream.h15
4 files changed, 10 insertions, 22 deletions
diff --git a/call/bitrate_estimator_tests.cc b/call/bitrate_estimator_tests.cc
index b4f808f30a..ea48a973ea 100644
--- a/call/bitrate_estimator_tests.cc
+++ b/call/bitrate_estimator_tests.cc
@@ -116,8 +116,8 @@ class BitrateEstimatorTest : public test::CallTest {
video_send_config_ = VideoSendStream::Config(send_transport_.get());
video_send_config_.rtp.ssrcs.push_back(kVideoSendSsrcs[0]);
- // Encoders will be set separately per stream.
- video_send_config_.encoder_settings.encoder = nullptr;
+ video_send_config_.encoder_settings.encoder_factory =
+ &fake_encoder_factory_;
video_send_config_.rtp.payload_name = "FAKE";
video_send_config_.rtp.payload_type = kFakeVideoSendPayloadType;
test::FillEncoderConfiguration(kVideoCodecVP8, 1, &video_encoder_config_);
@@ -162,10 +162,8 @@ class BitrateEstimatorTest : public test::CallTest {
is_sending_receiving_(false),
send_stream_(nullptr),
frame_generator_capturer_(),
- fake_encoder_(Clock::GetRealTimeClock()),
fake_decoder_() {
test_->video_send_config_.rtp.ssrcs[0]++;
- test_->video_send_config_.encoder_settings.encoder = &fake_encoder_;
send_stream_ = test_->sender_call_->CreateVideoSendStream(
test_->video_send_config_.Copy(),
test_->video_encoder_config_.Copy());
@@ -223,7 +221,6 @@ class BitrateEstimatorTest : public test::CallTest {
VideoSendStream* send_stream_;
VideoReceiveStream* video_receive_stream_;
std::unique_ptr<test::FrameGeneratorCapturer> frame_generator_capturer_;
- test::FakeEncoder fake_encoder_;
test::FakeDecoder fake_decoder_;
};
diff --git a/call/call_perf_tests.cc b/call/call_perf_tests.cc
index 1337809db0..6520e6fcf9 100644
--- a/call/call_perf_tests.cc
+++ b/call/call_perf_tests.cc
@@ -29,6 +29,7 @@
#include "test/call_test.h"
#include "test/direct_transport.h"
#include "test/drifting_clock.h"
+#include "test/encoder_proxy_factory.h"
#include "test/encoder_settings.h"
#include "test/fake_encoder.h"
#include "test/field_trial.h"
@@ -637,7 +638,7 @@ void CallPerfTest::TestMinTransmitBitrate(bool pad_to_min_bitrate) {
std::vector<double> bitrate_kbps_list_;
} test(pad_to_min_bitrate);
- fake_encoder_.SetMaxBitrate(kMaxEncodeBitrateKbps);
+ fake_encoder_max_bitrate_ = kMaxEncodeBitrateKbps;
RunBaseTest(&test);
}
@@ -686,7 +687,8 @@ TEST_F(CallPerfTest, MAYBE_KeepsHighBitrateWhenReconfiguringSender) {
encoder_inits_(0),
last_set_bitrate_kbps_(0),
send_stream_(nullptr),
- frame_generator_(nullptr) {}
+ frame_generator_(nullptr),
+ encoder_factory_(this) {}
int32_t InitEncode(const VideoCodec* config,
int32_t number_of_cores,
@@ -735,7 +737,7 @@ TEST_F(CallPerfTest, MAYBE_KeepsHighBitrateWhenReconfiguringSender) {
VideoSendStream::Config* send_config,
std::vector<VideoReceiveStream::Config>* receive_configs,
VideoEncoderConfig* encoder_config) override {
- send_config->encoder_settings.encoder = this;
+ send_config->encoder_settings.encoder_factory = &encoder_factory_;
encoder_config->max_bitrate_bps = 2 * kReconfigureThresholdKbps * 1000;
encoder_config->video_stream_factory =
new rtc::RefCountedObject<VideoStreamFactory>();
@@ -770,6 +772,7 @@ TEST_F(CallPerfTest, MAYBE_KeepsHighBitrateWhenReconfiguringSender) {
uint32_t last_set_bitrate_kbps_;
VideoSendStream* send_stream_;
test::FrameGeneratorCapturer* frame_generator_;
+ test::EncoderProxyFactory encoder_factory_;
VideoEncoderConfig encoder_config_;
} test;
diff --git a/call/video_send_stream.cc b/call/video_send_stream.cc
index 8fccd32c77..ec701d0c7b 100644
--- a/call/video_send_stream.cc
+++ b/call/video_send_stream.cc
@@ -93,7 +93,6 @@ std::string VideoSendStream::Config::EncoderSettings::ToString() const {
rtc::SimpleStringBuilder ss(buf);
ss << "{encoder_factory: "
<< (encoder_factory ? "(VideoEncoderFactory)" : "(nullptr)");
- ss << ", encoder: " << (encoder ? "(VideoEncoder)" : "nullptr");
ss << '}';
return ss.str();
}
diff --git a/call/video_send_stream.h b/call/video_send_stream.h
index 0019a95c65..cdb948395f 100644
--- a/call/video_send_stream.h
+++ b/call/video_send_stream.h
@@ -113,18 +113,8 @@ class VideoSendStream {
struct EncoderSettings {
EncoderSettings() = default;
- explicit EncoderSettings(VideoEncoder* encoder) : encoder(encoder) {}
std::string ToString() const;
- // TODO(sophiechang): Delete this field when no one is using internal
- // sources anymore.
- bool internal_source = false;
-
- // Allow 100% encoder utilization. Used for HW encoders where CPU isn't
- // expected to be the limiting factor, but a chip could be running at
- // 30fps (for example) exactly.
- bool full_overuse_time = false;
-
// Enables the new method to estimate the cpu load from encoding, used for
// cpu adaptation.
bool experiment_cpu_load_estimator = false;
@@ -132,9 +122,8 @@ class VideoSendStream {
// Ownership stays with WebrtcVideoEngine (delegated from PeerConnection).
VideoEncoderFactory* encoder_factory = nullptr;
- // TODO(nisse): Delete, let VideoStreamEncoder create the encoder.
- // Uninitialized VideoEncoder instance to be used for encoding. Will be
- // initialized from inside the VideoSendStream.
+ // TODO(nisse): Unused! But kept temporarily to transition downstream
+ // projects.
VideoEncoder* encoder = nullptr;
} encoder_settings;