Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9)

Unified Diff: media/filters/chunk_demuxer.cc

Issue 10879056: Support setting an explicit duration on MediaSource objects (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/filters/chunk_demuxer.cc
diff --git a/media/filters/chunk_demuxer.cc b/media/filters/chunk_demuxer.cc
index 6322f5a97b99e91e8797eff90a6403869019bcb1..981595a0da4253e8c51ea451f278e96cf26ae99e 100644
--- a/media/filters/chunk_demuxer.cc
+++ b/media/filters/chunk_demuxer.cc
@@ -181,6 +181,9 @@ class ChunkDemuxerStream : public DemuxerStream {
// Returns true if buffers were successfully added.
bool Append(const StreamParser::BufferQueue& buffers);
+ // Signal to the stream that duration has changed to |duration|.
+ void OnSetDuration(base::TimeDelta duration);
+
// Returns the range of buffered data in this stream, capped at |duration|.
Ranges<TimeDelta> GetBufferedRanges(base::TimeDelta duration) const;
@@ -335,6 +338,11 @@ bool ChunkDemuxerStream::Append(const StreamParser::BufferQueue& buffers) {
return true;
}
+void ChunkDemuxerStream::OnSetDuration(base::TimeDelta duration) {
+ base::AutoLock auto_lock(lock_);
+ stream_->OnSetDuration(duration);
+}
+
Ranges<TimeDelta> ChunkDemuxerStream::GetBufferedRanges(
base::TimeDelta duration) const {
base::AutoLock auto_lock(lock_);
@@ -824,6 +832,18 @@ void ChunkDemuxer::Abort(const std::string& id) {
stream_parser_map_[id]->Flush();
}
+void ChunkDemuxer::SetDuration(base::TimeDelta duration) {
+ DVLOG(1) << "SetDuration(" << duration.InSecondsF() << ")";
+
+ UpdateDuration(duration);
acolwell GONE FROM CHROMIUM 2012/08/24 18:19:10 I think you need a if(duration != duration_) re
vrk (LEFT CHROMIUM) 2012/08/28 00:03:22 Did == instead :)
+
+ if (audio_)
+ audio_->OnSetDuration(duration);
+
+ if (video_)
+ video_->OnSetDuration(duration);
+}
+
bool ChunkDemuxer::SetTimestampOffset(const std::string& id, TimeDelta offset) {
DVLOG(1) << "SetTimestampOffset(" << id << ", " << offset.InSecondsF() << ")";
CHECK(IsValidId(id));

Powered by Google App Engine
This is Rietveld 408576698