Update libjingle to 50191337.
R=mallinath@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/1885005
git-svn-id: http://webrtc.googlecode.com/svn/trunk@4461 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/talk/media/webrtc/webrtcvideoengine.cc b/talk/media/webrtc/webrtcvideoengine.cc
index 19ccebf..10cdd8e 100644
--- a/talk/media/webrtc/webrtcvideoengine.cc
+++ b/talk/media/webrtc/webrtcvideoengine.cc
@@ -429,7 +429,7 @@
DecoderMap registered_decoders_;
};
-class WebRtcVideoChannelSendInfo {
+class WebRtcVideoChannelSendInfo : public sigslot::has_slots<> {
public:
typedef std::map<int, webrtc::VideoEncoder*> EncoderMap; // key: payload type
WebRtcVideoChannelSendInfo(int channel_id, int capture_id,
@@ -445,9 +445,7 @@
capturer_updated_(false),
interval_(0),
video_adapter_(new CoordinatedVideoAdapter) {
- // TODO(asapersson):
- // video_adapter_->SignalCpuAdaptationUnable.connect(
- // this, &WebRtcVideoChannelSendInfo::OnCpuAdaptationUnable);
+ SignalCpuAdaptationUnable.repeat(video_adapter_->SignalCpuAdaptationUnable);
if (cpu_monitor) {
cpu_monitor->SignalUpdate.connect(
video_adapter_.get(), &CoordinatedVideoAdapter::OnCpuLoadUpdated);
@@ -585,6 +583,8 @@
registered_encoders_.clear();
}
+ sigslot::repeater0<> SignalCpuAdaptationUnable;
+
private:
int channel_id_;
int capture_id_;
@@ -2931,6 +2931,8 @@
external_capture,
engine()->cpu_monitor()));
send_channel->ApplyCpuOptions(options_);
+ send_channel->SignalCpuAdaptationUnable.connect(this,
+ &WebRtcVideoMediaChannel::OnCpuAdaptationUnable);
// Register encoder observer for outgoing framerate and bitrate.
if (engine()->vie()->codec()->RegisterEncoderObserver(
@@ -3404,6 +3406,12 @@
}
}
+void WebRtcVideoMediaChannel::OnCpuAdaptationUnable() {
+ // ssrc is hardcoded to 0. This message is based on a system wide issue,
+ // so finding which ssrc caused it doesn't matter.
+ SignalMediaError(0, VideoMediaChannel::ERROR_REC_CPU_MAX_CANT_DOWNGRADE);
+}
+
void WebRtcVideoMediaChannel::SetNetworkTransmissionState(
bool is_transmitting) {
LOG(LS_INFO) << "SetNetworkTransmissionState: " << is_transmitting;
diff --git a/talk/media/webrtc/webrtcvideoengine.h b/talk/media/webrtc/webrtcvideoengine.h
index 2f0fd3e..f0293bb 100644
--- a/talk/media/webrtc/webrtcvideoengine.h
+++ b/talk/media/webrtc/webrtcvideoengine.h
@@ -396,6 +396,9 @@
const std::vector<RtpHeaderExtension>& extensions,
const char header_extension_uri[]);
+ // Signal when cpu adaptation has no further scope to adapt.
+ void OnCpuAdaptationUnable();
+
// Global state.
WebRtcVideoEngine* engine_;
VoiceMediaChannel* voice_channel_;
diff --git a/talk/media/webrtc/webrtcvideoengine_unittest.cc b/talk/media/webrtc/webrtcvideoengine_unittest.cc
index 376f295..840fcdd 100644
--- a/talk/media/webrtc/webrtcvideoengine_unittest.cc
+++ b/talk/media/webrtc/webrtcvideoengine_unittest.cc
@@ -86,7 +86,9 @@
// Test fixture to test WebRtcVideoEngine with a fake webrtc::VideoEngine.
// Useful for testing failure paths.
-class WebRtcVideoEngineTestFake : public testing::Test {
+class WebRtcVideoEngineTestFake :
+ public testing::Test,
+ public sigslot::has_slots<> {
public:
WebRtcVideoEngineTestFake()
: vie_(kVideoCodecs, ARRAY_SIZE(kVideoCodecs)),
@@ -95,16 +97,22 @@
engine_(NULL, // cricket::WebRtcVoiceEngine
new FakeViEWrapper(&vie_), cpu_monitor_),
channel_(NULL),
- voice_channel_(NULL) {
+ voice_channel_(NULL),
+ last_error_(cricket::VideoMediaChannel::ERROR_NONE) {
}
bool SetupEngine() {
bool result = engine_.Init(talk_base::Thread::Current());
if (result) {
channel_ = engine_.CreateChannel(voice_channel_);
+ channel_->SignalMediaError.connect(this,
+ &WebRtcVideoEngineTestFake::OnMediaError);
result = (channel_ != NULL);
}
return result;
}
+ void OnMediaError(uint32 ssrc, cricket::VideoMediaChannel::Error error) {
+ last_error_ = error;
+ }
bool SendI420Frame(int width, int height) {
if (NULL == channel_) {
return false;
@@ -185,6 +193,7 @@
cricket::WebRtcVideoEngine engine_;
cricket::WebRtcVideoMediaChannel* channel_;
cricket::WebRtcVoiceMediaChannel* voice_channel_;
+ cricket::VideoMediaChannel::Error last_error_;
};
// Test fixtures to test WebRtcVideoEngine with a real webrtc::VideoEngine.