(Auto)update libjingle 63503990-> 63547048

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5751 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
henrike@webrtc.org
2014-03-21 16:40:18 +00:00
parent 6f9c48348b
commit be7e26d229
3 changed files with 28 additions and 0 deletions

View File

@ -1843,6 +1843,10 @@ bool WebRtcVideoMediaChannel::AddSendStream(const StreamParams& sp) {
send_channel->set_stream_params(sp);
if (IsSimulcastStream(sp)) {
DisableAllExternalEncoders(send_channel, channel_id);
}
// Reset send codec after stream parameters changed.
if (send_codec_) {
if (!SetSendCodec(send_channel, *send_codec_, send_min_bitrate_,
@ -3908,6 +3912,24 @@ void WebRtcVideoMediaChannel::MaybeDisconnectCapturer(VideoCapturer* capturer) {
}
}
void WebRtcVideoMediaChannel::DisableAllExternalEncoders(
WebRtcVideoChannelSendInfo* send_channel,
int channel_id) {
const WebRtcVideoChannelSendInfo::EncoderMap& encoder_map =
send_channel->registered_encoders();
for (WebRtcVideoChannelSendInfo::EncoderMap::const_iterator it =
encoder_map.begin(); it != encoder_map.end(); ++it) {
if (engine()->vie()->ext_codec()->DeRegisterExternalSendCodec(
channel_id, it->first) != 0) {
LOG_RTCERR1(DeregisterEncoderObserver, channel_id);
}
engine()->DestroyExternalEncoder(it->second);
}
send_channel->ClearRegisteredEncoders();
engine()->SetExternalEncoderFactory(NULL);
}
} // namespace cricket
#endif // HAVE_WEBRTC_VIDEO

View File

@ -414,6 +414,11 @@ class WebRtcVideoMediaChannel : public talk_base::MessageHandler,
// to one send channel, i.e. the last send channel.
void MaybeDisconnectCapturer(VideoCapturer* capturer);
// Deregister and free all the external encoders previously register to
// |send_channel|. Also disable the external encoder factory.
void DisableAllExternalEncoders(WebRtcVideoChannelSendInfo* send_channel,
int channel_id);
// Global state.
WebRtcVideoEngine* engine_;
VoiceMediaChannel* voice_channel_;

View File

@ -1585,6 +1585,7 @@ TEST_F(WebRtcVideoEngineTestFake, RegisterEncoderIfFactoryIsGiven) {
EXPECT_TRUE(channel_->RemoveSendStream(kSsrc));
}
TEST_F(WebRtcVideoEngineTestFake, DontRegisterEncoderMultipleTimes) {
encoder_factory_.AddSupportedVideoCodecType(webrtc::kVideoCodecVP8, "VP8");
engine_.SetExternalEncoderFactory(&encoder_factory_);