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}
This commit is contained in:
Peter Boström 2016-05-19 16:59:03 +02:00
parent 8e572f030f
commit 00b9d210c4
5 changed files with 17 additions and 22 deletions

View File

@ -112,7 +112,7 @@ class BitrateAllocator {
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_);

View File

@ -22,7 +22,7 @@ namespace webrtc {
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));

View File

@ -379,7 +379,8 @@ VideoSendStream::VideoSendStream(
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 @@ void VideoSendStream::EncoderProcess() {
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)

View File

@ -33,8 +33,10 @@ static const float kStopPaddingThresholdMs = 2000;
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 @@ int32_t ViEEncoder::DeRegisterExternalEncoder(uint8_t pl_type) {
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 @@ void ViEEncoder::SetEncoder(const webrtc::VideoCodec& video_codec,
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 @@ int32_t ViEEncoder::Encoded(const EncodedImage& encoded_image,
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;

View File

@ -58,7 +58,9 @@ class ViEEncoder : public VideoEncoderRateObserver,
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 @@ class ViEEncoder : public VideoEncoderRateObserver,
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 @@ class ViEEncoder : public VideoEncoderRateObserver,
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 @@ class ViEEncoder : public VideoEncoderRateObserver,
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_);