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

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: response to CR 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
« no previous file with comments | « media/filters/chunk_demuxer.h ('k') | media/filters/source_buffer_stream.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/filters/chunk_demuxer.cc
diff --git a/media/filters/chunk_demuxer.cc b/media/filters/chunk_demuxer.cc
index 6322f5a97b99e91e8797eff90a6403869019bcb1..15d8b09148daaef9a6b621cef0788d6546d18614 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,21 @@ void ChunkDemuxer::Abort(const std::string& id) {
stream_parser_map_[id]->Flush();
}
+void ChunkDemuxer::SetDuration(base::TimeDelta duration) {
+ DVLOG(1) << "SetDuration(" << duration.InSecondsF() << ")";
+
+ if (duration == duration_)
+ return;
+
+ UpdateDuration(duration);
+
+ 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));
« no previous file with comments | « media/filters/chunk_demuxer.h ('k') | media/filters/source_buffer_stream.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698