summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--media/base/composite_filter.cc37
-rw-r--r--media/base/data_source.cc30
-rw-r--r--media/base/data_source.h86
-rw-r--r--media/base/demuxer.cc4
-rw-r--r--media/base/demuxer.h45
-rw-r--r--media/base/filter_host.h28
-rw-r--r--media/base/filters.cc3
-rw-r--r--media/base/filters.h43
-rw-r--r--media/base/mock_data_source_host.cc13
-rw-r--r--media/base/mock_data_source_host.h32
-rw-r--r--media/base/mock_demuxer_host.cc13
-rw-r--r--media/base/mock_demuxer_host.h38
-rw-r--r--media/base/mock_filters.cc8
-rw-r--r--media/base/mock_filters.h7
-rw-r--r--media/base/pipeline.h4
-rw-r--r--media/base/pipeline_impl.cc9
-rw-r--r--media/base/pipeline_impl.h23
-rw-r--r--media/base/preload.h25
-rw-r--r--media/filters/chunk_demuxer.cc11
-rw-r--r--media/filters/chunk_demuxer.h2
-rw-r--r--media/filters/chunk_demuxer_unittest.cc31
-rw-r--r--media/filters/ffmpeg_demuxer.cc15
-rw-r--r--media/filters/ffmpeg_demuxer.h8
-rw-r--r--media/filters/ffmpeg_demuxer_unittest.cc4
-rw-r--r--media/filters/file_data_source.cc4
-rw-r--r--media/filters/file_data_source.h8
-rw-r--r--media/filters/file_data_source_unittest.cc16
-rw-r--r--media/media.gyp7
-rw-r--r--webkit/media/buffered_data_source.cc10
-rw-r--r--webkit/media/buffered_data_source.h9
-rw-r--r--webkit/media/buffered_data_source_unittest.cc4
-rw-r--r--webkit/media/simple_data_source.cc3
-rw-r--r--webkit/media/simple_data_source.h8
-rw-r--r--webkit/media/simple_data_source_unittest.cc4
-rw-r--r--webkit/media/web_data_source.h2
-rw-r--r--webkit/media/webmediaplayer_proxy.h4
36 files changed, 375 insertions, 223 deletions
diff --git a/media/base/composite_filter.cc b/media/base/composite_filter.cc
index 191280b..2b0166c 100644
--- a/media/base/composite_filter.cc
+++ b/media/base/composite_filter.cc
@@ -22,16 +22,9 @@ class CompositeFilter::FilterHostImpl : public FilterHost {
virtual base::TimeDelta GetTime() const OVERRIDE;
virtual base::TimeDelta GetDuration() const OVERRIDE;
virtual void SetTime(base::TimeDelta time) OVERRIDE;
- virtual void SetDuration(base::TimeDelta duration) OVERRIDE;
- virtual void SetBufferedTime(base::TimeDelta buffered_time) OVERRIDE;
- virtual void SetTotalBytes(int64 total_bytes) OVERRIDE;
- virtual void SetBufferedBytes(int64 buffered_bytes) OVERRIDE;
virtual void SetNaturalVideoSize(const gfx::Size& size) OVERRIDE;
virtual void NotifyEnded() OVERRIDE;
- virtual void SetNetworkActivity(bool network_activity) OVERRIDE;
virtual void DisableAudioRenderer() OVERRIDE;
- virtual void SetCurrentReadPosition(int64 offset) OVERRIDE;
- virtual int64 GetCurrentReadPosition() OVERRIDE;
private:
CompositeFilter* parent_;
@@ -507,23 +500,6 @@ void CompositeFilter::FilterHostImpl::SetTime(base::TimeDelta time) {
host_->SetTime(time);
}
-void CompositeFilter::FilterHostImpl::SetDuration(base::TimeDelta duration) {
- host_->SetDuration(duration);
-}
-
-void CompositeFilter::FilterHostImpl::SetBufferedTime(
- base::TimeDelta buffered_time) {
- host_->SetBufferedTime(buffered_time);
-}
-
-void CompositeFilter::FilterHostImpl::SetTotalBytes(int64 total_bytes) {
- host_->SetTotalBytes(total_bytes);
-}
-
-void CompositeFilter::FilterHostImpl::SetBufferedBytes(int64 buffered_bytes) {
- host_->SetBufferedBytes(buffered_bytes);
-}
-
void CompositeFilter::FilterHostImpl::SetNaturalVideoSize(
const gfx::Size& size) {
host_->SetNaturalVideoSize(size);
@@ -533,21 +509,8 @@ void CompositeFilter::FilterHostImpl::NotifyEnded() {
host_->NotifyEnded();
}
-void CompositeFilter::FilterHostImpl::SetNetworkActivity(
- bool network_activity) {
- host_->SetNetworkActivity(network_activity);
-}
-
void CompositeFilter::FilterHostImpl::DisableAudioRenderer() {
host_->DisableAudioRenderer();
}
-void CompositeFilter::FilterHostImpl::SetCurrentReadPosition(int64 offset) {
- host_->SetCurrentReadPosition(offset);
-}
-
-int64 CompositeFilter::FilterHostImpl::GetCurrentReadPosition() {
- return host_->GetCurrentReadPosition();
-}
-
} // namespace media
diff --git a/media/base/data_source.cc b/media/base/data_source.cc
new file mode 100644
index 0000000..f310af8
--- /dev/null
+++ b/media/base/data_source.cc
@@ -0,0 +1,30 @@
+// Copyright (c) 2011 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.
+
+#include "media/base/data_source.h"
+
+#include "base/logging.h"
+
+namespace media {
+
+// static
+const size_t DataSource::kReadError = static_cast<size_t>(-1);
+
+DataSourceHost::~DataSourceHost() {}
+
+DataSource::DataSource() : host_(NULL) {}
+
+DataSource::~DataSource() {}
+
+void DataSource::set_host(DataSourceHost* host) {
+ DCHECK(host);
+ DCHECK(!host_);
+ host_ = host;
+}
+
+void DataSource::SetPlaybackRate(float playback_rate) {}
+
+DataSourceHost* DataSource::host() { return host_; }
+
+} // namespace media
diff --git a/media/base/data_source.h b/media/base/data_source.h
new file mode 100644
index 0000000..9de147e
--- /dev/null
+++ b/media/base/data_source.h
@@ -0,0 +1,86 @@
+// Copyright (c) 2011 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_DATA_SOURCE_H_
+#define MEDIA_BASE_DATA_SOURCE_H_
+
+#include "base/callback.h"
+#include "base/memory/ref_counted.h"
+#include "media/base/media_export.h"
+#include "media/base/preload.h"
+
+namespace media {
+
+class MEDIA_EXPORT DataSourceHost {
+ public:
+ virtual ~DataSourceHost();
+
+ // 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 flag to indicate current network activity.
+ virtual void SetNetworkActivity(bool is_downloading_data) = 0;
+};
+
+class MEDIA_EXPORT DataSource : public base::RefCountedThreadSafe<DataSource> {
+ public:
+ typedef base::Callback<void(int64, int64)> StatusCallback;
+ typedef base::Callback<void(size_t)> ReadCallback;
+ static const size_t kReadError;
+
+ DataSource();
+
+ virtual void set_host(DataSourceHost* host);
+
+ // Reads |size| bytes from |position| into |data|. And when the read is done
+ // or failed, |read_callback| is called with the number of bytes read or
+ // kReadError in case of error.
+ // TODO(hclam): should change |size| to int! It makes the code so messy
+ // with size_t and int all over the place..
+ virtual void Read(int64 position, size_t size,
+ uint8* data,
+ const DataSource::ReadCallback& read_callback) = 0;
+
+ // Notifies the DataSource of a change in the current playback rate.
+ virtual void SetPlaybackRate(float playback_rate);
+
+ // Stops the DataSource. Once this is called all future Read() calls will
+ // return an error.
+ virtual void Stop(const base::Closure& callback) = 0;
+
+ // Returns true and the file size, false if the file size could not be
+ // retrieved.
+ virtual bool GetSize(int64* size_out) = 0;
+
+ // Returns true if we are performing streaming. In this case seeking is
+ // not possible.
+ virtual bool IsStreaming() = 0;
+
+ // Alert the DataSource that the video preload value has been changed.
+ virtual void SetPreload(Preload preload) = 0;
+
+ // Notify the DataSource of the bitrate of the media.
+ // Values of |bitrate| <= 0 are invalid and should be ignored.
+ virtual void SetBitrate(int bitrate) = 0;
+
+ protected:
+ // Only allow scoped_refptr<> to delete DataSource.
+ friend class base::RefCountedThreadSafe<DataSource>;
+ virtual ~DataSource();
+
+ DataSourceHost* host();
+
+ private:
+ DataSourceHost* host_;
+
+ DISALLOW_COPY_AND_ASSIGN(DataSource);
+};
+
+} // namespace media
+
+#endif // MEDIA_BASE_DATA_SOURCE_H_
diff --git a/media/base/demuxer.cc b/media/base/demuxer.cc
index 83bfce3..b6b2d18 100644
--- a/media/base/demuxer.cc
+++ b/media/base/demuxer.cc
@@ -8,11 +8,13 @@
namespace media {
+DemuxerHost::~DemuxerHost() {}
+
Demuxer::Demuxer() : host_(NULL) {}
Demuxer::~Demuxer() {}
-void Demuxer::set_host(FilterHost* host) {
+void Demuxer::set_host(DemuxerHost* host) {
DCHECK(host);
DCHECK(!host_);
host_ = host;
diff --git a/media/base/demuxer.h b/media/base/demuxer.h
index 972d250..f049f6f 100644
--- a/media/base/demuxer.h
+++ b/media/base/demuxer.h
@@ -6,28 +6,45 @@
#define MEDIA_BASE_DEMUXER_H_
#include "base/memory/ref_counted.h"
+#include "base/time.h"
+#include "media/base/data_source.h"
#include "media/base/demuxer_stream.h"
#include "media/base/media_export.h"
-
-// TODO(acolwell): Remove include once DataSource & Preload are moved
-// out of "media/base/filters.h" and Stop() is converted to use new callbacks.
-#include "media/base/filters.h"
#include "media/base/pipeline_status.h"
+#include "media/base/preload.h"
namespace media {
-class FilterHost;
+class MEDIA_EXPORT DemuxerHost : public DataSourceHost {
+ public:
+ virtual ~DemuxerHost();
+
+ // 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;
+
+ // Sets the byte offset at which the client is requesting the video.
+ virtual void SetCurrentReadPosition(int64 offset) = 0;
+
+ // Stops execution of the pipeline due to a fatal error. Do not call this
+ // method with PIPELINE_OK.
+ virtual void OnDemuxerError(PipelineStatus error) = 0;
+};
class MEDIA_EXPORT Demuxer
: public base::RefCountedThreadSafe<Demuxer> {
public:
+ Demuxer();
+
// Sets the private member |host_|. This is the first method called by
- // the FilterHost after a demuxer is created. The host holds a strong
+ // the DemuxerHost after a demuxer is created. The host holds a strong
// reference to the demuxer. The reference held by the host is guaranteed
// to be released before the host object is destroyed by the pipeline.
- //
- // TODO(acolwell): Change this to a narrow DemuxerHost interface.
- virtual void set_host(FilterHost* host);
+ virtual void set_host(DemuxerHost* host);
// The pipeline playback rate has been changed. Demuxers may implement this
// method if they need to respond to this call.
@@ -69,14 +86,18 @@ class MEDIA_EXPORT Demuxer
virtual bool IsSeekable() = 0;
protected:
- Demuxer();
- FilterHost* host() { return host_; }
+ // Only allow derived objects access to the DemuxerHost. This is
+ // kept out of the public interface because demuxers need to be
+ // aware of all calls made to the host object so they can insure
+ // the state presented to the host is always consistent with its own
+ // state.
+ DemuxerHost* host() { return host_; }
friend class base::RefCountedThreadSafe<Demuxer>;
virtual ~Demuxer();
private:
- FilterHost* host_;
+ DemuxerHost* host_;
DISALLOW_COPY_AND_ASSIGN(Demuxer);
};
diff --git a/media/base/filter_host.h b/media/base/filter_host.h
index 807fd5f..864bc99 100644
--- a/media/base/filter_host.h
+++ b/media/base/filter_host.h
@@ -28,31 +28,16 @@ class MEDIA_EXPORT FilterHost {
// method with PIPELINE_OK.
virtual void SetError(PipelineStatus error) = 0;
- // Gets the current time in microseconds.
+ // Gets the current time.
virtual base::TimeDelta GetTime() const = 0;
- // Gets the duration in microseconds.
+ // Gets the duration.
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 natural size of the video output in pixel units.
virtual void SetNaturalVideoSize(const gfx::Size& size) = 0;
@@ -60,19 +45,10 @@ class MEDIA_EXPORT FilterHost {
// endpoints such as renderers.
virtual void NotifyEnded() = 0;
- // Sets the flag to indicate current network activity.
- virtual void SetNetworkActivity(bool is_downloading_data) = 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() {}
};
diff --git a/media/base/filters.cc b/media/base/filters.cc
index ace7d4e..c137216 100644
--- a/media/base/filters.cc
+++ b/media/base/filters.cc
@@ -8,9 +8,6 @@
namespace media {
-// static
-const size_t DataSource::kReadError = static_cast<size_t>(-1);
-
void ResetAndRunCB(FilterStatusCB* cb, PipelineStatus status) {
DCHECK(!cb->is_null());
FilterStatusCB tmp_cb(*cb);
diff --git a/media/base/filters.h b/media/base/filters.h
index 5cd4cf8..654dae1 100644
--- a/media/base/filters.h
+++ b/media/base/filters.h
@@ -46,19 +46,6 @@ class FilterHost;
struct PipelineStatistics;
-// Used to specify video preload states. They are "hints" to the browser about
-// how aggressively the browser should load and buffer data.
-// Please see the HTML5 spec for the descriptions of these values:
-// http://www.w3.org/TR/html5/video.html#attr-media-preload
-//
-// Enum values must match the values in WebCore::MediaPlayer::Preload and
-// there will be assertions at compile time if they do not match.
-enum Preload {
- NONE,
- METADATA,
- AUTO,
-};
-
// Used for completing asynchronous methods.
typedef base::Callback<void(PipelineStatus)> FilterStatusCB;
@@ -133,36 +120,6 @@ class MEDIA_EXPORT Filter : public base::RefCountedThreadSafe<Filter> {
DISALLOW_COPY_AND_ASSIGN(Filter);
};
-class MEDIA_EXPORT DataSource : public Filter {
- public:
- typedef base::Callback<void(size_t)> ReadCallback;
- static const size_t kReadError;
-
- // Reads |size| bytes from |position| into |data|. And when the read is done
- // or failed, |read_callback| is called with the number of bytes read or
- // kReadError in case of error.
- // TODO(hclam): should change |size| to int! It makes the code so messy
- // with size_t and int all over the place..
- virtual void Read(int64 position, size_t size,
- uint8* data,
- const DataSource::ReadCallback& read_callback) = 0;
-
- // Returns true and the file size, false if the file size could not be
- // retrieved.
- virtual bool GetSize(int64* size_out) = 0;
-
- // Returns true if we are performing streaming. In this case seeking is
- // not possible.
- virtual bool IsStreaming() = 0;
-
- // Alert the DataSource that the video preload value has been changed.
- virtual void SetPreload(Preload preload) = 0;
-
- // Notify the DataSource of the bitrate of the media.
- // Values of |bitrate| <= 0 are invalid and should be ignored.
- virtual void SetBitrate(int bitrate) = 0;
-};
-
class MEDIA_EXPORT VideoDecoder : public Filter {
public:
// Initialize a VideoDecoder with the given DemuxerStream, executing the
diff --git a/media/base/mock_data_source_host.cc b/media/base/mock_data_source_host.cc
new file mode 100644
index 0000000..eff0b78
--- /dev/null
+++ b/media/base/mock_data_source_host.cc
@@ -0,0 +1,13 @@
+// Copyright (c) 2011 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.
+
+#include "media/base/mock_data_source_host.h"
+
+namespace media {
+
+MockDataSourceHost::MockDataSourceHost() {}
+
+MockDataSourceHost::~MockDataSourceHost() {}
+
+} // namespace media
diff --git a/media/base/mock_data_source_host.h b/media/base/mock_data_source_host.h
new file mode 100644
index 0000000..b569b77
--- /dev/null
+++ b/media/base/mock_data_source_host.h
@@ -0,0 +1,32 @@
+// Copyright (c) 2011 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_MOCK_DATA_SOURCE_HOST_H_
+#define MEDIA_BASE_MOCK_DATA_SOURCE_HOST_H_
+
+#include <string>
+
+#include "base/memory/scoped_ptr.h"
+#include "media/base/data_source.h"
+#include "testing/gmock/include/gmock/gmock.h"
+
+namespace media {
+
+class MockDataSourceHost : public DataSourceHost {
+ public:
+ MockDataSourceHost();
+ virtual ~MockDataSourceHost();
+
+ // DataSourceHost implementation.
+ MOCK_METHOD1(SetTotalBytes, void(int64 total_bytes));
+ MOCK_METHOD1(SetBufferedBytes, void(int64 buffered_bytes));
+ MOCK_METHOD1(SetNetworkActivity, void(bool network_activity));
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(MockDataSourceHost);
+};
+
+} // namespace media
+
+#endif // MEDIA_BASE_MOCK_DATA_SOURCE_HOST_H_
diff --git a/media/base/mock_demuxer_host.cc b/media/base/mock_demuxer_host.cc
new file mode 100644
index 0000000..100787f
--- /dev/null
+++ b/media/base/mock_demuxer_host.cc
@@ -0,0 +1,13 @@
+// Copyright (c) 2011 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.
+
+#include "media/base/mock_demuxer_host.h"
+
+namespace media {
+
+MockDemuxerHost::MockDemuxerHost() {}
+
+MockDemuxerHost::~MockDemuxerHost() {}
+
+} // namespace media
diff --git a/media/base/mock_demuxer_host.h b/media/base/mock_demuxer_host.h
new file mode 100644
index 0000000..ae86473
--- /dev/null
+++ b/media/base/mock_demuxer_host.h
@@ -0,0 +1,38 @@
+// Copyright (c) 2011 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_MOCK_DEMUXER_HOST_H_
+#define MEDIA_BASE_MOCK_DEMUXER_HOST_H_
+
+#include <string>
+
+#include "base/memory/scoped_ptr.h"
+#include "media/base/demuxer.h"
+#include "testing/gmock/include/gmock/gmock.h"
+
+namespace media {
+
+class MockDemuxerHost : public DemuxerHost {
+ public:
+ MockDemuxerHost();
+ virtual ~MockDemuxerHost();
+
+ // DataSourceHost implementation.
+ MOCK_METHOD1(SetTotalBytes, void(int64 total_bytes));
+ MOCK_METHOD1(SetBufferedBytes, void(int64 buffered_bytes));
+ MOCK_METHOD1(SetNetworkActivity, void(bool network_activity));
+
+ // DemuxerHost implementation.
+ MOCK_METHOD1(OnDemuxerError, void(PipelineStatus error));
+ MOCK_METHOD1(SetDuration, void(base::TimeDelta duration));
+ MOCK_METHOD1(SetBufferedTime, void(base::TimeDelta buffered_time));
+ MOCK_METHOD1(SetCurrentReadPosition, void(int64 offset));
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(MockDemuxerHost);
+};
+
+} // namespace media
+
+#endif // MEDIA_BASE_MOCK_DEMUXER_HOST_H_
diff --git a/media/base/mock_filters.cc b/media/base/mock_filters.cc
index d398448..a406620 100644
--- a/media/base/mock_filters.cc
+++ b/media/base/mock_filters.cc
@@ -20,8 +20,8 @@ MockDataSource::MockDataSource()
MockDataSource::~MockDataSource() {}
-void MockDataSource::set_host(FilterHost* filter_host) {
- Filter::set_host(filter_host);
+void MockDataSource::set_host(DataSourceHost* data_source_host) {
+ DataSource::set_host(data_source_host);
if (total_bytes_ > 0)
host()->SetTotalBytes(total_bytes_);
@@ -74,8 +74,8 @@ MockDemuxer::MockDemuxer()
MockDemuxer::~MockDemuxer() {}
-void MockDemuxer::set_host(FilterHost* filter_host) {
- Demuxer::set_host(filter_host);
+void MockDemuxer::set_host(DemuxerHost* demuxer_host) {
+ Demuxer::set_host(demuxer_host);
if (total_bytes_ > 0)
host()->SetTotalBytes(total_bytes_);
diff --git a/media/base/mock_filters.h b/media/base/mock_filters.h
index 28817e9..b3758f2 100644
--- a/media/base/mock_filters.h
+++ b/media/base/mock_filters.h
@@ -72,8 +72,7 @@ class MockDataSource : public DataSource {
public:
MockDataSource();
- // Filter implementation.
- virtual void set_host(FilterHost* host);
+ virtual void set_host(DataSourceHost* data_source_host);
MOCK_METHOD1(Stop, void(const base::Closure& callback));
MOCK_METHOD1(SetPlaybackRate, void(float playback_rate));
@@ -105,8 +104,8 @@ class MockDataSource : public DataSource {
class MockDemuxer : public Demuxer {
public:
MockDemuxer();
- // Filter implementation.
- virtual void set_host(FilterHost* host);
+
+ virtual void set_host(DemuxerHost* demuxer_host);
MOCK_METHOD1(Stop, void(const base::Closure& callback));
MOCK_METHOD1(SetPlaybackRate, void(float playback_rate));
MOCK_METHOD1(SetPreload, void(Preload preload));
diff --git a/media/base/pipeline.h b/media/base/pipeline.h
index 1534ea5..cc38c4b 100644
--- a/media/base/pipeline.h
+++ b/media/base/pipeline.h
@@ -11,8 +11,10 @@
#include <string>
-#include "media/base/filters.h"
+#include "media/base/media_export.h"
#include "media/base/pipeline_status.h"
+#include "media/base/preload.h"
+#include "ui/gfx/size.h"
namespace base {
class TimeDelta;
diff --git a/media/base/pipeline_impl.cc b/media/base/pipeline_impl.cc
index aa5ac3b..f4d8774 100644
--- a/media/base/pipeline_impl.cc
+++ b/media/base/pipeline_impl.cc
@@ -340,11 +340,6 @@ void PipelineImpl::SetCurrentReadPosition(int64 offset) {
current_bytes_ = offset;
}
-int64 PipelineImpl::GetCurrentReadPosition() {
- base::AutoLock auto_lock(lock_);
- return current_bytes_;
-}
-
void PipelineImpl::ResetState() {
base::AutoLock auto_lock(lock_);
const base::TimeDelta kZero;
@@ -457,6 +452,10 @@ PipelineImpl::State PipelineImpl::FindNextState(State current) {
}
}
+void PipelineImpl::OnDemuxerError(PipelineStatus error) {
+ SetError(error);
+}
+
void PipelineImpl::SetError(PipelineStatus error) {
DCHECK(IsRunning());
DCHECK_NE(PIPELINE_OK, error);
diff --git a/media/base/pipeline_impl.h b/media/base/pipeline_impl.h
index 9426688..be55291 100644
--- a/media/base/pipeline_impl.h
+++ b/media/base/pipeline_impl.h
@@ -96,7 +96,10 @@ class MEDIA_EXPORT PipelineStatusNotification {
// If any error ever happens, this object will transition to the "Error" state
// from any state. If Stop() is ever called, this object will transition to
// "Stopped" state.
-class MEDIA_EXPORT PipelineImpl : public Pipeline, public FilterHost {
+class MEDIA_EXPORT PipelineImpl
+ : public Pipeline,
+ public FilterHost,
+ public DemuxerHost {
public:
explicit PipelineImpl(MessageLoop* message_loop, MediaLog* media_log);
@@ -190,21 +193,25 @@ class MEDIA_EXPORT PipelineImpl : public Pipeline, public FilterHost {
// Given the current state, returns the next state.
State FindNextState(State current);
+ // DataSourceHost (by way of DemuxerHost) implementation.
+ virtual void SetTotalBytes(int64 total_bytes) OVERRIDE;
+ virtual void SetBufferedBytes(int64 buffered_bytes) OVERRIDE;
+ virtual void SetNetworkActivity(bool is_downloading_data) OVERRIDE;
+
+ // DemuxerHost implementaion.
+ virtual void SetDuration(base::TimeDelta duration) OVERRIDE;
+ virtual void SetBufferedTime(base::TimeDelta buffered_time) OVERRIDE;
+ virtual void SetCurrentReadPosition(int64 offset) OVERRIDE;
+ virtual void OnDemuxerError(PipelineStatus error) OVERRIDE;
+
// FilterHost implementation.
virtual void SetError(PipelineStatus error) OVERRIDE;
virtual base::TimeDelta GetTime() const OVERRIDE;
virtual base::TimeDelta GetDuration() const OVERRIDE;
virtual void SetTime(base::TimeDelta time) OVERRIDE;
- virtual void SetDuration(base::TimeDelta duration) OVERRIDE;
- virtual void SetBufferedTime(base::TimeDelta buffered_time) OVERRIDE;
- virtual void SetTotalBytes(int64 total_bytes) OVERRIDE;
- virtual void SetBufferedBytes(int64 buffered_bytes) OVERRIDE;
virtual void SetNaturalVideoSize(const gfx::Size& size) OVERRIDE;
- virtual void SetNetworkActivity(bool is_downloading_data) OVERRIDE;
virtual void NotifyEnded() OVERRIDE;
virtual void DisableAudioRenderer() OVERRIDE;
- virtual void SetCurrentReadPosition(int64 offset) OVERRIDE;
- virtual int64 GetCurrentReadPosition() OVERRIDE;
// Callbacks executed by filters upon completing initialization.
void OnFilterInitialize(PipelineStatus status);
diff --git a/media/base/preload.h b/media/base/preload.h
new file mode 100644
index 0000000..136e84c
--- /dev/null
+++ b/media/base/preload.h
@@ -0,0 +1,25 @@
+// Copyright (c) 2011 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_PRELOAD_H_
+#define MEDIA_BASE_PRELOAD_H_
+
+namespace media {
+
+// Used to specify video preload states. They are "hints" to the browser about
+// how aggressively the browser should load and buffer data.
+// Please see the HTML5 spec for the descriptions of these values:
+// http://www.w3.org/TR/html5/video.html#attr-media-preload
+//
+// Enum values must match the values in WebCore::MediaPlayer::Preload and
+// there will be assertions at compile time if they do not match.
+enum Preload {
+ NONE,
+ METADATA,
+ AUTO,
+};
+
+} // namespace media
+
+#endif // MEDIA_BASE_PRELOAD_H_
diff --git a/media/filters/chunk_demuxer.cc b/media/filters/chunk_demuxer.cc
index f81b80f..cda484b 100644
--- a/media/filters/chunk_demuxer.cc
+++ b/media/filters/chunk_demuxer.cc
@@ -12,7 +12,6 @@
#include "base/logging.h"
#include "base/message_loop.h"
#include "media/base/audio_decoder_config.h"
-#include "media/base/filter_host.h"
#include "media/base/data_buffer.h"
#include "media/base/video_decoder_config.h"
#include "media/ffmpeg/ffmpeg_common.h"
@@ -323,11 +322,11 @@ void ChunkDemuxer::Init(const PipelineStatusCB& cb) {
client_->DemuxerOpened(this);
}
-void ChunkDemuxer::set_host(FilterHost* filter_host) {
+void ChunkDemuxer::set_host(DemuxerHost* host) {
DCHECK_EQ(state_, INITIALIZED);
- Demuxer::set_host(filter_host);
- filter_host->SetDuration(duration_);
- filter_host->SetCurrentReadPosition(0);
+ Demuxer::set_host(host);
+ host->SetDuration(duration_);
+ host->SetCurrentReadPosition(0);
}
void ChunkDemuxer::Stop(const base::Closure& callback) {
@@ -811,7 +810,7 @@ void ChunkDemuxer::ReportError_Locked(PipelineStatus error) {
{
base::AutoUnlock auto_unlock(lock_);
if (cb.is_null()) {
- host()->SetError(error);
+ host()->OnDemuxerError(error);
return;
}
cb.Run(error);
diff --git a/media/filters/chunk_demuxer.h b/media/filters/chunk_demuxer.h
index 42f1097..3313c11 100644
--- a/media/filters/chunk_demuxer.h
+++ b/media/filters/chunk_demuxer.h
@@ -30,7 +30,7 @@ class MEDIA_EXPORT ChunkDemuxer : public Demuxer {
void Init(const PipelineStatusCB& cb);
// Demuxer implementation.
- virtual void set_host(FilterHost* filter_host) OVERRIDE;
+ virtual void set_host(DemuxerHost* host) OVERRIDE;
virtual void Stop(const base::Closure& callback) OVERRIDE;
virtual void Seek(base::TimeDelta time, const PipelineStatusCB& cb) OVERRIDE;
virtual void OnAudioRendererDisabled() OVERRIDE;
diff --git a/media/filters/chunk_demuxer_unittest.cc b/media/filters/chunk_demuxer_unittest.cc
index bffb8ad..ecbcbee 100644
--- a/media/filters/chunk_demuxer_unittest.cc
+++ b/media/filters/chunk_demuxer_unittest.cc
@@ -5,7 +5,7 @@
#include "base/bind.h"
#include "media/base/audio_decoder_config.h"
#include "media/base/mock_callback.h"
-#include "media/base/mock_filter_host.h"
+#include "media/base/mock_demuxer_host.h"
#include "media/base/test_data_util.h"
#include "media/filters/chunk_demuxer.h"
#include "media/filters/chunk_demuxer_client.h"
@@ -114,9 +114,10 @@ class ChunkDemuxerTest : public testing::Test {
}
void AppendData(const uint8* data, size_t length) {
- EXPECT_CALL(mock_filter_host_, SetBufferedBytes(_)).Times(AnyNumber());
- EXPECT_CALL(mock_filter_host_, SetBufferedTime(_)).Times(AnyNumber());
- EXPECT_CALL(mock_filter_host_, SetNetworkActivity(true)).Times(AnyNumber());
+ EXPECT_CALL(mock_demuxer_host_, SetBufferedBytes(_)).Times(AnyNumber());
+ EXPECT_CALL(mock_demuxer_host_, SetBufferedTime(_)).Times(AnyNumber());
+ EXPECT_CALL(mock_demuxer_host_, SetNetworkActivity(true))
+ .Times(AnyNumber());
EXPECT_TRUE(demuxer_->AppendData(data, length));
}
@@ -148,10 +149,10 @@ class ChunkDemuxerTest : public testing::Test {
EXPECT_EQ(status, expected_status);
if (status == PIPELINE_OK) {
- EXPECT_CALL(mock_filter_host_, SetDuration(expected_duration));
- EXPECT_CALL(mock_filter_host_, SetCurrentReadPosition(_));
+ EXPECT_CALL(mock_demuxer_host_, SetDuration(expected_duration));
+ EXPECT_CALL(mock_demuxer_host_, SetCurrentReadPosition(_));
- demuxer_->set_host(&mock_filter_host_);
+ demuxer_->set_host(&mock_demuxer_host_);
}
}
@@ -193,7 +194,7 @@ class ChunkDemuxerTest : public testing::Test {
MOCK_METHOD1(Checkpoint, void(int id));
- MockFilterHost mock_filter_host_;
+ MockDemuxerHost mock_demuxer_host_;
scoped_ptr<MockChunkDemuxerClient> client_;
scoped_refptr<ChunkDemuxer> demuxer_;
@@ -348,7 +349,7 @@ TEST_F(ChunkDemuxerTest, TestOutOfOrderClusters) {
// Make sure that AppendData() fails because this cluster data
// is before previous data.
- EXPECT_CALL(mock_filter_host_, SetError(PIPELINE_ERROR_DECODE));
+ EXPECT_CALL(mock_demuxer_host_, OnDemuxerError(PIPELINE_ERROR_DECODE));
AppendData(clusterB->data(), clusterB->size());
// Verify that AppendData() doesn't accept more data now.
@@ -373,7 +374,7 @@ TEST_F(ChunkDemuxerTest, TestNonMonotonicButAboveClusterTimecode) {
AddSimpleBlock(&cb, kVideoTrackNum, 15);
scoped_ptr<Cluster> clusterA(cb.Finish());
- EXPECT_CALL(mock_filter_host_, SetError(PIPELINE_ERROR_DECODE));
+ EXPECT_CALL(mock_demuxer_host_, OnDemuxerError(PIPELINE_ERROR_DECODE));
AppendData(clusterA->data(), clusterA->size());
// Verify that AppendData() doesn't accept more data now.
@@ -398,7 +399,7 @@ TEST_F(ChunkDemuxerTest, TestBackwardsAndBeforeClusterTimecode) {
AddSimpleBlock(&cb, kVideoTrackNum, 3);
scoped_ptr<Cluster> clusterA(cb.Finish());
- EXPECT_CALL(mock_filter_host_, SetError(PIPELINE_ERROR_DECODE));
+ EXPECT_CALL(mock_demuxer_host_, OnDemuxerError(PIPELINE_ERROR_DECODE));
AppendData(clusterA->data(), clusterA->size());
// Verify that AppendData() doesn't accept more data now.
@@ -424,7 +425,7 @@ TEST_F(ChunkDemuxerTest, TestPerStreamMonotonicallyIncreasingTimestamps) {
AddSimpleBlock(&cb, kVideoTrackNum, 7);
scoped_ptr<Cluster> cluster(cb.Finish());
- EXPECT_CALL(mock_filter_host_, SetError(PIPELINE_ERROR_DECODE));
+ EXPECT_CALL(mock_demuxer_host_, OnDemuxerError(PIPELINE_ERROR_DECODE));
AppendData(cluster->data(), cluster->size());
}
@@ -447,7 +448,7 @@ TEST_F(ChunkDemuxerTest, TestMonotonicallyIncreasingTimestampsAcrossClusters) {
AddSimpleBlock(&cb, kVideoTrackNum, 7);
scoped_ptr<Cluster> clusterB(cb.Finish());
- EXPECT_CALL(mock_filter_host_, SetError(PIPELINE_ERROR_DECODE));
+ EXPECT_CALL(mock_demuxer_host_, OnDemuxerError(PIPELINE_ERROR_DECODE));
AppendData(clusterB->data(), clusterB->size());
// Verify that AppendData() doesn't accept more data now.
@@ -491,7 +492,7 @@ TEST_F(ChunkDemuxerTest, TestDecodeErrorEndOfStream) {
scoped_ptr<Cluster> cluster(cb.Finish());
AppendData(cluster->data(), cluster->size());
- EXPECT_CALL(mock_filter_host_, SetError(PIPELINE_ERROR_DECODE));
+ EXPECT_CALL(mock_demuxer_host_, OnDemuxerError(PIPELINE_ERROR_DECODE));
demuxer_->EndOfStream(PIPELINE_ERROR_DECODE);
}
@@ -507,7 +508,7 @@ TEST_F(ChunkDemuxerTest, TestNetworkErrorEndOfStream) {
scoped_ptr<Cluster> cluster(cb.Finish());
AppendData(cluster->data(), cluster->size());
- EXPECT_CALL(mock_filter_host_, SetError(PIPELINE_ERROR_NETWORK));
+ EXPECT_CALL(mock_demuxer_host_, OnDemuxerError(PIPELINE_ERROR_NETWORK));
demuxer_->EndOfStream(PIPELINE_ERROR_NETWORK);
}
diff --git a/media/filters/ffmpeg_demuxer.cc b/media/filters/ffmpeg_demuxer.cc
index aa24e7a..f85d3f3 100644
--- a/media/filters/ffmpeg_demuxer.cc
+++ b/media/filters/ffmpeg_demuxer.cc
@@ -11,7 +11,6 @@
#include "base/string_util.h"
#include "base/time.h"
#include "media/base/data_buffer.h"
-#include "media/base/filter_host.h"
#include "media/base/limits.h"
#include "media/base/media_switches.h"
#include "media/ffmpeg/ffmpeg_common.h"
@@ -319,7 +318,7 @@ void FFmpegDemuxer::Stop(const base::Closure& callback) {
SignalReadCompleted(DataSource::kReadError);
}
-void FFmpegDemuxer::Seek(base::TimeDelta time, const FilterStatusCB& cb) {
+void FFmpegDemuxer::Seek(base::TimeDelta time, const PipelineStatusCB& cb) {
message_loop_->PostTask(FROM_HERE,
base::Bind(&FFmpegDemuxer::SeekTask, this, time, cb));
}
@@ -339,16 +338,16 @@ void FFmpegDemuxer::OnAudioRendererDisabled() {
&FFmpegDemuxer::DisableAudioStreamTask, this));
}
-void FFmpegDemuxer::set_host(FilterHost* filter_host) {
- Demuxer::set_host(filter_host);
+void FFmpegDemuxer::set_host(DemuxerHost* demuxer_host) {
+ Demuxer::set_host(demuxer_host);
if (data_source_)
- data_source_->set_host(filter_host);
+ data_source_->set_host(demuxer_host);
if (max_duration_.InMicroseconds() >= 0)
host()->SetDuration(max_duration_);
if (read_position_ > 0)
host()->SetCurrentReadPosition(read_position_);
if (deferred_status_ != PIPELINE_OK)
- host()->SetError(deferred_status_);
+ host()->OnDemuxerError(deferred_status_);
}
void FFmpegDemuxer::Initialize(DataSource* data_source,
@@ -399,7 +398,7 @@ size_t FFmpegDemuxer::Read(size_t size, uint8* data) {
size_t last_read_bytes = WaitForRead();
if (last_read_bytes == DataSource::kReadError) {
if (host())
- host()->SetError(PIPELINE_ERROR_READ);
+ host()->OnDemuxerError(PIPELINE_ERROR_READ);
else
deferred_status_ = PIPELINE_ERROR_READ;
@@ -595,7 +594,7 @@ bool FFmpegDemuxer::IsSeekable() {
return !IsStreaming();
}
-void FFmpegDemuxer::SeekTask(base::TimeDelta time, const FilterStatusCB& cb) {
+void FFmpegDemuxer::SeekTask(base::TimeDelta time, const PipelineStatusCB& cb) {
DCHECK_EQ(MessageLoop::current(), message_loop_);
// TODO(scherkus): remove this by separating Seek() from Flush() from
diff --git a/media/filters/ffmpeg_demuxer.h b/media/filters/ffmpeg_demuxer.h
index 3f2e596..5db09b33 100644
--- a/media/filters/ffmpeg_demuxer.h
+++ b/media/filters/ffmpeg_demuxer.h
@@ -140,9 +140,9 @@ class MEDIA_EXPORT FFmpegDemuxer : public Demuxer, public FFmpegURLProtocol {
// Demuxer implementation.
virtual void Stop(const base::Closure& callback) OVERRIDE;
- virtual void Seek(base::TimeDelta time, const FilterStatusCB& cb) OVERRIDE;
+ virtual void Seek(base::TimeDelta time, const PipelineStatusCB& cb) OVERRIDE;
virtual void OnAudioRendererDisabled() OVERRIDE;
- virtual void set_host(FilterHost* filter_host) OVERRIDE;
+ virtual void set_host(DemuxerHost* demuxer_host) OVERRIDE;
virtual void SetPlaybackRate(float playback_rate) OVERRIDE;
virtual scoped_refptr<DemuxerStream> GetStream(
DemuxerStream::Type type) OVERRIDE;
@@ -175,7 +175,7 @@ class MEDIA_EXPORT FFmpegDemuxer : public Demuxer, public FFmpegURLProtocol {
DataSource* data_source, const PipelineStatusCB& callback);
// Carries out a seek on the demuxer thread.
- void SeekTask(base::TimeDelta time, const FilterStatusCB& cb);
+ void SeekTask(base::TimeDelta time, const PipelineStatusCB& cb);
// Carries out demuxing and satisfying stream reads on the demuxer thread.
void DemuxTask();
@@ -247,7 +247,7 @@ class MEDIA_EXPORT FFmpegDemuxer : public Demuxer, public FFmpegURLProtocol {
int64 read_position_;
// Initialization can happen before set_host() is called, in which case we
- // store these bits for deferred reporting to the FilterHost when we get one.
+ // store these bits for deferred reporting to the DemuxerHost when we get one.
base::TimeDelta max_duration_;
PipelineStatus deferred_status_;
diff --git a/media/filters/ffmpeg_demuxer_unittest.cc b/media/filters/ffmpeg_demuxer_unittest.cc
index 79c3b44..45838f6 100644
--- a/media/filters/ffmpeg_demuxer_unittest.cc
+++ b/media/filters/ffmpeg_demuxer_unittest.cc
@@ -9,7 +9,7 @@
#include "base/threading/thread.h"
#include "media/base/filters.h"
#include "media/base/mock_callback.h"
-#include "media/base/mock_filter_host.h"
+#include "media/base/mock_demuxer_host.h"
#include "media/base/mock_filters.h"
#include "media/base/mock_reader.h"
#include "media/ffmpeg/ffmpeg_common.h"
@@ -134,7 +134,7 @@ class FFmpegDemuxerTest : public testing::Test {
// Fixture members.
scoped_refptr<FFmpegDemuxer> demuxer_;
- StrictMock<MockFilterHost> host_;
+ StrictMock<MockDemuxerHost> host_;
MessageLoop message_loop_;
int64 current_read_position_;
diff --git a/media/filters/file_data_source.cc b/media/filters/file_data_source.cc
index 9116b50..2270fe9 100644
--- a/media/filters/file_data_source.cc
+++ b/media/filters/file_data_source.cc
@@ -49,8 +49,8 @@ PipelineStatus FileDataSource::Initialize(const std::string& url) {
return PIPELINE_OK;
}
-void FileDataSource::set_host(FilterHost* filter_host) {
- DataSource::set_host(filter_host);
+void FileDataSource::set_host(DataSourceHost* host) {
+ DataSource::set_host(host);
UpdateHostBytes();
}
diff --git a/media/filters/file_data_source.h b/media/filters/file_data_source.h
index 0a26855..0b94c63 100644
--- a/media/filters/file_data_source.h
+++ b/media/filters/file_data_source.h
@@ -9,7 +9,7 @@
#include "base/gtest_prod_util.h"
#include "base/synchronization/lock.h"
-#include "media/base/filters.h"
+#include "media/base/data_source.h"
namespace media {
@@ -23,11 +23,9 @@ class MEDIA_EXPORT FileDataSource : public DataSource {
PipelineStatus Initialize(const std::string& url);
- // Implementation of Filter.
- virtual void set_host(FilterHost* filter_host) OVERRIDE;
- virtual void Stop(const base::Closure& callback) OVERRIDE;
-
// Implementation of DataSource.
+ virtual void set_host(DataSourceHost* host) OVERRIDE;
+ virtual void Stop(const base::Closure& callback) OVERRIDE;
virtual void Read(int64 position, size_t size, uint8* data,
const DataSource::ReadCallback& read_callback) OVERRIDE;
virtual bool GetSize(int64* size_out) OVERRIDE;
diff --git a/media/filters/file_data_source_unittest.cc b/media/filters/file_data_source_unittest.cc
index 9d781a3..bac45d9 100644
--- a/media/filters/file_data_source_unittest.cc
+++ b/media/filters/file_data_source_unittest.cc
@@ -10,7 +10,7 @@
#include "base/path_service.h"
#include "base/utf_string_conversions.h"
#include "media/base/mock_callback.h"
-#include "media/base/mock_filter_host.h"
+#include "media/base/mock_data_source_host.h"
#include "media/base/mock_filters.h"
#include "media/filters/file_data_source.h"
@@ -51,7 +51,7 @@ std::string TestFileURL() {
// Test that FileDataSource call the appropriate methods on its filter host.
TEST(FileDataSourceTest, OpenFile) {
- StrictMock<MockFilterHost> host;
+ StrictMock<MockDataSourceHost> host;
EXPECT_CALL(host, SetTotalBytes(10));
EXPECT_CALL(host, SetBufferedBytes(10));
@@ -68,7 +68,7 @@ TEST(FileDataSourceTest, ReadData) {
uint8 ten_bytes[10];
// Create our mock filter host and initialize the data source.
- NiceMock<MockFilterHost> host;
+ NiceMock<MockDataSourceHost> host;
scoped_refptr<FileDataSource> filter(new FileDataSource());
filter->set_host(&host);
@@ -97,14 +97,4 @@ TEST(FileDataSourceTest, ReadData) {
filter->Stop(NewExpectedClosure());
}
-// Test that FileDataSource does nothing on Seek().
-TEST(FileDataSourceTest, Seek) {
- const base::TimeDelta kZero;
-
- scoped_refptr<FileDataSource> filter(new FileDataSource());
- filter->Seek(kZero, NewExpectedStatusCB(PIPELINE_OK));
-
- filter->Stop(NewExpectedClosure());
-}
-
} // namespace media
diff --git a/media/media.gyp b/media/media.gyp
index 79f6c53..0b18d62 100644
--- a/media/media.gyp
+++ b/media/media.gyp
@@ -115,6 +115,8 @@
'base/composite_filter.h',
'base/data_buffer.cc',
'base/data_buffer.h',
+ 'base/data_source.cc',
+ 'base/data_source.h',
'base/demuxer.cc',
'base/demuxer.h',
'base/demuxer_stream.cc',
@@ -150,6 +152,7 @@
'base/pipeline_impl.cc',
'base/pipeline_impl.h',
'base/pipeline_status.h',
+ 'base/preload.h',
'base/pts_heap.cc',
'base/pts_heap.h',
'base/pts_stream.cc',
@@ -678,6 +681,10 @@
'audio/test_audio_input_controller_factory.h',
'base/mock_callback.cc',
'base/mock_callback.h',
+ 'base/mock_data_source_host.cc',
+ 'base/mock_ddata_source_host.h',
+ 'base/mock_demuxer_host.cc',
+ 'base/mock_demuxer_host.h',
'base/mock_filter_host.cc',
'base/mock_filter_host.h',
'base/mock_filters.cc',
diff --git a/webkit/media/buffered_data_source.cc b/webkit/media/buffered_data_source.cc
index 794c40e..20b9b7a 100644
--- a/webkit/media/buffered_data_source.cc
+++ b/webkit/media/buffered_data_source.cc
@@ -5,7 +5,6 @@
#include "webkit/media/buffered_data_source.h"
#include "base/bind.h"
-#include "media/base/filter_host.h"
#include "media/base/media_log.h"
#include "net/base/net_errors.h"
#include "webkit/media/web_data_source_factory.h"
@@ -85,7 +84,7 @@ BufferedResourceLoader* BufferedDataSource::CreateResourceLoader(
media_log_);
}
-void BufferedDataSource::set_host(media::FilterHost* host) {
+void BufferedDataSource::set_host(media::DataSourceHost* host) {
DataSource::set_host(host);
if (loader_.get()) {
@@ -650,13 +649,12 @@ void BufferedDataSource::UpdateHostState_Locked() {
// Called from various threads, under lock.
lock_.AssertAcquired();
- media::FilterHost* filter_host = host();
- if (!filter_host)
+ if (!host())
return;
if (total_bytes_ != kPositionNotSpecified)
- filter_host->SetTotalBytes(total_bytes_);
- filter_host->SetBufferedBytes(buffered_bytes_);
+ host()->SetTotalBytes(total_bytes_);
+ host()->SetBufferedBytes(buffered_bytes_);
}
} // namespace webkit_media
diff --git a/webkit/media/buffered_data_source.h b/webkit/media/buffered_data_source.h
index 11210b9..eac8e13 100644
--- a/webkit/media/buffered_data_source.h
+++ b/webkit/media/buffered_data_source.h
@@ -11,7 +11,7 @@
#include "base/memory/scoped_ptr.h"
#include "base/synchronization/lock.h"
#include "media/base/filter_factories.h"
-#include "media/base/filters.h"
+#include "media/base/data_source.h"
#include "webkit/media/buffered_resource_loader.h"
namespace media {
@@ -37,13 +37,12 @@ class BufferedDataSource : public WebDataSource {
virtual ~BufferedDataSource();
- // media::Filter implementation.
- virtual void set_host(media::FilterHost* host) OVERRIDE;
+ // media::DataSource implementation.
+ // Called from demuxer thread.
+ virtual void set_host(media::DataSourceHost* host) OVERRIDE;
virtual void Stop(const base::Closure& callback) OVERRIDE;
virtual void SetPlaybackRate(float playback_rate) OVERRIDE;
- // media::DataSource implementation.
- // Called from demuxer thread.
virtual void Read(
int64 position,
size_t size,
diff --git a/webkit/media/buffered_data_source_unittest.cc b/webkit/media/buffered_data_source_unittest.cc
index 83d58cf..9150fd0 100644
--- a/webkit/media/buffered_data_source_unittest.cc
+++ b/webkit/media/buffered_data_source_unittest.cc
@@ -5,7 +5,7 @@
#include "base/bind.h"
#include "media/base/media_log.h"
#include "media/base/mock_callback.h"
-#include "media/base/mock_filter_host.h"
+#include "media/base/mock_data_source_host.h"
#include "media/base/mock_filters.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebURLResponse.h"
@@ -176,7 +176,7 @@ class BufferedDataSourceTest : public testing::Test {
MockWebFrameClient client_;
WebView* view_;
- StrictMock<media::MockFilterHost> host_;
+ StrictMock<media::MockDataSourceHost> host_;
MessageLoop* message_loop_;
private:
diff --git a/webkit/media/simple_data_source.cc b/webkit/media/simple_data_source.cc
index 24b7b01..cc950dc 100644
--- a/webkit/media/simple_data_source.cc
+++ b/webkit/media/simple_data_source.cc
@@ -7,7 +7,6 @@
#include "base/bind.h"
#include "base/message_loop.h"
#include "base/process_util.h"
-#include "media/base/filter_host.h"
#include "media/base/media_log.h"
#include "net/base/data_url.h"
#include "net/base/load_flags.h"
@@ -59,7 +58,7 @@ SimpleDataSource::~SimpleDataSource() {
DCHECK(state_ == UNINITIALIZED || state_ == STOPPED);
}
-void SimpleDataSource::set_host(media::FilterHost* host) {
+void SimpleDataSource::set_host(media::DataSourceHost* host) {
DataSource::set_host(host);
base::AutoLock auto_lock(lock_);
diff --git a/webkit/media/simple_data_source.h b/webkit/media/simple_data_source.h
index 7408019..e905be9 100644
--- a/webkit/media/simple_data_source.h
+++ b/webkit/media/simple_data_source.h
@@ -16,7 +16,7 @@
#include "base/memory/scoped_ptr.h"
#include "base/message_loop.h"
#include "media/base/filter_factories.h"
-#include "media/base/filters.h"
+#include "media/base/data_source.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebURLLoader.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebURLLoaderClient.h"
@@ -46,11 +46,9 @@ class SimpleDataSource
SimpleDataSource(MessageLoop* render_loop, WebKit::WebFrame* frame);
virtual ~SimpleDataSource();
- // media::Filter implementation.
- virtual void set_host(media::FilterHost* host) OVERRIDE;
- virtual void Stop(const base::Closure& callback) OVERRIDE;
-
// media::DataSource implementation.
+ virtual void set_host(media::DataSourceHost* host) OVERRIDE;
+ virtual void Stop(const base::Closure& callback) OVERRIDE;
virtual void Read(int64 position,
size_t size,
uint8* data,
diff --git a/webkit/media/simple_data_source_unittest.cc b/webkit/media/simple_data_source_unittest.cc
index fd99202..a21135f 100644
--- a/webkit/media/simple_data_source_unittest.cc
+++ b/webkit/media/simple_data_source_unittest.cc
@@ -5,7 +5,7 @@
#include "base/bind.h"
#include "media/base/filters.h"
#include "media/base/mock_callback.h"
-#include "media/base/mock_filter_host.h"
+#include "media/base/mock_data_source_host.h"
#include "media/base/mock_filters.h"
#include "net/base/net_errors.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
@@ -154,7 +154,7 @@ class SimpleDataSourceTest : public testing::Test {
scoped_ptr<MessageLoop> message_loop_;
NiceMock<MockWebURLLoader>* url_loader_;
scoped_refptr<SimpleDataSource> data_source_;
- StrictMock<media::MockFilterHost> host_;
+ StrictMock<media::MockDataSourceHost> host_;
MockWebFrameClient client_;
WebView* view_;
diff --git a/webkit/media/web_data_source.h b/webkit/media/web_data_source.h
index 5cb27c4..e492e88 100644
--- a/webkit/media/web_data_source.h
+++ b/webkit/media/web_data_source.h
@@ -6,7 +6,7 @@
#define WEBKIT_MEDIA_WEB_DATA_SOURCE_H_
#include "base/callback.h"
-#include "media/base/filters.h"
+#include "media/base/data_source.h"
#include "media/base/pipeline_status.h"
namespace webkit_media {
diff --git a/webkit/media/webmediaplayer_proxy.h b/webkit/media/webmediaplayer_proxy.h
index 3cff7a4..83877e4 100644
--- a/webkit/media/webmediaplayer_proxy.h
+++ b/webkit/media/webmediaplayer_proxy.h
@@ -20,6 +20,10 @@ namespace gfx {
class Rect;
}
+namespace media {
+class VideoFrame;
+}
+
namespace webkit_media {
class WebMediaPlayerImpl;