Index: webrtc/modules/video_coding/main/source/video_sender.cc |
diff --git a/webrtc/modules/video_coding/main/source/video_sender.cc b/webrtc/modules/video_coding/main/source/video_sender.cc |
index cdbaffd75fe3c5764e2469c446636d92e65eb5e6..38089f71132f221a07ca7ca664899e68e7e4bc40 100644 |
--- a/webrtc/modules/video_coding/main/source/video_sender.cc |
+++ b/webrtc/modules/video_coding/main/source/video_sender.cc |
@@ -40,8 +40,8 @@ VideoSender::VideoSender(Clock* clock, |
_sendStatsTimer(1000, clock_), |
current_codec_(), |
qm_settings_callback_(qm_settings_callback), |
- protection_callback_(nullptr) { |
- encoder_params_ = {0, 0, 0, 0, false}; |
+ protection_callback_(nullptr), |
+ encoder_params_({0, 0, 0, 0}) { |
// Allow VideoSender to be created on one thread but used on another, post |
// construction. This is currently how this class is being used by at least |
// one external project (diffractor). |
@@ -70,7 +70,6 @@ int32_t VideoSender::Process() { |
// Force an encoder parameters update, so that incoming frame rate is |
// updated even if bandwidth hasn't changed. |
encoder_params_.input_frame_rate = _mediaOpt.InputFrameRate(); |
- encoder_params_.updated = true; |
} |
return returnValue; |
@@ -180,27 +179,15 @@ int32_t VideoSender::RegisterExternalEncoder(VideoEncoder* externalEncoder, |
return 0; |
} |
-// Get codec config parameters |
-int32_t VideoSender::CodecConfigParameters(uint8_t* buffer, |
- int32_t size) const { |
- rtc::CritScope lock(&send_crit_); |
- if (_encoder != nullptr) { |
- return _encoder->CodecConfigParameters(buffer, size); |
- } |
- return VCM_UNINITIALIZED; |
-} |
- |
// Get encode bitrate |
int VideoSender::Bitrate(unsigned int* bitrate) const { |
RTC_DCHECK(main_thread_.CalledOnValidThread()); |
// Since we're running on the thread that's the only thread known to modify |
// the value of _encoder, we don't need to grab the lock here. |
- // return the bit rate which the encoder is set to |
- if (!_encoder) { |
+ if (!_encoder) |
return VCM_UNINITIALIZED; |
- } |
- *bitrate = _encoder->BitRate(); |
+ *bitrate = _encoder->GetEncoderParameters().target_bitrate; |
return 0; |
} |
@@ -210,11 +197,10 @@ int VideoSender::FrameRate(unsigned int* framerate) const { |
// Since we're running on the thread that's the only thread known to modify |
// the value of _encoder, we don't need to grab the lock here. |
- // input frame rate, not compensated |
- if (!_encoder) { |
+ if (!_encoder) |
return VCM_UNINITIALIZED; |
- } |
- *framerate = _encoder->FrameRate(); |
+ |
+ *framerate = _encoder->GetEncoderParameters().input_frame_rate; |
return 0; |
} |
@@ -228,25 +214,21 @@ int32_t VideoSender::SetChannelParameters(uint32_t target_bitrate, |
uint32_t input_frame_rate = _mediaOpt.InputFrameRate(); |
rtc::CritScope cs(¶ms_lock_); |
- encoder_params_ = |
- EncoderParameters{target_rate, lossRate, rtt, input_frame_rate, true}; |
+ encoder_params_ = {target_rate, lossRate, rtt, input_frame_rate}; |
return VCM_OK; |
} |
void VideoSender::SetEncoderParameters(EncoderParameters params) { |
- if (!params.updated || params.target_bitrate == 0) |
+ if (params.target_bitrate == 0) |
return; |
if (params.input_frame_rate == 0) { |
// No frame rate estimate available, use default. |
params.input_frame_rate = current_codec_.maxFramerate; |
} |
- if (_encoder != nullptr) { |
- _encoder->SetChannelParameters(params.loss_rate, params.rtt); |
- _encoder->SetRates(params.target_bitrate, params.input_frame_rate); |
- } |
- return; |
+ if (_encoder != nullptr) |
+ _encoder->SetEncoderParameters(params); |
} |
int32_t VideoSender::RegisterTransportCallback( |
@@ -304,13 +286,11 @@ int32_t VideoSender::AddVideoFrame(const VideoFrame& videoFrame, |
{ |
rtc::CritScope lock(¶ms_lock_); |
encoder_params = encoder_params_; |
- encoder_params_.updated = false; |
} |
rtc::CritScope lock(&send_crit_); |
- SetEncoderParameters(encoder_params); |
- if (_encoder == nullptr) { |
+ if (_encoder == nullptr) |
return VCM_UNINITIALIZED; |
- } |
+ SetEncoderParameters(encoder_params); |
// TODO(holmer): Add support for dropping frames per stream. Currently we |
// only have one frame dropper for all streams. |
if (_nextFrameTypes[0] == kEmptyFrame) { |