Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(106)

Unified Diff: webrtc/video/send_statistics_proxy.cc

Issue 1523293002: Add histogram stats for average QP per frame for VP8 (for sent video streams): (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/video/send_statistics_proxy.h ('k') | webrtc/video/send_statistics_proxy_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/video/send_statistics_proxy.cc
diff --git a/webrtc/video/send_statistics_proxy.cc b/webrtc/video/send_statistics_proxy.cc
index 6407cdc62ea8e2257994ef90291f60c81ec42294..4a0645afbf9ef8682cb0037d1ba57caef3450065 100644
--- a/webrtc/video/send_statistics_proxy.cc
+++ b/webrtc/video/send_statistics_proxy.cc
@@ -13,6 +13,7 @@
#include <algorithm>
#include <cmath>
#include <map>
+#include <vector>
#include "webrtc/base/checks.h"
#include "webrtc/base/logging.h"
@@ -192,6 +193,25 @@ void SendStatisticsProxy::UmaSamplesContainer::UpdateHistograms(
max_delay_ms);
}
+ for (const auto& it : qp_counters_) {
+ int qp = it.second.vp8.Avg(kMinRequiredSamples);
+ if (qp != -1) {
+ int spatial_idx = it.first;
+ if (spatial_idx == -1) {
mflodman 2016/03/23 12:25:20 I think it would be nice to rather build a string
pbos-webrtc 2016/03/23 12:34:03 We can't since RTC_HISTOGRAMS_COUNTS requires the
åsapersson 2016/03/23 13:09:26 Right the name should not vary for a macro.
+ RTC_HISTOGRAMS_COUNTS_200(kIndex, uma_prefix_ + "Encoded.Qp.Vp8", qp);
+ } else if (spatial_idx == 0) {
+ RTC_HISTOGRAMS_COUNTS_200(kIndex, uma_prefix_ + "Encoded.Qp.Vp8.S0",
+ qp);
+ } else if (spatial_idx == 1) {
+ RTC_HISTOGRAMS_COUNTS_200(kIndex, uma_prefix_ + "Encoded.Qp.Vp8.S1",
+ qp);
+ } else if (spatial_idx == 2) {
+ RTC_HISTOGRAMS_COUNTS_200(kIndex, uma_prefix_ + "Encoded.Qp.Vp8.S2",
+ qp);
+ }
pbos-webrtc 2016/03/23 12:34:03 Should we have an else case here that should do so
åsapersson 2016/03/23 13:09:26 Added a warning...
+ }
+ }
+
if (first_rtcp_stats_time_ms_ != -1) {
int64_t elapsed_sec =
(clock_->TimeInMilliseconds() - first_rtcp_stats_time_ms_) / 1000;
@@ -426,6 +446,15 @@ void SendStatisticsProxy::OnSendEncodedImage(
}
}
+ if (encoded_image.qp_ != -1 && rtp_video_header != nullptr) {
+ if (rtp_video_header->codec == kRtpVideoVp8) {
mflodman 2016/03/23 12:25:20 This can be an additional condition in the if abov
pbos-webrtc 2016/03/23 12:34:03 I think so as well, if ssrcs.size() is 1 then we i
åsapersson 2016/03/23 13:09:26 -1 might be used when not using spatial layers for
åsapersson 2016/03/23 13:09:26 Done.
+ int spatial_idx = (config_.rtp.ssrcs.size() == 1)
+ ? -1
+ : static_cast<int>(simulcast_idx);
+ uma_container_->qp_counters_[spatial_idx].vp8.Add(encoded_image.qp_);
+ }
+ }
+
// TODO(asapersson): This is incorrect if simulcast layers are encoded on
// different threads and there is no guarantee that one frame of all layers
// are encoded before the next start.
« no previous file with comments | « webrtc/video/send_statistics_proxy.h ('k') | webrtc/video/send_statistics_proxy_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698