// Copyright (c) 2010 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. // FilterHost describes an interface for individual filters to access and // modify global playback information. Every filter is given a filter host // reference as part of initialization. // // This interface is intentionally verbose to cover the needs for the different // types of filters (see media/base/filters.h for filter definitionss). Filters // typically use parts of the interface that are relevant to their function. // For example, an audio renderer filter typically calls SetTime as it feeds // data to the audio hardware. A video renderer filter typically calls GetTime // to synchronize video with audio. An audio and video decoder would typically // have no need to call either SetTime or GetTime. #ifndef MEDIA_BASE_FILTER_HOST_H_ #define MEDIA_BASE_FILTER_HOST_H_ #include "media/base/filters.h" #include "media/base/pipeline.h" namespace media { class FilterHost { public: // Stops execution of the pipeline due to a fatal error. Do not call this // method with PIPELINE_OK. virtual void SetError(PipelineError error) = 0; // Gets the current time in microseconds. virtual base::TimeDelta GetTime() const = 0; // Gets the duration in microseconds. virtual base::TimeDelta GetDuration() const = 0; // Updates the current time. Other filters should poll to examine the updated // time. virtual void SetTime(base::TimeDelta time) = 0; // Get the duration of the media in microseconds. If the duration has not // been determined yet, then returns 0. virtual void SetDuration(base::TimeDelta duration) = 0; // Set the approximate amount of playable data buffered so far in micro- // seconds. virtual void SetBufferedTime(base::TimeDelta buffered_time) = 0; // Set the total size of the media file. virtual void SetTotalBytes(int64 total_bytes) = 0; // Sets the total number of bytes that are buffered on the client and ready to // be played. virtual void SetBufferedBytes(int64 buffered_bytes) = 0; // Sets the size of the video output in pixel units. virtual void SetVideoSize(size_t width, size_t height) = 0; // Sets the flag to indicate that we are doing streaming. virtual void SetStreaming(bool streaming) = 0; // Notifies that this filter has ended, typically only called by filter graph // endpoints such as renderers. virtual void NotifyEnded() = 0; // Sets the flag to indicate that our media is now loaded. virtual void SetLoaded(bool loaded) = 0; // Sets the flag to indicate current network activity. virtual void SetNetworkActivity(bool network_activity) = 0; // Disable audio renderer by calling OnAudioRendererDisabled() on all // filters. virtual void DisableAudioRenderer() = 0; // Sets the byte offset at which the client is requesting the video. virtual void SetCurrentReadPosition(int64 offset) = 0; // Gets the byte offset at which the client is requesting the video. virtual int64 GetCurrentReadPosition() = 0; protected: virtual ~FilterHost() {} }; } // namespace media #endif // MEDIA_BASE_FILTER_HOST_H_