| Index: media/base/composite_filter.h
|
| ===================================================================
|
| --- media/base/composite_filter.h (revision 69961)
|
| +++ media/base/composite_filter.h (working copy)
|
| @@ -1,165 +0,0 @@
|
| -// 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.
|
| -
|
| -#ifndef MEDIA_BASE_COMPOSITE_FILTER_H_
|
| -#define MEDIA_BASE_COMPOSITE_FILTER_H_
|
| -
|
| -#include "base/thread.h"
|
| -#include "media/base/filter_host.h"
|
| -#include "media/base/filters.h"
|
| -
|
| -namespace media {
|
| -
|
| -class CompositeFilter : public Filter {
|
| - public:
|
| - typedef base::Thread* (*ThreadFactoryFunction)(const char* thread_name);
|
| -
|
| - CompositeFilter(MessageLoop* message_loop);
|
| -
|
| - // Constructor that allows the default thread creation strategy to be
|
| - // overridden.
|
| - CompositeFilter(MessageLoop* message_loop,
|
| - ThreadFactoryFunction thread_factory);
|
| -
|
| - // Adds a filter to the composite. This is only allowed after set_host()
|
| - // is called and before the first state changing operation such as Play(),
|
| - // Flush(), Stop(), or Seek(). True is returned if the filter was successfully
|
| - // added to the composite. False is returned if the filter couldn't be added
|
| - // because the composite is in the wrong state or the filter needed a thread
|
| - // and the composite was unable to create one.
|
| - bool AddFilter(scoped_refptr<Filter> filter);
|
| -
|
| - // media::Filter methods.
|
| - virtual const char* major_mime_type() const;
|
| - virtual void set_host(FilterHost* host);
|
| - virtual FilterHost* host();
|
| - virtual bool requires_message_loop() const;
|
| - virtual const char* message_loop_name() const;
|
| - virtual void set_message_loop(MessageLoop* message_loop);
|
| - virtual MessageLoop* message_loop();
|
| - virtual void Play(FilterCallback* play_callback);
|
| - virtual void Pause(FilterCallback* pause_callback);
|
| - virtual void Flush(FilterCallback* flush_callback);
|
| - virtual void Stop(FilterCallback* stop_callback);
|
| - virtual void SetPlaybackRate(float playback_rate);
|
| - virtual void Seek(base::TimeDelta time, FilterCallback* seek_callback);
|
| - virtual void OnAudioRendererDisabled();
|
| -
|
| - protected:
|
| - virtual ~CompositeFilter();
|
| -
|
| - /// Default thread factory strategy.
|
| - static base::Thread* DefaultThreadFactory(const char* thread_name);
|
| -
|
| - void SetError(PipelineError error);
|
| -
|
| - private:
|
| - class FilterHostImpl;
|
| -
|
| - enum State {
|
| - kInvalid,
|
| - kCreated,
|
| - kPaused,
|
| - kPlayPending,
|
| - kStopWhilePlayPending,
|
| - kPlaying,
|
| - kPausePending,
|
| - kStopWhilePausePending,
|
| - kFlushPending,
|
| - kStopWhileFlushPending,
|
| - kSeekPending,
|
| - kStopWhileSeekPending,
|
| - kStopPending,
|
| - kStopped,
|
| - kError
|
| - };
|
| -
|
| - // Initialization method called by constructors.
|
| - void Init(MessageLoop* message_loop, ThreadFactoryFunction thread_factory);
|
| -
|
| - // Transition to a new state.
|
| - void ChangeState(State new_state);
|
| -
|
| - // Start calling filters in a sequence.
|
| - void StartSerialCallSequence();
|
| -
|
| - // Call filters in parallel.
|
| - void StartParallelCallSequence();
|
| -
|
| - // Call the filter based on the current value of state_.
|
| - void CallFilter(scoped_refptr<Filter>& filter, FilterCallback* callback);
|
| -
|
| - // Calls |callback_| and then clears the reference.
|
| - void DispatchPendingCallback();
|
| -
|
| - // Gets the state to transition to given |state|.
|
| - State GetNextState(State state) const;
|
| -
|
| - // Filter callback for a serial sequence.
|
| - void SerialCallback();
|
| -
|
| - // Filter callback for a parallel sequence.
|
| - void ParallelCallback();
|
| -
|
| - // Called when a parallel or serial call sequence completes.
|
| - void OnCallSequenceDone();
|
| -
|
| - // Helper function for sending an error to the FilterHost.
|
| - void SendErrorToHost(PipelineError error);
|
| -
|
| - // Helper function for handling errors during call sequences.
|
| - void HandleError(PipelineError error);
|
| -
|
| - // Creates a callback that can be called from any thread, but is guaranteed
|
| - // to call the specified method on the thread associated with this filter.
|
| - FilterCallback* NewThreadSafeCallback(void (CompositeFilter::*method)());
|
| -
|
| - // Helper function used by NewThreadSafeCallback() to make sure the
|
| - // method gets called on the right thread.
|
| - void OnCallback(MessageLoop* message_loop,
|
| - void (CompositeFilter::*method)());
|
| -
|
| - // Helper function that indicates whether SetError() calls can be forwarded
|
| - // to the host of this filter.
|
| - bool CanForwardError();
|
| -
|
| - // Vector of threads owned by the composite and used by filters in |filters_|.
|
| - typedef std::vector<base::Thread*> FilterThreadVector;
|
| - FilterThreadVector filter_threads_;
|
| -
|
| - // Vector of the filters added to the composite.
|
| - typedef std::vector<scoped_refptr<Filter> > FilterVector;
|
| - FilterVector filters_;
|
| -
|
| - // Factory function used to create filter threads.
|
| - ThreadFactoryFunction thread_factory_;
|
| -
|
| - // Callback for the pending request.
|
| - scoped_ptr<FilterCallback> callback_;
|
| -
|
| - // Time parameter for the pending Seek() request.
|
| - base::TimeDelta pending_seek_time_;
|
| -
|
| - // Current state of this filter.
|
| - State state_;
|
| -
|
| - // The index of the filter currently processing a request.
|
| - unsigned int sequence_index_;
|
| -
|
| - // Message loop passed into the constructor.
|
| - MessageLoop* message_loop_;
|
| -
|
| - // FilterHost implementation passed to Filters owned by this
|
| - // object.
|
| - scoped_ptr<FilterHostImpl> host_impl_;
|
| -
|
| - // Error passed in the last SetError() call.
|
| - PipelineError error_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(CompositeFilter);
|
| -};
|
| -
|
| -} // namespace media
|
| -
|
| -#endif // MEDIA_BASE_COMPOSITE_FILTER_H_
|
|
|