diff options
author | Niels Möller <nisse@webrtc.org> | 2018-04-19 09:04:13 +0200 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2018-04-19 08:48:58 +0000 |
commit | 4db138e889ba3508329783c34462a8b82bde1070 (patch) | |
tree | 41a1b4c55219dd5fc5763a8dc6ba25c6574e0796 /call | |
parent | 5396232d033f7c2cda9e3417b319b0454751cfe5 (diff) | |
download | webrtc-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.cc | 7 | ||||
-rw-r--r-- | call/call_perf_tests.cc | 9 | ||||
-rw-r--r-- | call/video_send_stream.cc | 1 | ||||
-rw-r--r-- | call/video_send_stream.h | 15 |
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; |