FakeEncoder: remove lock recursions.
This change removes lock recursions and adds thread annotations. Bug: webrtc:11567 Change-Id: I88561102c31156718fbb175a9a38f2cc89c6d9dc Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/175642 Reviewed-by: Erik Språng <sprang@webrtc.org> Commit-Queue: Markus Handell <handellm@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31316}
This commit is contained in:
parent
fde94a72d1
commit
409784d0c4
@ -69,7 +69,7 @@ void FakeEncoder::SetMaxBitrate(int max_kbps) {
|
||||
RTC_DCHECK_GE(max_kbps, -1); // max_kbps == -1 disables it.
|
||||
rtc::CritScope cs(&crit_sect_);
|
||||
max_target_bitrate_kbps_ = max_kbps;
|
||||
SetRates(current_rate_settings_);
|
||||
SetRatesLocked(current_rate_settings_);
|
||||
}
|
||||
|
||||
void FakeEncoder::SetQp(int qp) {
|
||||
@ -243,6 +243,10 @@ int32_t FakeEncoder::Release() {
|
||||
|
||||
void FakeEncoder::SetRates(const RateControlParameters& parameters) {
|
||||
rtc::CritScope cs(&crit_sect_);
|
||||
SetRatesLocked(parameters);
|
||||
}
|
||||
|
||||
void FakeEncoder::SetRatesLocked(const RateControlParameters& parameters) {
|
||||
current_rate_settings_ = parameters;
|
||||
int allocated_bitrate_kbps = parameters.bitrate.get_sum_kbps();
|
||||
|
||||
|
||||
@ -40,21 +40,23 @@ class FakeEncoder : public VideoEncoder {
|
||||
virtual ~FakeEncoder() = default;
|
||||
|
||||
// Sets max bitrate. Not thread-safe, call before registering the encoder.
|
||||
void SetMaxBitrate(int max_kbps);
|
||||
void SetQp(int qp);
|
||||
void SetMaxBitrate(int max_kbps) RTC_LOCKS_EXCLUDED(crit_sect_);
|
||||
void SetQp(int qp) RTC_LOCKS_EXCLUDED(crit_sect_);
|
||||
|
||||
void SetFecControllerOverride(
|
||||
FecControllerOverride* fec_controller_override) override;
|
||||
|
||||
int32_t InitEncode(const VideoCodec* config,
|
||||
const Settings& settings) override;
|
||||
int32_t InitEncode(const VideoCodec* config, const Settings& settings)
|
||||
RTC_LOCKS_EXCLUDED(crit_sect_) override;
|
||||
int32_t Encode(const VideoFrame& input_image,
|
||||
const std::vector<VideoFrameType>* frame_types) override;
|
||||
int32_t RegisterEncodeCompleteCallback(
|
||||
EncodedImageCallback* callback) override;
|
||||
const std::vector<VideoFrameType>* frame_types)
|
||||
RTC_LOCKS_EXCLUDED(crit_sect_) override;
|
||||
int32_t RegisterEncodeCompleteCallback(EncodedImageCallback* callback)
|
||||
RTC_LOCKS_EXCLUDED(crit_sect_) override;
|
||||
int32_t Release() override;
|
||||
void SetRates(const RateControlParameters& parameters) override;
|
||||
int GetConfiguredInputFramerate() const;
|
||||
void SetRates(const RateControlParameters& parameters)
|
||||
RTC_LOCKS_EXCLUDED(crit_sect_) override;
|
||||
int GetConfiguredInputFramerate() const RTC_LOCKS_EXCLUDED(crit_sect_);
|
||||
EncoderInfo GetEncoderInfo() const override;
|
||||
|
||||
static const char* kImplementationName;
|
||||
@ -79,7 +81,7 @@ class FakeEncoder : public VideoEncoder {
|
||||
uint8_t num_simulcast_streams,
|
||||
const VideoBitrateAllocation& target_bitrate,
|
||||
SimulcastStream simulcast_streams[kMaxSimulcastStreams],
|
||||
int framerate);
|
||||
int framerate) RTC_LOCKS_EXCLUDED(crit_sect_);
|
||||
|
||||
// Called before the frame is passed to callback_->OnEncodedImage, to let
|
||||
// subclasses fill out codec_specific, possibly modify encodedImage.
|
||||
@ -88,6 +90,9 @@ class FakeEncoder : public VideoEncoder {
|
||||
EncodedImage* encoded_image,
|
||||
CodecSpecificInfo* codec_specific);
|
||||
|
||||
void SetRatesLocked(const RateControlParameters& parameters)
|
||||
RTC_EXCLUSIVE_LOCKS_REQUIRED(crit_sect_);
|
||||
|
||||
FrameInfo last_frame_info_ RTC_GUARDED_BY(crit_sect_);
|
||||
Clock* const clock_;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user