summaryrefslogtreecommitdiffstats
path: root/media/base/pipeline_impl.h
diff options
context:
space:
mode:
Diffstat (limited to 'media/base/pipeline_impl.h')
-rw-r--r--media/base/pipeline_impl.h71
1 files changed, 28 insertions, 43 deletions
diff --git a/media/base/pipeline_impl.h b/media/base/pipeline_impl.h
index 5e348d5..a8e9e09 100644
--- a/media/base/pipeline_impl.h
+++ b/media/base/pipeline_impl.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2006-2009 The Chromium Authors. All rights reserved.
+// Copyright (c) 2008-2009 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.
@@ -32,29 +32,25 @@ class PipelineImpl : public Pipeline {
PipelineImpl();
virtual ~PipelineImpl();
- // Implementation of PipelineStatus methods.
+ // Pipeline implementation.
+ virtual bool Start(FilterFactory* filter_factory,
+ const std::string& uri,
+ PipelineCallback* start_callback);
+ virtual void Stop();
+ virtual void Seek(base::TimeDelta time, PipelineCallback* seek_callback);
virtual bool IsInitialized() const;
- virtual base::TimeDelta GetDuration() const;
+ virtual bool IsRendered(const std::string& major_mime_type) const;
+ virtual float GetPlaybackRate() const;
+ virtual void SetPlaybackRate(float playback_rate);
+ virtual float GetVolume() const;
+ virtual void SetVolume(float volume);
+ virtual base::TimeDelta GetTime() const;
virtual base::TimeDelta GetBufferedTime() const;
+ virtual base::TimeDelta GetDuration() const;
+ virtual int64 GetBufferedBytes() const;
virtual int64 GetTotalBytes() const;
- virtual int64 GetBufferedBytes()const;
virtual void GetVideoSize(size_t* width_out, size_t* height_out) const;
- virtual float GetVolume() const;
- virtual float GetPlaybackRate() const;
- virtual base::TimeDelta GetTime() const;
- virtual base::TimeDelta GetInterpolatedTime() const;
virtual PipelineError GetError() const;
- virtual bool IsRendered(const std::string& major_mime_type) const;
-
- // Implementation of Pipeline methods.
- virtual bool Start(FilterFactory* filter_factory,
- const std::string& url,
- PipelineCallback* start_callback);
- virtual void Stop();
- virtual void SetPlaybackRate(float rate);
- virtual void Seek(base::TimeDelta time,
- PipelineCallback* seek_callback);
- virtual void SetVolume(float volume);
private:
friend class FilterHostImpl;
@@ -117,7 +113,7 @@ class PipelineImpl : public Pipeline {
int64 total_bytes_;
// Lock used to serialize access for getter/setter methods.
- Lock lock_;
+ mutable Lock lock_;
// Video width and height. Set by a FilterHostImpl object on behalf
// of a filter. The video_size_access_lock_ is used to make sure access
@@ -142,10 +138,6 @@ class PipelineImpl : public Pipeline {
// audio renderer filter.
base::TimeDelta time_;
- // Internal system timer at last time the SetTime method was called. Used to
- // compute interpolated time.
- base::TimeTicks ticks_at_last_set_time_;
-
// Status of the pipeline. Initialized to PIPELINE_OK which indicates that
// the pipeline is operating correctly. Any other value indicates that the
// pipeline is stopped or is stopping. Clients can call the Stop method to
@@ -195,8 +187,8 @@ class PipelineThread : public base::RefCountedThreadSafe<PipelineThread>,
const std::string& url_media_source,
PipelineCallback* init_complete_callback);
void Stop();
- void SetPlaybackRate(float rate);
void Seek(base::TimeDelta time, PipelineCallback* seek_callback);
+ void SetPlaybackRate(float rate);
void SetVolume(float volume);
// Methods called by a FilterHostImpl object. These methods may be called
@@ -215,10 +207,6 @@ class PipelineThread : public base::RefCountedThreadSafe<PipelineThread>,
// If the pipeline is running a nested message loop, it will be exited.
void Error(PipelineError error);
- // Called by a FilterHostImpl on behalf of a filter that calls the
- // FilterHost::PostTask method.
- void PostTask(Task* task);
-
// Simple accessor used by the FilterHostImpl class to get access to the
// pipeline object.
PipelineImpl* pipeline() const { return pipeline_; }
@@ -231,6 +219,10 @@ class PipelineThread : public base::RefCountedThreadSafe<PipelineThread>,
PlatformThreadId thread_id() const { return thread_.thread_id(); }
private:
+ // Only allow ourselves to be destroyed via ref-counting.
+ friend class base::RefCountedThreadSafe<PipelineThread>;
+ virtual ~PipelineThread();
+
enum State {
kCreated,
kInitDataSource,
@@ -244,16 +236,6 @@ class PipelineThread : public base::RefCountedThreadSafe<PipelineThread>,
kError,
};
- // Implementation of MessageLoop::DestructionObserver. StartTask registers
- // this class as a destruction observer on the thread's message loop.
- // It is used to destroy the list of FilterHosts
- // (and thus destroy the associated filters) when all tasks have been
- // processed and the message loop has been quit.
- virtual void WillDestroyCurrentMessageLoop();
-
- friend class base::RefCountedThreadSafe<PipelineThread>;
- virtual ~PipelineThread();
-
// Simple method used to make sure the pipeline is running normally.
bool IsPipelineOk() { return PIPELINE_OK == pipeline_->error_; }
@@ -267,6 +249,13 @@ class PipelineThread : public base::RefCountedThreadSafe<PipelineThread>,
state_ == kInitVideoRenderer;
}
+ // Implementation of MessageLoop::DestructionObserver. StartTask registers
+ // this class as a destruction observer on the thread's message loop.
+ // It is used to destroy the list of FilterHosts
+ // (and thus destroy the associated filters) when all tasks have been
+ // processed and the message loop has been quit.
+ virtual void WillDestroyCurrentMessageLoop();
+
// The following "task" methods correspond to the public methods, but these
// methods are run as the result of posting a task to the PipelineThread's
// message loop.
@@ -280,14 +269,10 @@ class PipelineThread : public base::RefCountedThreadSafe<PipelineThread>,
void SetPlaybackRateTask(float rate);
void SeekTask(base::TimeDelta time, PipelineCallback* seek_callback);
void SetVolumeTask(float volume);
- void SetTimeTask();
// Internal methods used in the implementation of the pipeline thread. All
// of these methods are only called on the pipeline thread.
- // Calls the Stop method on every filter in the pipeline
- void StopFilters();
-
// The following template functions make use of the fact that media filter
// derived interfaces are self-describing in the sense that they all contain
// the static method filter_type() which returns a FilterType enum that