Do not call OnDecoderTiming before timing values are set.

Wait until first frame is decoded to avoid include zeros in stats.

BUG=b/32659204

Review-Url: https://codereview.webrtc.org/2582313002
Cr-Commit-Position: refs/heads/master@{#15752}
diff --git a/webrtc/modules/video_coding/timing.cc b/webrtc/modules/video_coding/timing.cc
index d41e530..f30976f 100644
--- a/webrtc/modules/video_coding/timing.cc
+++ b/webrtc/modules/video_coding/timing.cc
@@ -288,7 +288,7 @@
                   jitter_delay_ms_ + RequiredDecodeTimeMs() + render_delay_ms_);
 }
 
-void VCMTiming::GetTimings(int* decode_ms,
+bool VCMTiming::GetTimings(int* decode_ms,
                            int* max_decode_ms,
                            int* current_delay_ms,
                            int* target_delay_ms,
@@ -303,6 +303,7 @@
   *jitter_buffer_ms = jitter_delay_ms_;
   *min_playout_delay_ms = min_playout_delay_ms_;
   *render_delay_ms = render_delay_ms_;
+  return (num_decoded_frames_ > 0);
 }
 
 }  // namespace webrtc
diff --git a/webrtc/modules/video_coding/timing.h b/webrtc/modules/video_coding/timing.h
index 85a3dd0..e7d2b1f 100644
--- a/webrtc/modules/video_coding/timing.h
+++ b/webrtc/modules/video_coding/timing.h
@@ -92,8 +92,9 @@
   // certain amount of processing time.
   bool EnoughTimeToDecode(uint32_t available_processing_time_ms) const;
 
-  // Return current timing information.
-  void GetTimings(int* decode_ms,
+  // Return current timing information. Returns true if the first frame has been
+  // decoded, false otherwise.
+  bool GetTimings(int* decode_ms,
                   int* max_decode_ms,
                   int* current_delay_ms,
                   int* target_delay_ms,
diff --git a/webrtc/modules/video_coding/video_receiver.cc b/webrtc/modules/video_coding/video_receiver.cc
index a7fea85..129a1b5 100644
--- a/webrtc/modules/video_coding/video_receiver.cc
+++ b/webrtc/modules/video_coding/video_receiver.cc
@@ -74,12 +74,13 @@
       int jitter_buffer_ms;
       int min_playout_delay_ms;
       int render_delay_ms;
-      _timing->GetTimings(&decode_ms, &max_decode_ms, &current_delay_ms,
-                          &target_delay_ms, &jitter_buffer_ms,
-                          &min_playout_delay_ms, &render_delay_ms);
-      _decoderTimingCallback->OnDecoderTiming(
-          decode_ms, max_decode_ms, current_delay_ms, target_delay_ms,
-          jitter_buffer_ms, min_playout_delay_ms, render_delay_ms);
+      if (_timing->GetTimings(&decode_ms, &max_decode_ms, &current_delay_ms,
+                              &target_delay_ms, &jitter_buffer_ms,
+                              &min_playout_delay_ms, &render_delay_ms)) {
+        _decoderTimingCallback->OnDecoderTiming(
+            decode_ms, max_decode_ms, current_delay_ms, target_delay_ms,
+            jitter_buffer_ms, min_playout_delay_ms, render_delay_ms);
+      }
     }
   }