(Auto)update libjingle 69648312-> 69830415

git-svn-id: http://webrtc.googlecode.com/svn/trunk/talk@6527 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/app/webrtc/statscollector.cc b/app/webrtc/statscollector.cc
index 67d64fb..86a88c1 100644
--- a/app/webrtc/statscollector.cc
+++ b/app/webrtc/statscollector.cc
@@ -137,6 +137,8 @@
     "googLocalCandidateType";
 const char StatsReport::kStatsValueNameLocalCertificateId[] =
     "googLocalCertificateId";
+const char StatsReport::kStatsValueNameAdaptationChanges[] =
+    "googAdaptationChanges";
 const char StatsReport::kStatsValueNameNacksReceived[] = "googNacksReceived";
 const char StatsReport::kStatsValueNameNacksSent[] = "googNacksSent";
 const char StatsReport::kStatsValueNamePlisReceived[] = "googPlisReceived";
@@ -422,6 +424,8 @@
                      (info.adapt_reason & 0x2) > 0);
   report->AddBoolean(StatsReport::kStatsValueNameViewLimitedResolution,
                      (info.adapt_reason & 0x4) > 0);
+  report->AddValue(StatsReport::kStatsValueNameAdaptationChanges,
+                   info.adapt_changes);
   report->AddValue(StatsReport::kStatsValueNameAvgEncodeMs, info.avg_encode_ms);
   report->AddValue(StatsReport::kStatsValueNameCaptureJitterMs,
                    info.capture_jitter_ms);
diff --git a/app/webrtc/statstypes.h b/app/webrtc/statstypes.h
index 22e281c..0a2aa03 100644
--- a/app/webrtc/statstypes.h
+++ b/app/webrtc/statstypes.h
@@ -141,6 +141,7 @@
   static const char kStatsValueNameBandwidthLimitedResolution[];
   static const char kStatsValueNameCpuLimitedResolution[];
   static const char kStatsValueNameViewLimitedResolution[];
+  static const char kStatsValueNameAdaptationChanges[];
   static const char kStatsValueNameEchoCancellationQualityMin[];
   static const char kStatsValueNameEchoDelayMedian[];
   static const char kStatsValueNameEchoDelayStdDev[];
diff --git a/media/base/mediachannel.h b/media/base/mediachannel.h
index 34d2def..60cdebd 100644
--- a/media/base/mediachannel.h
+++ b/media/base/mediachannel.h
@@ -901,6 +901,7 @@
         nominal_bitrate(0),
         preferred_bitrate(0),
         adapt_reason(0),
+        adapt_changes(0),
         capture_jitter_ms(0),
         avg_encode_ms(0),
         encode_usage_percent(0),
@@ -922,6 +923,7 @@
   int nominal_bitrate;
   int preferred_bitrate;
   int adapt_reason;
+  int adapt_changes;
   int capture_jitter_ms;
   int avg_encode_ms;
   int encode_usage_percent;
diff --git a/media/base/videoadapter.h b/media/base/videoadapter.h
index 0634942..8881837 100644
--- a/media/base/videoadapter.h
+++ b/media/base/videoadapter.h
@@ -72,6 +72,8 @@
   void set_scale_third(bool enable);
   bool scale_third() const { return scale_third_; }
 
+  int adaptation_changes() const { return adaption_changes_; }
+
  protected:
   float FindClosestScale(int width, int height, int target_num_pixels);
   float FindClosestViewScale(int width, int height, int target_num_pixels);
diff --git a/media/webrtc/webrtcvideoengine.cc b/media/webrtc/webrtcvideoengine.cc
index 1ca92cf..13034f0 100644
--- a/media/webrtc/webrtcvideoengine.cc
+++ b/media/webrtc/webrtcvideoengine.cc
@@ -586,9 +586,9 @@
         video_capturer_(NULL),
         encoder_observer_(channel_id),
         external_capture_(external_capture),
-        capturer_updated_(false),
         interval_(0),
-        cpu_monitor_(cpu_monitor) {
+        cpu_monitor_(cpu_monitor),
+        old_adaptation_changes_(0) {
   }
 
   int channel_id() const { return channel_id_; }
@@ -625,12 +625,17 @@
   int64 interval() { return interval_; }
 
   int CurrentAdaptReason() const {
-    const CoordinatedVideoAdapter* adapter = video_adapter();
-    if (!adapter) {
+    if (!video_adapter()) {
       return CoordinatedVideoAdapter::ADAPTREASON_NONE;
     }
     return video_adapter()->adapt_reason();
   }
+  int AdaptChanges() const {
+    if (!video_adapter()) {
+      return old_adaptation_changes_;
+    }
+    return old_adaptation_changes_ + video_adapter()->adaptation_changes();
+  }
 
   StreamParams* stream_params() { return stream_params_.get(); }
   void set_stream_params(const StreamParams& sp) {
@@ -655,6 +660,8 @@
 
     CoordinatedVideoAdapter* old_video_adapter = video_adapter();
     if (old_video_adapter) {
+      // Get adaptation changes from old video adapter.
+      old_adaptation_changes_ += old_video_adapter->adaptation_changes();
       // Disconnect signals from old video adapter.
       SignalCpuAdaptationUnable.disconnect(old_video_adapter);
       if (cpu_monitor_) {
@@ -662,7 +669,6 @@
       }
     }
 
-    capturer_updated_ = true;
     video_capturer_ = video_capturer;
 
     vie_wrapper->base()->RegisterCpuOveruseObserver(channel_id_, NULL);
@@ -817,13 +823,13 @@
 
   WebRtcLocalStreamInfo local_stream_info_;
 
-  bool capturer_updated_;
-
   int64 interval_;
 
   talk_base::CpuMonitor* cpu_monitor_;
   talk_base::scoped_ptr<WebRtcOveruseObserver> overuse_observer_;
 
+  int old_adaptation_changes_;
+
   VideoOptions video_options_;
 };
 
@@ -2506,6 +2512,7 @@
             send_codec_->maxBitrate, kMaxVideoBitrate);
       }
       sinfo.adapt_reason = send_channel->CurrentAdaptReason();
+      sinfo.adapt_changes = send_channel->AdaptChanges();
 
 #ifdef USE_WEBRTC_DEV_BRANCH
       webrtc::CpuOveruseMetrics metrics;