Index: media/filters/chunk_demuxer.cc |
diff --git a/media/filters/chunk_demuxer.cc b/media/filters/chunk_demuxer.cc |
index d3f532cc9fbb13a601ec18ef57ccef79ed50a859..25bc0bc0251c6b05f31eea623f6b53bd75a8583a 100644 |
--- a/media/filters/chunk_demuxer.cc |
+++ b/media/filters/chunk_demuxer.cc |
@@ -15,6 +15,9 @@ |
namespace media { |
+// TODO(acolwell): Remove this when fixing http://crbug.com/122909 . |
+const char* kDefaultSourceType = "video/webm; codecs=\"vp8, vorbis\""; |
+ |
// Create an "end of stream" buffer. |
static Buffer* CreateEOSBuffer() { |
return new DataBuffer(0); |
@@ -455,11 +458,40 @@ void ChunkDemuxer::FlushData() { |
ChangeState_Locked(INITIALIZED); |
} |
-bool ChunkDemuxer::AppendData(const uint8* data, size_t length) { |
- DVLOG(1) << "AppendData(" << length << ")"; |
+ChunkDemuxer::Status ChunkDemuxer::AddId(const std::string& id, |
+ const std::string& type) { |
+ // TODO(acolwell): Proper mimetype decoding and support for more than one ID |
+ // will be added as part of http://crbug.com/122909 |
+ if (type != kDefaultSourceType) |
+ return kNotSupported; |
- if (!data || length == 0u) |
- return false; |
+ if (!source_id_.empty()) |
+ return kReachedIdLimit; |
+ |
+ source_id_ = id; |
+ return kOk; |
+} |
+ |
+void ChunkDemuxer::RemoveId(const std::string& id) { |
+ CHECK(!source_id_.empty()); |
+ CHECK_EQ(source_id_, id); |
+ source_id_ = ""; |
+} |
+ |
+bool ChunkDemuxer::AppendData(const std::string& id, |
+ const uint8* data, |
+ size_t length) { |
+ DVLOG(1) << "AppendData(" << id << ", " << length << ")"; |
+ |
+ // TODO(acolwell): Remove when http://webk.it/83788 fix lands. |
+ if (source_id_.empty()) |
+ AddId(id, kDefaultSourceType); |
+ |
+ DCHECK(!source_id_.empty()); |
+ DCHECK_EQ(source_id_, id); |
+ DCHECK(!id.empty()); |
+ DCHECK(data); |
+ DCHECK_GT(length, 0u); |
int64 buffered_bytes = 0; |
base::TimeDelta buffered_ts = base::TimeDelta::FromSeconds(-1); |