diff options
author | scherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-15 05:30:05 +0000 |
---|---|---|
committer | scherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-15 05:30:05 +0000 |
commit | b74dfad2682b7095396bad70a3b9e1d4a4dbbc88 (patch) | |
tree | 3a3e22576b7dc276483b6fa70e65cd27b153e2de /media/tools/player_x11/data_source_logger.cc | |
parent | 880568581a9e09e3b2adabc48fdb395ea0c45f50 (diff) | |
download | chromium_src-b74dfad2682b7095396bad70a3b9e1d4a4dbbc88.zip chromium_src-b74dfad2682b7095396bad70a3b9e1d4a4dbbc88.tar.gz chromium_src-b74dfad2682b7095396bad70a3b9e1d4a4dbbc88.tar.bz2 |
Add DataSource logging to player_x11.
We issue the same read patterns regardless of whether the file lives on disk or over the network. Logging all DataSource operations helps us spot patterns that cause additional round trips when accessed over HTTP.
DataSource logging can be enabled by passing --v=1 to player_x11. You can also force streaming read mode by passing --streaming to player_x11.
Review URL: https://chromiumcodereview.appspot.com/9378016
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@122051 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/tools/player_x11/data_source_logger.cc')
-rw-r--r-- | media/tools/player_x11/data_source_logger.cc | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/media/tools/player_x11/data_source_logger.cc b/media/tools/player_x11/data_source_logger.cc new file mode 100644 index 0000000..8e1df01 --- /dev/null +++ b/media/tools/player_x11/data_source_logger.cc @@ -0,0 +1,74 @@ +// 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 "base/bind.h" +#include "base/logging.h" +#include "media/tools/player_x11/data_source_logger.h" + +static void LogAndRunStopClosure(const base::Closure& closure) { + VLOG(1) << "Stop() finished"; + closure.Run(); +} + +static void LogAndRunReadCallback( + int64 position, size_t size, + const media::DataSource::ReadCallback& read_cb, size_t result) { + VLOG(1) << "Read(" << position << ", " << size << ") -> " << result; + read_cb.Run(result); +} + +DataSourceLogger::DataSourceLogger( + const scoped_refptr<media::DataSource>& data_source, + bool streaming) + : data_source_(data_source), + streaming_(streaming) { +} + +DataSourceLogger::~DataSourceLogger() {} + +void DataSourceLogger::set_host(media::DataSourceHost* host) { + VLOG(1) << "set_host(" << host << ")"; + data_source_->set_host(host); +} + +void DataSourceLogger::Stop(const base::Closure& closure) { + VLOG(1) << "Stop() started"; + data_source_->Stop(base::Bind(&LogAndRunStopClosure, closure)); +} + +void DataSourceLogger::Read( + int64 position, size_t size, uint8* data, + const media::DataSource::ReadCallback& read_cb) { + VLOG(1) << "Read(" << position << ", " << size << ")"; + data_source_->Read(position, size, data, base::Bind( + &LogAndRunReadCallback, position, size, read_cb)); +} + +bool DataSourceLogger::GetSize(int64* size_out) { + bool success = data_source_->GetSize(size_out); + VLOG(1) << "GetSize() -> " << (success ? "true" : "false") + << ", " << *size_out; + return success; +} + +bool DataSourceLogger::IsStreaming() { + if (streaming_) { + VLOG(1) << "IsStreaming() -> true (overridden)"; + return true; + } + + bool streaming = data_source_->IsStreaming(); + VLOG(1) << "IsStreaming() -> " << (streaming ? "true" : "false"); + return streaming; +} + +void DataSourceLogger::SetPreload(media::Preload preload) { + VLOG(1) << "SetPreload(" << preload << ")"; + data_source_->SetPreload(preload); +} + +void DataSourceLogger::SetBitrate(int bitrate) { + VLOG(1) << "SetBitrate(" << bitrate << ")"; + data_source_->SetBitrate(bitrate); +} |