#include "test/pc/e2e/analyzer/video/default_video_quality_analyzer_frames_comparator.h"
#include <algorithm>
#include <map>
#include <string>
#include <utility>
#include <vector>
#include "absl/types/optional.h"
#include "api/array_view.h"
#include "api/scoped_refptr.h"
#include "api/video/i420_buffer.h"
#include "api/video/video_frame_type.h"
#include "common_video/libyuv/include/webrtc_libyuv.h"
#include "rtc_base/checks.h"
#include "rtc_base/platform_thread.h"
#include "rtc_base/synchronization/mutex.h"
#include "rtc_tools/frame_analyzer/video_geometry_aligner.h"
#include "test/pc/e2e/analyzer/video/default_video_quality_analyzer_internal_shared_objects.h"
#include "test/pc/e2e/analyzer/video/default_video_quality_analyzer_shared_objects.h"
#include "test/pc/e2e/metric_metadata_keys.h"
namespace webrtc {
namespace {
SampleMetadataKey;
constexpr TimeDelta kFreezeThreshold = …;
constexpr int kMaxActiveComparisons = …;
constexpr int kMillisInSecond = …;
SamplesStatsCounter::StatsSample StatsSample(
double value,
Timestamp sampling_time,
std::map<std::string, std::string> metadata) { … }
SamplesStatsCounter::StatsSample StatsSample(
TimeDelta duration,
Timestamp sampling_time,
std::map<std::string, std::string> metadata) { … }
FrameComparison ValidateFrameComparison(FrameComparison comparison) { … }
}
void DefaultVideoQualityAnalyzerFramesComparator::Start(int max_threads_count) { … }
void DefaultVideoQualityAnalyzerFramesComparator::Stop(
const std::map<InternalStatsKey, Timestamp>& last_rendered_frame_times) { … }
void DefaultVideoQualityAnalyzerFramesComparator::EnsureStatsForStream(
size_t stream_index,
size_t sender_peer_index,
size_t peers_count,
Timestamp captured_time,
Timestamp start_time) { … }
void DefaultVideoQualityAnalyzerFramesComparator::RegisterParticipantInCall(
rtc::ArrayView<std::pair<InternalStatsKey, Timestamp>> stream_started_time,
Timestamp start_time) { … }
void DefaultVideoQualityAnalyzerFramesComparator::AddComparison(
InternalStatsKey stats_key,
absl::optional<VideoFrame> captured,
absl::optional<VideoFrame> rendered,
FrameComparisonType type,
FrameStats frame_stats) { … }
void DefaultVideoQualityAnalyzerFramesComparator::AddComparison(
InternalStatsKey stats_key,
int skipped_between_rendered,
absl::optional<VideoFrame> captured,
absl::optional<VideoFrame> rendered,
FrameComparisonType type,
FrameStats frame_stats) { … }
void DefaultVideoQualityAnalyzerFramesComparator::AddComparisonInternal(
InternalStatsKey stats_key,
absl::optional<VideoFrame> captured,
absl::optional<VideoFrame> rendered,
FrameComparisonType type,
FrameStats frame_stats) { … }
void DefaultVideoQualityAnalyzerFramesComparator::ProcessComparisons() { … }
void DefaultVideoQualityAnalyzerFramesComparator::ProcessComparison(
const FrameComparison& comparison) { … }
Timestamp DefaultVideoQualityAnalyzerFramesComparator::Now() { … }
}