1e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson// Use of this source code is governed by a BSD-style license that can be 3e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson// found in the LICENSE file. 4e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 5e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson#ifndef MEDIA_TOOLS_PLAYER_X11_DATA_SOURCE_LOGGER_H_ 6e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson#define MEDIA_TOOLS_PLAYER_X11_DATA_SOURCE_LOGGER_H_ 7e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 8e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson#include "media/base/data_source.h" 9e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 10e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson// Logs all DataSource operations to VLOG(1) for debugging purposes. 11e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonclass DataSourceLogger : public media::DataSource { 12e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public: 13e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson // Constructs a DataSourceLogger to log operations against another DataSource. 14e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson // 15e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson // |data_source| must be initialized in advance. 16e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson // 17e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson // |streaming| when set to true will override the implementation 18e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson // IsStreaming() to always return true, otherwise it will delegate to 19e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson // |data_source|. 20e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson DataSourceLogger(scoped_ptr<DataSource> data_source, 21e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson bool force_streaming); 22e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson virtual ~DataSourceLogger(); 23e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 24e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson // media::DataSource implementation. 25e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson virtual void Stop() OVERRIDE; 26e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson virtual void Read( 27e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson int64 position, int size, uint8* data, 28e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson const media::DataSource::ReadCB& read_cb) OVERRIDE; 29e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson virtual bool GetSize(int64* size_out) OVERRIDE; 30e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson virtual bool IsStreaming() OVERRIDE; 31e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson virtual void SetBitrate(int bitrate) OVERRIDE; 32e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 33e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson private: 34e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson scoped_ptr<media::DataSource> data_source_; 35e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson bool streaming_; 36e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 37e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson DISALLOW_COPY_AND_ASSIGN(DataSourceLogger); 38e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson}; 39e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 40e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson#endif // MEDIA_TOOLS_PLAYER_X11_DATA_SOURCE_LOGGER_H_ 41e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson