diff options
author | fischman@chromium.org <fischman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-22 06:48:05 +0000 |
---|---|---|
committer | fischman@chromium.org <fischman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-22 06:48:05 +0000 |
commit | 6caaacfec964079f6998696334fa62b68facbdba (patch) | |
tree | e1a65564a82041ce3dbc39203592faed6d86767b | |
parent | 03f3551bd3b63c014c7dd02d54293f3c616042c5 (diff) | |
download | chromium_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.cc | 24 | ||||
-rw-r--r-- | media/base/pipeline_status.h | 5 | ||||
-rw-r--r-- | media/filters/gpu_video_decoder.cc | 18 | ||||
-rw-r--r-- | media/media.gyp | 1 |
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', |