Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(369)

Unified Diff: webrtc/modules/video_coding/main/source/generic_encoder.cc

Issue 1426953003: Remove redudant encoder rate calls. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: remove redundant function Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/modules/video_coding/main/source/generic_encoder.cc
diff --git a/webrtc/modules/video_coding/main/source/generic_encoder.cc b/webrtc/modules/video_coding/main/source/generic_encoder.cc
index dbb1c17ff9e671425c3e69d0b5b94aa318f579ce..e3ae0dd44b4da377a1a854d7d45a1ad237e67c8e 100644
--- a/webrtc/modules/video_coding/main/source/generic_encoder.cc
+++ b/webrtc/modules/video_coding/main/source/generic_encoder.cc
@@ -94,12 +94,10 @@ VCMGenericEncoder::VCMGenericEncoder(VideoEncoder* encoder,
: encoder_(encoder),
rate_observer_(rate_observer),
vcm_encoded_frame_callback_(nullptr),
- bit_rate_(0),
- frame_rate_(0),
+ encoder_params_({0, 0, 0, 0}),
internal_source_(internalSource),
rotation_(kVideoRotation_0),
- is_screenshare_(false) {
-}
+ is_screenshare_(false) {}
VCMGenericEncoder::~VCMGenericEncoder()
{
@@ -108,9 +106,8 @@ VCMGenericEncoder::~VCMGenericEncoder()
int32_t VCMGenericEncoder::Release()
{
{
- rtc::CritScope lock(&rates_lock_);
- bit_rate_ = 0;
- frame_rate_ = 0;
+ rtc::CritScope lock(&params_lock_);
+ encoder_params_ = {0, 0, 0, 0};
vcm_encoded_frame_callback_ = nullptr;
}
@@ -123,9 +120,9 @@ VCMGenericEncoder::InitEncode(const VideoCodec* settings,
size_t maxPayloadSize)
{
{
- rtc::CritScope lock(&rates_lock_);
- bit_rate_ = settings->startBitrate * 1000;
- frame_rate_ = settings->maxFramerate;
+ rtc::CritScope lock(&params_lock_);
+ encoder_params_.target_bitrate = settings->startBitrate * 1000;
+ encoder_params_.input_frame_rate = settings->maxFramerate;
}
is_screenshare_ = settings->mode == VideoCodecMode::kScreensharing;
@@ -162,54 +159,34 @@ int32_t VCMGenericEncoder::Encode(const VideoFrame& inputFrame,
return result;
}
-int32_t
-VCMGenericEncoder::SetChannelParameters(int32_t packetLoss, int64_t rtt)
-{
- return encoder_->SetChannelParameters(packetLoss, rtt);
-}
-
-int32_t
-VCMGenericEncoder::SetRates(uint32_t newBitRate, uint32_t frameRate)
-{
- uint32_t target_bitrate_kbps = (newBitRate + 500) / 1000;
- int32_t ret = encoder_->SetRates(target_bitrate_kbps, frameRate);
- if (ret < 0)
- {
- return ret;
- }
-
- {
- rtc::CritScope lock(&rates_lock_);
- bit_rate_ = newBitRate;
- frame_rate_ = frameRate;
- }
-
- if (rate_observer_ != nullptr)
- rate_observer_->OnSetRates(newBitRate, frameRate);
- return VCM_OK;
-}
-
-int32_t
-VCMGenericEncoder::CodecConfigParameters(uint8_t* buffer, int32_t size)
-{
- int32_t ret = encoder_->CodecConfigParameters(buffer, size);
- if (ret < 0)
- {
- return ret;
+void VCMGenericEncoder::SetEncoderParameters(const EncoderParameters& params) {
+ bool channel_parameters_have_changed;
+ bool rates_have_changed;
+ {
+ rtc::CritScope lock(&params_lock_);
+ channel_parameters_have_changed =
+ params.loss_rate != encoder_params_.loss_rate ||
+ params.rtt != encoder_params_.rtt;
+ rates_have_changed =
+ params.target_bitrate != encoder_params_.target_bitrate ||
+ params.input_frame_rate != encoder_params_.input_frame_rate;
+ encoder_params_ = params;
+ }
+ if (channel_parameters_have_changed)
+ encoder_->SetChannelParameters(params.loss_rate, params.rtt);
+ if (rates_have_changed) {
+ uint32_t target_bitrate_kbps = (params.target_bitrate + 500) / 1000;
+ encoder_->SetRates(target_bitrate_kbps, params.input_frame_rate);
+ if (rate_observer_ != nullptr) {
+ rate_observer_->OnSetRates(params.target_bitrate,
+ params.input_frame_rate);
}
- return ret;
-}
-
-uint32_t VCMGenericEncoder::BitRate() const
-{
- rtc::CritScope lock(&rates_lock_);
- return bit_rate_;
+ }
}
-uint32_t VCMGenericEncoder::FrameRate() const
-{
- rtc::CritScope lock(&rates_lock_);
- return frame_rate_;
+EncoderParameters VCMGenericEncoder::GetEncoderParameters() const {
+ rtc::CritScope lock(&params_lock_);
+ return encoder_params_;
}
int32_t
« no previous file with comments | « webrtc/modules/video_coding/main/source/generic_encoder.h ('k') | webrtc/modules/video_coding/main/source/video_coding_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698