Index: media/blink/multibuffer_data_source.h |
diff --git a/media/blink/multibuffer_data_source.h b/media/blink/multibuffer_data_source.h |
index 456477504f3e37d59551c1e5a8919349331eb614..c6ace437d74eafe3950e419f4d409d1b9322bb1d 100644 |
--- a/media/blink/multibuffer_data_source.h |
+++ b/media/blink/multibuffer_data_source.h |
@@ -18,7 +18,6 @@ |
#include "base/synchronization/lock.h" |
#include "media/base/data_source.h" |
#include "media/base/ranges.h" |
-#include "media/blink/buffered_data_source.h" |
#include "media/blink/media_blink_export.h" |
#include "media/blink/url_index.h" |
#include "url/gurl.h" |
@@ -28,6 +27,7 @@ class SingleThreadTaskRunner; |
} |
namespace media { |
+class BufferedDataSourceHost; |
class MediaLog; |
class MultiBufferReader; |
@@ -36,11 +36,31 @@ class MultiBufferReader; |
// |
// MultibufferDataSource must be created and destroyed on the thread associated |
// with the |task_runner| passed in the constructor. |
-class MEDIA_BLINK_EXPORT MultibufferDataSource |
- : NON_EXPORTED_BASE(public BufferedDataSourceInterface) { |
+class MEDIA_BLINK_EXPORT MultibufferDataSource : public DataSource { |
public: |
typedef base::Callback<void(bool)> DownloadingCB; |
+ // 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 blink::WebMediaPlayer::Preload and |
+ // there will be assertions at compile time if they do not match. |
+ enum Preload { |
+ NONE, |
+ METADATA, |
+ AUTO, |
+ }; |
+ |
+ // Enum values must match the values in |
+ // blink::WebMediaPlayer::BufferingStrategy and there will be assertions at |
+ // compile time if they do not match. |
+ enum BufferingStrategy { |
+ BUFFERING_STRATEGY_NORMAL, |
+ BUFFERING_STRATEGY_AGGRESSIVE, |
+ }; |
+ |
// |url| and |cors_mode| are passed to the object. Buffered byte range changes |
// will be reported to |host|. |downloading_cb| will be called whenever the |
// downloading/paused state of the source changes. |
@@ -58,50 +78,51 @@ class MEDIA_BLINK_EXPORT MultibufferDataSource |
// Executes |init_cb| with the result of initialization when it has completed. |
// |
// Method called on the render thread. |
- void Initialize(const InitializeCB& init_cb) override; |
+ typedef base::Callback<void(bool)> InitializeCB; |
+ void Initialize(const InitializeCB& init_cb); |
// Adjusts the buffering algorithm based on the given preload value. |
- void SetPreload(Preload preload) override; |
+ void SetPreload(Preload preload); |
// Adjusts the buffering algorithm based on the given buffering strategy |
// value. |
- void SetBufferingStrategy(BufferingStrategy buffering_strategy) override; |
+ void SetBufferingStrategy(BufferingStrategy buffering_strategy); |
// Returns true if the media resource has a single origin, false otherwise. |
// Only valid to call after Initialize() has completed. |
// |
// Method called on the render thread. |
- bool HasSingleOrigin() override; |
+ bool HasSingleOrigin(); |
// Returns true if the media resource passed a CORS access control check. |
- bool DidPassCORSAccessCheck() const override; |
+ bool DidPassCORSAccessCheck() const; |
// Cancels initialization, any pending loaders, and any pending read calls |
// from the demuxer. The caller is expected to release its reference to this |
// object and never call it again. |
// |
// Method called on the render thread. |
- void Abort() override; |
+ void Abort(); |
// Notifies changes in playback state for controlling media buffering |
// behavior. |
- void MediaPlaybackRateChanged(double playback_rate) override; |
- void MediaIsPlaying() override; |
- bool media_has_played() const override; |
+ void MediaPlaybackRateChanged(double playback_rate); |
+ void MediaIsPlaying(); |
+ bool media_has_played() const; |
// Returns true if the resource is local. |
- bool assume_fully_buffered() override; |
+ bool assume_fully_buffered(); |
// Cancels any open network connections once reaching the deferred state. If |
// |always_cancel| is false this is done only for preload=metadata, non- |
// streaming resources that have not started playback. If |always_cancel| is |
// true, all resource types will have their connections canceled. If already |
// deferred, connections will be immediately closed. |
- void OnBufferingHaveEnough(bool always_cancel) override; |
+ void OnBufferingHaveEnough(bool always_cancel); |
- int64_t GetMemoryUsage() const override; |
+ int64_t GetMemoryUsage() const; |
- GURL GetUrlAfterRedirects() const override; |
+ GURL GetUrlAfterRedirects() const; |
// DataSource implementation. |
// Called from demuxer thread. |