| Index: webrtc/modules/video_coding/video_sender.cc
|
| diff --git a/webrtc/modules/video_coding/video_sender.cc b/webrtc/modules/video_coding/video_sender.cc
|
| index 4969069788949d402eebd287fdbe95439571d972..122bbfda374351c175417ec322ad1ff09b655bca 100644
|
| --- a/webrtc/modules/video_coding/video_sender.cc
|
| +++ b/webrtc/modules/video_coding/video_sender.cc
|
| @@ -202,8 +202,24 @@ int32_t VideoSender::SetChannelParameters(uint32_t target_bitrate,
|
|
|
| uint32_t input_frame_rate = _mediaOpt.InputFrameRate();
|
|
|
| - rtc::CritScope cs(¶ms_crit_);
|
| - encoder_params_ = {target_rate, lossRate, rtt, input_frame_rate};
|
| + EncoderParameters encoder_params = {target_rate, lossRate, rtt,
|
| + input_frame_rate};
|
| + bool encoder_has_internal_source;
|
| + {
|
| + rtc::CritScope cs(¶ms_crit_);
|
| + encoder_params_ = encoder_params;
|
| + encoder_has_internal_source = encoder_has_internal_source_;
|
| + }
|
| +
|
| + // For encoders with internal sources, we need to tell the encoder directly,
|
| + // instead of waiting for an AddVideoFrame that will never come (internal
|
| + // source encoders don't get input frames).
|
| + if (encoder_has_internal_source) {
|
| + rtc::CritScope cs(&encoder_crit_);
|
| + if (_encoder) {
|
| + SetEncoderParameters(encoder_params);
|
| + }
|
| + }
|
|
|
| return VCM_OK;
|
| }
|
|
|