| 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) {
|
|
|