Set ViEEncoder sink_ on construction.
Removes sink_crit_ and makes sink_ const.
webrtc:5687
R=perkj@webrtc.org
Review URL: https://codereview.webrtc.org/1984243003 .
Cr-Commit-Position: refs/heads/master@{#12813}
diff --git a/webrtc/call/bitrate_allocator.h b/webrtc/call/bitrate_allocator.h
index 3bafcd7..bf26a6a 100644
--- a/webrtc/call/bitrate_allocator.h
+++ b/webrtc/call/bitrate_allocator.h
@@ -112,7 +112,7 @@
rtc::CriticalSection crit_sect_;
// Stored in a list to keep track of the insertion order.
- ObserverConfigList bitrate_observer_configs_;
+ ObserverConfigList bitrate_observer_configs_ GUARDED_BY(crit_sect_);
bool enforce_min_bitrate_ GUARDED_BY(crit_sect_);
uint32_t last_bitrate_bps_ GUARDED_BY(crit_sect_);
uint32_t last_non_zero_bitrate_bps_ GUARDED_BY(crit_sect_);
diff --git a/webrtc/video/encoder_state_feedback_unittest.cc b/webrtc/video/encoder_state_feedback_unittest.cc
index 7e6ec71..5351e15 100644
--- a/webrtc/video/encoder_state_feedback_unittest.cc
+++ b/webrtc/video/encoder_state_feedback_unittest.cc
@@ -22,7 +22,7 @@
class MockVieEncoder : public ViEEncoder {
public:
explicit MockVieEncoder(ProcessThread* process_thread)
- : ViEEncoder(1, process_thread, nullptr, nullptr) {}
+ : ViEEncoder(1, process_thread, nullptr, nullptr, nullptr) {}
~MockVieEncoder() {}
MOCK_METHOD1(OnReceivedIntraFrameRequest, void(size_t));
diff --git a/webrtc/video/video_send_stream.cc b/webrtc/video/video_send_stream.cc
index 9555270..31ba5ee 100644
--- a/webrtc/video/video_send_stream.cc
+++ b/webrtc/video/video_send_stream.cc
@@ -379,7 +379,8 @@
vie_encoder_(num_cpu_cores,
module_process_thread_,
&stats_proxy_,
- &overuse_detector_),
+ &overuse_detector_,
+ this),
encoder_feedback_(Clock::GetRealTimeClock(),
config.rtp.ssrcs,
&vie_encoder_),
@@ -554,7 +555,7 @@
payload_router_.SetSendStreams(encoder_settings->streams);
vie_encoder_.SetEncoder(encoder_settings->video_codec,
encoder_settings->min_transmit_bitrate_bps,
- payload_router_.MaxPayloadLength(), this);
+ payload_router_.MaxPayloadLength());
// vie_encoder_.SetEncoder must be called before this.
if (config_.suspend_below_min_bitrate)
diff --git a/webrtc/video/vie_encoder.cc b/webrtc/video/vie_encoder.cc
index 2871c40..d10e8fc 100644
--- a/webrtc/video/vie_encoder.cc
+++ b/webrtc/video/vie_encoder.cc
@@ -33,8 +33,10 @@
ViEEncoder::ViEEncoder(uint32_t number_of_cores,
ProcessThread* module_process_thread,
SendStatisticsProxy* stats_proxy,
- OveruseFrameDetector* overuse_detector)
+ OveruseFrameDetector* overuse_detector,
+ EncodedImageCallback* sink)
: number_of_cores_(number_of_cores),
+ sink_(sink),
vp_(VideoProcessing::Create()),
video_sender_(Clock::GetRealTimeClock(), this, this, this),
stats_proxy_(stats_proxy),
@@ -84,10 +86,10 @@
video_sender_.RegisterExternalEncoder(nullptr, pl_type, false);
return 0;
}
+
void ViEEncoder::SetEncoder(const webrtc::VideoCodec& video_codec,
int min_transmit_bitrate_bps,
- size_t max_data_payload_length,
- EncodedImageCallback* sink) {
+ size_t max_data_payload_length) {
// Setting target width and height for VPM.
RTC_CHECK_EQ(VPM_OK,
vp_->SetTargetResolution(video_codec.width, video_codec.height,
@@ -100,10 +102,6 @@
encoder_config_ = video_codec;
min_transmit_bitrate_bps_ = min_transmit_bitrate_bps;
}
- {
- rtc::CritScope lock(&sink_cs_);
- sink_ = sink;
- }
bool success = video_sender_.RegisterSendCodec(
&video_codec, number_of_cores_,
@@ -294,11 +292,8 @@
stats_proxy_->OnSendEncodedImage(encoded_image, codec_specific_info);
}
- int success = 0;
- {
- rtc::CritScope lock(&sink_cs_);
- success = sink_->Encoded(encoded_image, codec_specific_info, fragmentation);
- }
+ int success =
+ sink_->Encoded(encoded_image, codec_specific_info, fragmentation);
overuse_detector_->FrameSent(encoded_image._timeStamp);
return success;
diff --git a/webrtc/video/vie_encoder.h b/webrtc/video/vie_encoder.h
index 556ed44..2129623 100644
--- a/webrtc/video/vie_encoder.h
+++ b/webrtc/video/vie_encoder.h
@@ -58,7 +58,9 @@
ViEEncoder(uint32_t number_of_cores,
ProcessThread* module_process_thread,
SendStatisticsProxy* stats_proxy,
- OveruseFrameDetector* overuse_detector);
+ OveruseFrameDetector* overuse_detector,
+ EncodedImageCallback* sink);
+
~ViEEncoder();
vcm::VideoSender* video_sender();
@@ -77,8 +79,7 @@
int32_t DeRegisterExternalEncoder(uint8_t pl_type);
void SetEncoder(const VideoCodec& video_codec,
int min_transmit_bitrate_bps,
- size_t max_data_payload_length,
- EncodedImageCallback* sink);
+ size_t max_data_payload_length);
void EncodeVideoFrame(const VideoFrame& video_frame);
void SendKeyFrame();
@@ -119,6 +120,7 @@
void TraceFrameDropEnd() EXCLUSIVE_LOCKS_REQUIRED(data_cs_);
const uint32_t number_of_cores_;
+ EncodedImageCallback* const sink_;
const std::unique_ptr<VideoProcessing> vp_;
vcm::VideoSender video_sender_;
@@ -138,9 +140,6 @@
bool encoder_paused_ GUARDED_BY(data_cs_);
bool encoder_paused_and_dropped_frame_ GUARDED_BY(data_cs_);
- rtc::CriticalSection sink_cs_;
- EncodedImageCallback* sink_ GUARDED_BY(sink_cs_);
-
ProcessThread* module_process_thread_;
bool has_received_sli_ GUARDED_BY(data_cs_);