/* * Copyright (c) 2020 The WebRTC project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree.
*/
// Calculates spatial and temporal quality metrics and reports them to UMA // stats. class VideoQualityObserver { public: // Use either VideoQualityObserver::kBlockyQpThresholdVp8 or // VideoQualityObserver::kBlockyQpThresholdVp9.
VideoQualityObserver();
~VideoQualityObserver() = default;
private: enum Resolution {
Low = 0,
Medium = 1,
High = 2,
};
int64_t last_frame_rendered_ms_;
int64_t num_frames_rendered_;
int64_t first_frame_rendered_ms_;
int64_t last_frame_pixels_; bool is_last_frame_blocky_; // Decoded timestamp of the last delayed frame.
int64_t last_unfreeze_time_ms_;
rtc::MovingAverage render_interframe_delays_; double sum_squared_interframe_delays_secs_; // An inter-frame delay is counted as a freeze if it's significantly longer // than average inter-frame delay.
rtc::SampleCounter freezes_durations_;
rtc::SampleCounter pauses_durations_; // Time between freezes.
rtc::SampleCounter smooth_playback_durations_; // Counters for time spent in different resolutions. Time between each two // Consecutive frames is counted to bin corresponding to the first frame // resolution.
std::vector<int64_t> time_in_resolution_ms_; // Resolution of the last decoded frame. Resolution enum is used as an index.
Resolution current_resolution_; int num_resolution_downgrades_; // Similar to resolution, time spent in high-QP video.
int64_t time_in_blocky_video_ms_; bool is_paused_;
// Set of decoded frames with high QP value.
std::set<int64_t> blocky_frames_;
};
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.