Adding new WebRTC.Video.GenericDecoder histograms

Goal is to be able to get an improved overview of the distribution
of the total delay.

Bug: None
Change-Id: I0dced53eafd1fb09941590f3706480066c52419b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/317260
Commit-Queue: Henrik Andreassson <henrika@webrtc.org>
Reviewed-by: Johannes Kron <kron@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40597}
diff --git a/modules/video_coding/generic_decoder.cc b/modules/video_coding/generic_decoder.cc
index 4c0e381..e3ce413 100644
--- a/modules/video_coding/generic_decoder.cc
+++ b/modules/video_coding/generic_decoder.cc
@@ -28,6 +28,7 @@
 #include "rtc_base/string_encode.h"
 #include "rtc_base/trace_event.h"
 #include "system_wrappers/include/clock.h"
+#include "system_wrappers/include/metrics.h"
 
 namespace webrtc {
 
@@ -186,6 +187,15 @@
         frame_info->timing.network_timestamp_ms - sender_delta_ms;
     timing_frame_info.network2_timestamp_ms =
         frame_info->timing.network2_timestamp_ms - sender_delta_ms;
+    RTC_HISTOGRAM_COUNTS_1000(
+        "WebRTC.Video.GenericDecoder.CaptureToEncodeDelay",
+        timing_frame_info.encode_start_ms - timing_frame_info.capture_time_ms);
+    RTC_HISTOGRAM_COUNTS_1000(
+        "WebRTC.Video.GenericDecoder.EncodeDelay",
+        timing_frame_info.encode_finish_ms - timing_frame_info.encode_start_ms);
+    RTC_HISTOGRAM_COUNTS_1000(
+        "WebRTC.Video.GenericDecoder.PacerAndPacketizationDelay",
+        timing_frame_info.pacer_exit_ms - timing_frame_info.encode_finish_ms);
   }
 
   timing_frame_info.flags = frame_info->timing.flags;
@@ -196,6 +206,15 @@
   timing_frame_info.rtp_timestamp = decodedImage.timestamp();
   timing_frame_info.receive_start_ms = frame_info->timing.receive_start_ms;
   timing_frame_info.receive_finish_ms = frame_info->timing.receive_finish_ms;
+  RTC_HISTOGRAM_COUNTS_1000(
+      "WebRTC.Video.GenericDecoder.PacketReceiveDelay",
+      timing_frame_info.receive_finish_ms - timing_frame_info.receive_start_ms);
+  RTC_HISTOGRAM_COUNTS_1000(
+      "WebRTC.Video.GenericDecoder.JitterBufferDelay",
+      timing_frame_info.decode_start_ms - timing_frame_info.receive_finish_ms);
+  RTC_HISTOGRAM_COUNTS_1000(
+      "WebRTC.Video.GenericDecoder.DecodeDelay",
+      timing_frame_info.decode_finish_ms - timing_frame_info.decode_start_ms);
   _timing->SetTimingFrameInfo(timing_frame_info);
 
   decodedImage.set_timestamp_us(