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}
This commit is contained in:
henrika 2023-08-22 13:42:32 +02:00 committed by WebRTC LUCI CQ
parent a586d4eccc
commit 6b7bbe2e33

View File

@ -28,6 +28,7 @@
#include "rtc_base/string_encode.h" #include "rtc_base/string_encode.h"
#include "rtc_base/trace_event.h" #include "rtc_base/trace_event.h"
#include "system_wrappers/include/clock.h" #include "system_wrappers/include/clock.h"
#include "system_wrappers/include/metrics.h"
namespace webrtc { namespace webrtc {
@ -186,6 +187,15 @@ void VCMDecodedFrameCallback::Decoded(VideoFrame& decodedImage,
frame_info->timing.network_timestamp_ms - sender_delta_ms; frame_info->timing.network_timestamp_ms - sender_delta_ms;
timing_frame_info.network2_timestamp_ms = timing_frame_info.network2_timestamp_ms =
frame_info->timing.network2_timestamp_ms - sender_delta_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; timing_frame_info.flags = frame_info->timing.flags;
@ -196,6 +206,15 @@ void VCMDecodedFrameCallback::Decoded(VideoFrame& decodedImage,
timing_frame_info.rtp_timestamp = decodedImage.timestamp(); timing_frame_info.rtp_timestamp = decodedImage.timestamp();
timing_frame_info.receive_start_ms = frame_info->timing.receive_start_ms; timing_frame_info.receive_start_ms = frame_info->timing.receive_start_ms;
timing_frame_info.receive_finish_ms = frame_info->timing.receive_finish_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); _timing->SetTimingFrameInfo(timing_frame_info);
decodedImage.set_timestamp_us( decodedImage.set_timestamp_us(