Changes synchronization offset perfomance tracking
to be logged after converge only.

BUG=webrtc:5032, chromium:618226
R=pbos@webrtc.org

Review URL: https://codereview.webrtc.org/2046943004 .

Cr-Commit-Position: refs/heads/master@{#13160}
diff --git a/webrtc/call/call_perf_tests.cc b/webrtc/call/call_perf_tests.cc
index 137bb2b..12cafd9 100644
--- a/webrtc/call/call_perf_tests.cc
+++ b/webrtc/call/call_perf_tests.cc
@@ -98,8 +98,6 @@
       return;
 
     int64_t now_ms = clock_->TimeInMilliseconds();
-
-    sync_offset_ms_list_.push_back(stats.sync_offset_ms);
     int64_t time_since_creation = now_ms - creation_time_ms_;
     // During the first couple of seconds audio and video can falsely be
     // estimated as being synchronized. We don't want to trigger on those.
@@ -118,6 +116,8 @@
       if (time_since_creation > kMinRunTimeMs)
         observation_complete_.Set();
     }
+    if (first_time_in_sync_ != -1)
+      sync_offset_ms_list_.push_back(stats.sync_offset_ms);
   }
 
   void set_receive_stream(VideoReceiveStream* receive_stream) {
@@ -533,7 +533,16 @@
     explicit BitrateObserver(bool using_min_transmit_bitrate)
         : EndToEndTest(kLongTimeoutMs),
           send_stream_(nullptr),
+          converged_(false),
           pad_to_min_bitrate_(using_min_transmit_bitrate),
+          min_acceptable_bitrate_(using_min_transmit_bitrate
+                                      ? kMinAcceptableTransmitBitrate
+                                      : (kMaxEncodeBitrateKbps -
+                                         kAcceptableBitrateErrorMargin / 2)),
+          max_acceptable_bitrate_(using_min_transmit_bitrate
+                                      ? kMaxAcceptableTransmitBitrate
+                                      : (kMaxEncodeBitrateKbps +
+                                         kAcceptableBitrateErrorMargin / 2)),
           num_bitrate_observations_in_range_(0) {}
 
    private:
@@ -544,26 +553,16 @@
         RTC_DCHECK_EQ(1u, stats.substreams.size());
         int bitrate_kbps =
             stats.substreams.begin()->second.total_bitrate_bps / 1000;
-        if (bitrate_kbps > 0) {
-          bitrate_kbps_list.push_back(bitrate_kbps);
-          if (pad_to_min_bitrate_) {
-            if (bitrate_kbps > kMinAcceptableTransmitBitrate &&
-                bitrate_kbps < kMaxAcceptableTransmitBitrate) {
-              ++num_bitrate_observations_in_range_;
-            }
-          } else {
-            // Expect bitrate stats to roughly match the max encode bitrate.
-            if (bitrate_kbps > (kMaxEncodeBitrateKbps -
-                                kAcceptableBitrateErrorMargin / 2) &&
-                bitrate_kbps < (kMaxEncodeBitrateKbps +
-                                kAcceptableBitrateErrorMargin / 2)) {
-              ++num_bitrate_observations_in_range_;
-            }
-          }
+        if (bitrate_kbps > min_acceptable_bitrate_ &&
+            bitrate_kbps < max_acceptable_bitrate_) {
+          converged_ = true;
+          ++num_bitrate_observations_in_range_;
           if (num_bitrate_observations_in_range_ ==
               kNumBitrateObservationsInRange)
             observation_complete_.Set();
         }
+        if (converged_)
+          bitrate_kbps_list_.push_back(bitrate_kbps);
       }
       return SEND_PACKET;
     }
@@ -591,14 +590,17 @@
           "bitrate_stats_",
           (pad_to_min_bitrate_ ? "min_transmit_bitrate"
                                : "without_min_transmit_bitrate"),
-          "bitrate_kbps", test::ValuesToString(bitrate_kbps_list), "kbps",
+          "bitrate_kbps", test::ValuesToString(bitrate_kbps_list_), "kbps",
           false);
     }
 
     VideoSendStream* send_stream_;
+    bool converged_;
     const bool pad_to_min_bitrate_;
+    const int min_acceptable_bitrate_;
+    const int max_acceptable_bitrate_;
     int num_bitrate_observations_in_range_;
-    std::vector<size_t> bitrate_kbps_list;
+    std::vector<size_t> bitrate_kbps_list_;
   } test(pad_to_min_bitrate);
 
   fake_encoder_.SetMaxBitrate(kMaxEncodeBitrateKbps);