Index: media/filters/chunk_demuxer.h |
diff --git a/media/filters/chunk_demuxer.h b/media/filters/chunk_demuxer.h |
index 6e8bdf95c7cde7cd6e767cf9c7b862f0ec0ec1fc..abb367da28490a9919085620a914914128d834bc 100644 |
--- a/media/filters/chunk_demuxer.h |
+++ b/media/filters/chunk_demuxer.h |
@@ -56,6 +56,13 @@ class MEDIA_EXPORT ChunkDemuxerStream : public DemuxerStream { |
void Remove(base::TimeDelta start, base::TimeDelta end, |
base::TimeDelta duration); |
+ // If the buffer is full, runs Frame Removal to try to free up space, as |
+ // specified in the "Coded Frame Eviction Algorithm" in the Media Source |
+ // Extensions Spec. Returns false iff buffer is still full after running |
+ // eviction |
+ // https://w3c.github.io/media-source/#sourcebuffer-coded-frame-eviction |
+ bool EvictFrames(DecodeTimestamp media_time); |
+ |
// Signal to the stream that duration has changed to |duration|. |
void OnSetDuration(base::TimeDelta duration); |
@@ -163,6 +170,11 @@ class MEDIA_EXPORT ChunkDemuxer : public Demuxer { |
bool splice_frames_enabled); |
~ChunkDemuxer() override; |
+ // Set the media time provider. |
+ // TODO(damienv): should truly be part of the constructor. |
+ void SetMediaTimeProvider( |
+ const base::Callback<base::TimeDelta(void)>& get_media_time_cb); |
+ |
// Demuxer implementation. |
void Initialize(DemuxerHost* host, |
const PipelineStatusCB& cb, |
@@ -242,6 +254,8 @@ class MEDIA_EXPORT ChunkDemuxer : public Demuxer { |
void Remove(const std::string& id, base::TimeDelta start, |
base::TimeDelta end); |
+ bool EvictFrames(); |
+ |
// Returns the current presentation duration. |
double GetDuration(); |
double GetDuration_Locked(); |
@@ -376,6 +390,8 @@ class MEDIA_EXPORT ChunkDemuxer : public Demuxer { |
scoped_ptr<ChunkDemuxerStream> audio_; |
scoped_ptr<ChunkDemuxerStream> video_; |
+ base::Callback<base::TimeDelta(void)> get_media_time_cb_; |
+ |
base::TimeDelta duration_; |
// The duration passed to the last SetDuration(). If |