summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfischman@chromium.org <fischman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-22 06:48:05 +0000
committerfischman@chromium.org <fischman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-22 06:48:05 +0000
commit6caaacfec964079f6998696334fa62b68facbdba (patch)
treee1a65564a82041ce3dbc39203592faed6d86767b
parent03f3551bd3b63c014c7dd02d54293f3c616042c5 (diff)
downloadchromium_src-6caaacfec964079f6998696334fa62b68facbdba.zip
chromium_src-6caaacfec964079f6998696334fa62b68facbdba.tar.gz
chromium_src-6caaacfec964079f6998696334fa62b68facbdba.tar.bz2
Specialize reporting of Media.GpuVideoDecoderInitializeStatus UMA to comply with API requirements.
CreateUMAReportingPipelineCB encouraged abuse of the UMA API in that it accepted a "name" parameter even though the UMA_HISTOGRAM_* macros must always be called with the same name from each call-site. Replaced the only call-site with a specialized version to avoid future bugs. Review URL: https://codereview.chromium.org/81313002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@236701 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--media/base/pipeline_status.cc24
-rw-r--r--media/base/pipeline_status.h5
-rw-r--r--media/filters/gpu_video_decoder.cc18
-rw-r--r--media/media.gyp1
4 files changed, 15 insertions, 33 deletions
diff --git a/media/base/pipeline_status.cc b/media/base/pipeline_status.cc
deleted file mode 100644
index 6c08383..0000000
--- a/media/base/pipeline_status.cc
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "media/base/pipeline_status.h"
-
-#include "base/bind.h"
-#include "base/metrics/histogram.h"
-
-namespace media {
-
-static void ReportAndRun(const std::string& name,
- const PipelineStatusCB& cb,
- PipelineStatus status) {
- UMA_HISTOGRAM_ENUMERATION(name, status, PIPELINE_STATUS_MAX);
- cb.Run(status);
-}
-
-PipelineStatusCB CreateUMAReportingPipelineCB(const std::string& name,
- const PipelineStatusCB& cb) {
- return base::Bind(&ReportAndRun, name, cb);
-}
-
-} // namespace media
diff --git a/media/base/pipeline_status.h b/media/base/pipeline_status.h
index c208d01..a9f8585 100644
--- a/media/base/pipeline_status.h
+++ b/media/base/pipeline_status.h
@@ -37,11 +37,6 @@ enum PipelineStatus {
typedef base::Callback<void(PipelineStatus)> PipelineStatusCB;
-// Wrap & return a callback around |cb| which reports its argument to UMA under
-// the requested |name|.
-PipelineStatusCB CreateUMAReportingPipelineCB(const std::string& name,
- const PipelineStatusCB& cb);
-
// TODO(scherkus): this should be moved alongside host interface definitions.
struct PipelineStatistics {
PipelineStatistics()
diff --git a/media/filters/gpu_video_decoder.cc b/media/filters/gpu_video_decoder.cc
index bd44934..f9513cd 100644
--- a/media/filters/gpu_video_decoder.cc
+++ b/media/filters/gpu_video_decoder.cc
@@ -10,6 +10,7 @@
#include "base/callback_helpers.h"
#include "base/cpu.h"
#include "base/message_loop/message_loop.h"
+#include "base/metrics/histogram.h"
#include "base/stl_util.h"
#include "base/task_runner_util.h"
#include "media/base/bind_to_loop.h"
@@ -126,6 +127,17 @@ static bool IsCodedSizeSupported(const gfx::Size& coded_size) {
return os_large_video_support && hw_large_video_support;
}
+// Report |status| to UMA and run |cb| with it. This is super-specific to the
+// UMA stat reported because the UMA_HISTOGRAM_ENUMERATION API requires a
+// callsite to always be called with the same stat name (can't parameterize it).
+static void ReportGpuVideoDecoderInitializeStatusToUMAAndRunCB(
+ const PipelineStatusCB& cb,
+ PipelineStatus status) {
+ UMA_HISTOGRAM_ENUMERATION(
+ "Media.GpuVideoDecoderInitializeStatus", status, PIPELINE_STATUS_MAX);
+ cb.Run(status);
+}
+
void GpuVideoDecoder::Initialize(const VideoDecoderConfig& config,
const PipelineStatusCB& orig_status_cb) {
DVLOG(3) << "Initialize()";
@@ -135,9 +147,9 @@ void GpuVideoDecoder::Initialize(const VideoDecoderConfig& config,
weak_this_ = weak_factory_.GetWeakPtr();
- PipelineStatusCB status_cb = CreateUMAReportingPipelineCB(
- "Media.GpuVideoDecoderInitializeStatus",
- BindToCurrentLoop(orig_status_cb));
+ PipelineStatusCB status_cb =
+ base::Bind(&ReportGpuVideoDecoderInitializeStatusToUMAAndRunCB,
+ BindToCurrentLoop(orig_status_cb));
bool previously_initialized = config_.IsValidConfig();
#if !defined(OS_CHROMEOS) && !defined(OS_WIN)
diff --git a/media/media.gyp b/media/media.gyp
index 9bc4985..a762ea2 100644
--- a/media/media.gyp
+++ b/media/media.gyp
@@ -283,7 +283,6 @@
'base/multi_channel_resampler.h',
'base/pipeline.cc',
'base/pipeline.h',
- 'base/pipeline_status.cc',
'base/pipeline_status.h',
'base/ranges.cc',
'base/ranges.h',