From f02212b8b0bb81a5787e77ddb43b3d19f64251e0 Mon Sep 17 00:00:00 2001 From: Artem Titov Date: Fri, 26 Aug 2022 11:51:03 +0200 Subject: [PATCH] [DVQA] Make entities loggable Make StreamCodecInfo and FrameDropPhase generally loggable Bug: b/243855428 Change-Id: Id8424596f82d1489fe6f7deaf0670e6960375df0 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/273103 Commit-Queue: Artem Titov Reviewed-by: Mirko Bonadei Commit-Queue: Mirko Bonadei Auto-Submit: Artem Titov Cr-Commit-Position: refs/heads/main@{#37916} --- .../video/default_video_quality_analyzer.cc | 15 ------- ...t_video_quality_analyzer_shared_objects.cc | 42 +++++++++++++++++++ ...lt_video_quality_analyzer_shared_objects.h | 12 ++++++ 3 files changed, 54 insertions(+), 15 deletions(-) diff --git a/test/pc/e2e/analyzer/video/default_video_quality_analyzer.cc b/test/pc/e2e/analyzer/video/default_video_quality_analyzer.cc index 8cf9e7a011..81231d71c7 100644 --- a/test/pc/e2e/analyzer/video/default_video_quality_analyzer.cc +++ b/test/pc/e2e/analyzer/video/default_video_quality_analyzer.cc @@ -52,21 +52,6 @@ void LogFrameCounters(const std::string& name, const FrameCounters& counters) { RTC_LOG(LS_INFO) << "[" << name << "] Dropped : " << counters.dropped; } -absl::string_view ToString(FrameDropPhase phase) { - switch (phase) { - case FrameDropPhase::kBeforeEncoder: - return "kBeforeEncoder"; - case FrameDropPhase::kByEncoder: - return "kByEncoder"; - case FrameDropPhase::kTransport: - return "kTransport"; - case FrameDropPhase::kAfterDecoder: - return "kAfterDecoder"; - case FrameDropPhase::kLastValue: - RTC_CHECK(false) << "FrameDropPhase::kLastValue mustn't be used"; - } -} - void LogStreamInternalStats(const std::string& name, const StreamStats& stats, Timestamp start_time) { diff --git a/test/pc/e2e/analyzer/video/default_video_quality_analyzer_shared_objects.cc b/test/pc/e2e/analyzer/video/default_video_quality_analyzer_shared_objects.cc index cc17429072..732ec217b8 100644 --- a/test/pc/e2e/analyzer/video/default_video_quality_analyzer_shared_objects.cc +++ b/test/pc/e2e/analyzer/video/default_video_quality_analyzer_shared_objects.cc @@ -11,6 +11,8 @@ #include #include +#include +#include #include "api/units/timestamp.h" #include "rtc_base/checks.h" @@ -23,6 +25,46 @@ constexpr int kMicrosPerSecond = 1000000; } // namespace +std::string StreamCodecInfo::ToString() const { + rtc::StringBuilder out; + out << "{codec_name=" << codec_name << "; first_frame_id=" << first_frame_id + << "; last_frame_id=" << last_frame_id + << "; switched_on_at=" << webrtc::ToString(switched_on_at) + << "; switched_from_at=" << webrtc::ToString(switched_from_at) << " }"; + return out.str(); +} + +std::ostream& operator<<(std::ostream& os, const StreamCodecInfo& state) { + return os << state.ToString(); +} + +rtc::StringBuilder& operator<<(rtc::StringBuilder& sb, + const StreamCodecInfo& state) { + return sb << state.ToString(); +} + +std::string ToString(FrameDropPhase phase) { + switch (phase) { + case FrameDropPhase::kBeforeEncoder: + return "kBeforeEncoder"; + case FrameDropPhase::kByEncoder: + return "kByEncoder"; + case FrameDropPhase::kTransport: + return "kTransport"; + case FrameDropPhase::kAfterDecoder: + return "kAfterDecoder"; + case FrameDropPhase::kLastValue: + return "kLastValue"; + } +} + +std::ostream& operator<<(std::ostream& os, FrameDropPhase phase) { + return os << ToString(phase); +} +rtc::StringBuilder& operator<<(rtc::StringBuilder& sb, FrameDropPhase phase) { + return sb << ToString(phase); +} + void SamplesRateCounter::AddEvent(Timestamp event_time) { if (event_first_time_.IsMinusInfinity()) { event_first_time_ = event_time; diff --git a/test/pc/e2e/analyzer/video/default_video_quality_analyzer_shared_objects.h b/test/pc/e2e/analyzer/video/default_video_quality_analyzer_shared_objects.h index 8f0afd36f7..3b2897bf9d 100644 --- a/test/pc/e2e/analyzer/video/default_video_quality_analyzer_shared_objects.h +++ b/test/pc/e2e/analyzer/video/default_video_quality_analyzer_shared_objects.h @@ -13,6 +13,7 @@ #include #include +#include #include #include #include @@ -21,6 +22,7 @@ #include "absl/types/optional.h" #include "api/numerics/samples_stats_counter.h" #include "api/units/timestamp.h" +#include "rtc_base/strings/string_builder.h" namespace webrtc { @@ -77,8 +79,14 @@ struct StreamCodecInfo { Timestamp switched_on_at = Timestamp::PlusInfinity(); // Timestamp when this codec was used last time. Timestamp switched_from_at = Timestamp::PlusInfinity(); + + std::string ToString() const; }; +std::ostream& operator<<(std::ostream& os, const StreamCodecInfo& state); +rtc::StringBuilder& operator<<(rtc::StringBuilder& sb, + const StreamCodecInfo& state); + // Represents phases where video frame can be dropped and such drop will be // detected by analyzer. enum class FrameDropPhase : int { @@ -90,6 +98,10 @@ enum class FrameDropPhase : int { kLastValue }; +std::string ToString(FrameDropPhase phase); +std::ostream& operator<<(std::ostream& os, FrameDropPhase phase); +rtc::StringBuilder& operator<<(rtc::StringBuilder& sb, FrameDropPhase phase); + struct StreamStats { explicit StreamStats(Timestamp stream_started_time);