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:
parent
8e572f030f
commit
00b9d210c4
@ -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_);
|
||||
|
||||
@ -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));
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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_);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user