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 f14f8521148248507e3ff8048e8dadc708eb94cf..ae5bd6c6bb23566bcf724dfee929c8e07ec6b1fb 100644 |
--- a/webrtc/modules/video_coding/video_sender.cc |
+++ b/webrtc/modules/video_coding/video_sender.cc |
@@ -202,8 +202,22 @@ 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}; |
+ { |
+ rtc::CritScope cs(¶ms_crit_); |
+ encoder_params_ = encoder_params; |
+ } |
+ |
+ // 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). |
+ { |
+ rtc::CritScope cs(&encoder_crit_); |
pbos-webrtc
2016/02/11 10:17:00
I believe that this lock could block (the network
|
+ if (_encoder && _encoder->InternalSource()) { |
+ SetEncoderParameters(encoder_params); |
+ } |
+ } |
return VCM_OK; |
} |