diff options
Diffstat (limited to 'media/base')
-rw-r--r-- | media/base/filter_host.h | 3 | ||||
-rw-r--r-- | media/base/filters.h | 5 | ||||
-rw-r--r-- | media/base/mock_filter_host.h | 1 | ||||
-rw-r--r-- | media/base/mock_filters.h | 2 | ||||
-rw-r--r-- | media/base/pipeline.h | 4 | ||||
-rw-r--r-- | media/base/pipeline_impl.cc | 12 | ||||
-rw-r--r-- | media/base/pipeline_impl.h | 6 |
7 files changed, 30 insertions, 3 deletions
diff --git a/media/base/filter_host.h b/media/base/filter_host.h index 5e70797..65aeebb 100644 --- a/media/base/filter_host.h +++ b/media/base/filter_host.h @@ -53,6 +53,9 @@ class FilterHost { // 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; + protected: virtual ~FilterHost() {} }; diff --git a/media/base/filters.h b/media/base/filters.h index 8fdfe011..3faede5 100644 --- a/media/base/filters.h +++ b/media/base/filters.h @@ -174,8 +174,9 @@ class DataSource : public MediaFilter { // retrieved. virtual bool GetSize(int64* size_out) = 0; - // Returns true if this data source supports random seeking. - virtual bool IsSeekable() = 0; + // Returns true if we are performing streaming. In this case seeking is + // not possible. + virtual bool IsStreaming() = 0; }; diff --git a/media/base/mock_filter_host.h b/media/base/mock_filter_host.h index 8bab1b5..a7150c2 100644 --- a/media/base/mock_filter_host.h +++ b/media/base/mock_filter_host.h @@ -36,6 +36,7 @@ class MockFilterHost : public FilterHost { MOCK_METHOD1(SetTotalBytes, void(int64 total_bytes)); MOCK_METHOD1(SetBufferedBytes, void(int64 buffered_bytes)); MOCK_METHOD2(SetVideoSize, void(size_t width, size_t height)); + MOCK_METHOD1(SetStreaming, void(bool streamed)); private: DISALLOW_COPY_AND_ASSIGN(MockFilterHost); diff --git a/media/base/mock_filters.h b/media/base/mock_filters.h index 7954aa9..d3546c4 100644 --- a/media/base/mock_filters.h +++ b/media/base/mock_filters.h @@ -102,7 +102,7 @@ class MockDataSource : public DataSource { MOCK_METHOD4(Read, void(int64 position, size_t size, uint8* data, DataSource::ReadCallback* callback)); MOCK_METHOD1(GetSize, bool(int64* size_out)); - MOCK_METHOD0(IsSeekable, bool()); + MOCK_METHOD0(IsStreaming, bool()); protected: virtual ~MockDataSource() {} diff --git a/media/base/pipeline.h b/media/base/pipeline.h index c0286e5..b54d442 100644 --- a/media/base/pipeline.h +++ b/media/base/pipeline.h @@ -147,6 +147,10 @@ class Pipeline : public base::RefCountedThreadSafe<Pipeline> { // or the video has not been rendered yet, the width and height will be 0. virtual void GetVideoSize(size_t* width_out, size_t* height_out) const = 0; + // If this method returns true, that means the data source is a streaming + // data source. Seeking may not be possible. + virtual bool IsStreaming() const = 0; + // Gets the current error status for the pipeline. If the pipeline is // operating correctly, this will return OK. virtual PipelineError GetError() const = 0; diff --git a/media/base/pipeline_impl.cc b/media/base/pipeline_impl.cc index a09c2c7..10ab9a3 100644 --- a/media/base/pipeline_impl.cc +++ b/media/base/pipeline_impl.cc @@ -237,6 +237,11 @@ void PipelineImpl::GetVideoSize(size_t* width_out, size_t* height_out) const { *height_out = video_height_; } +bool PipelineImpl::IsStreaming() const { + AutoLock auto_lock(lock_); + return streaming_; +} + PipelineError PipelineImpl::GetError() const { AutoLock auto_lock(lock_); return error_; @@ -249,6 +254,7 @@ void PipelineImpl::ResetState() { duration_ = kZero; buffered_time_ = kZero; buffered_bytes_ = 0; + streaming_ = false; total_bytes_ = 0; video_width_ = 0; video_height_ = 0; @@ -343,6 +349,12 @@ void PipelineImpl::SetVideoSize(size_t width, size_t height) { video_height_ = height; } +void PipelineImpl::SetStreaming(bool streaming) { + DCHECK(IsRunning()); + AutoLock auto_lock(lock_); + streaming_ = streaming; +} + void PipelineImpl::InsertRenderedMimeType(const std::string& major_mime_type) { DCHECK(IsRunning()); AutoLock auto_lock(lock_); diff --git a/media/base/pipeline_impl.h b/media/base/pipeline_impl.h index 02c8bce..e83822d 100644 --- a/media/base/pipeline_impl.h +++ b/media/base/pipeline_impl.h @@ -81,6 +81,7 @@ class PipelineImpl : public Pipeline, public FilterHost { virtual int64 GetBufferedBytes() const; virtual int64 GetTotalBytes() const; virtual void GetVideoSize(size_t* width_out, size_t* height_out) const; + virtual bool IsStreaming() const; virtual PipelineError GetError() const; private: @@ -129,6 +130,7 @@ class PipelineImpl : public Pipeline, public FilterHost { virtual void SetTotalBytes(int64 total_bytes); virtual void SetBufferedBytes(int64 buffered_bytes); virtual void SetVideoSize(size_t width, size_t height); + virtual void SetStreaming(bool streamed); // Method called during initialization to insert a mime type into the // |rendered_mime_types_| set. @@ -267,6 +269,10 @@ class PipelineImpl : public Pipeline, public FilterHost { size_t video_width_; size_t video_height_; + // Sets by the filters to indicate whether the data source is a streaming + // source. + bool streaming_; + // Current volume level (from 0.0f to 1.0f). This value is set immediately // via SetVolume() and a task is dispatched on the message loop to notify the // filters. |