Index: media/filters/chunk_demuxer.cc |
diff --git a/media/filters/chunk_demuxer.cc b/media/filters/chunk_demuxer.cc |
index 8b77834cfdf07baa6b99a96f367ac1be5e973f90..38730605d38cd862257a50e6ff96a5668e112ccc 100644 |
--- a/media/filters/chunk_demuxer.cc |
+++ b/media/filters/chunk_demuxer.cc |
@@ -81,13 +81,6 @@ static const SupportedTypeInfo kSupportedTypeInfo[] = { |
#endif |
}; |
- |
-// The fake total size we use for converting times to bytes |
-// for AddBufferedByteRange() calls. |
-// TODO(acolwell): Remove this once Pipeline accepts buffered times |
-// instead of only buffered bytes. |
-enum { kFakeTotalBytes = 1000000 }; |
- |
// Checks to see if the specified |type| and |codecs| list are supported. |
// Returns true if |type| and all codecs listed in |codecs| are supported. |
// |factory_function| contains a function that can build a StreamParser |
@@ -171,9 +164,6 @@ class ChunkDemuxerStream : public DemuxerStream { |
// Returns true if buffers were successfully added. |
bool Append(const StreamParser::BufferQueue& buffers); |
- // Returns a list of the buffered time ranges. |
- Ranges<TimeDelta> GetBufferedTime() const; |
- |
// Signal to the stream that buffers handed in through subsequent calls to |
// Append() belong to a media segment that starts at |start_timestamp|. |
void OnNewMediaSegment(TimeDelta start_timestamp); |
@@ -194,6 +184,7 @@ class ChunkDemuxerStream : public DemuxerStream { |
virtual void EnableBitstreamConverter() OVERRIDE; |
virtual const AudioDecoderConfig& audio_decoder_config() OVERRIDE; |
virtual const VideoDecoderConfig& video_decoder_config() OVERRIDE; |
+ virtual Ranges<TimeDelta> GetBufferedRanges() OVERRIDE; |
protected: |
virtual ~ChunkDemuxerStream(); |
@@ -305,7 +296,7 @@ bool ChunkDemuxerStream::Append(const StreamParser::BufferQueue& buffers) { |
return true; |
} |
-Ranges<TimeDelta> ChunkDemuxerStream::GetBufferedTime() const { |
+Ranges<TimeDelta> ChunkDemuxerStream::GetBufferedRanges() { |
base::AutoLock auto_lock(lock_); |
return stream_->GetBufferedTime(); |
} |
@@ -650,12 +641,12 @@ Ranges<TimeDelta> ChunkDemuxer::GetBufferedRanges(const std::string& id) const { |
if (id == source_id_audio_ && id != source_id_video_) { |
// Only include ranges that have been buffered in |audio_| |
- return audio_ ? audio_->GetBufferedTime() : Ranges<TimeDelta>(); |
+ return audio_ ? audio_->GetBufferedRanges() : Ranges<TimeDelta>(); |
} |
if (id != source_id_audio_ && id == source_id_video_) { |
// Only include ranges that have been buffered in |video_| |
- return video_ ? video_->GetBufferedTime() : Ranges<TimeDelta>(); |
+ return video_ ? video_->GetBufferedRanges() : Ranges<TimeDelta>(); |
} |
return ComputeIntersection(); |
@@ -668,8 +659,8 @@ Ranges<TimeDelta> ChunkDemuxer::ComputeIntersection() const { |
return Ranges<TimeDelta>(); |
// Include ranges that have been buffered in both |audio_| and |video_|. |
- Ranges<TimeDelta> audio_ranges = audio_->GetBufferedTime(); |
- Ranges<TimeDelta> video_ranges = video_->GetBufferedTime(); |
+ Ranges<TimeDelta> audio_ranges = audio_->GetBufferedRanges(); |
+ Ranges<TimeDelta> video_ranges = video_->GetBufferedRanges(); |
Ranges<TimeDelta> result = audio_ranges.IntersectionWith(video_ranges); |
if (state_ == ENDED && result.size() > 0) { |
@@ -744,24 +735,17 @@ bool ChunkDemuxer::AppendData(const std::string& id, |
if (duration_ > TimeDelta() && duration_ != kInfiniteDuration()) { |
if (audio_ && !video_) { |
- ranges = audio_->GetBufferedTime(); |
+ ranges = audio_->GetBufferedRanges(); |
} else if (!audio_ && video_) { |
- ranges = video_->GetBufferedTime(); |
+ ranges = video_->GetBufferedRanges(); |
} else { |
ranges = ComputeIntersection(); |
} |
} |
} |
- DCHECK(!ranges.size() || duration_ > TimeDelta()); |
- for (size_t i = 0; i < ranges.size(); ++i) { |
- // Notify the host of 'network activity' because we got data. |
- int64 start = |
- kFakeTotalBytes * ranges.start(i).InSecondsF() / duration_.InSecondsF(); |
- int64 end = |
- kFakeTotalBytes * ranges.end(i).InSecondsF() / duration_.InSecondsF(); |
- host_->AddBufferedByteRange(start, end); |
- } |
+ for (size_t i = 0; i < ranges.size(); ++i) |
+ host_->AddBufferedTimeRange(ranges.start(i), ranges.end(i)); |
if (!cb.is_null()) |
cb.Run(PIPELINE_OK); |
@@ -929,8 +913,6 @@ void ChunkDemuxer::OnStreamParserInitDone(bool success, TimeDelta duration) { |
(!source_id_video_.empty() && !video_)) |
return; |
- if (duration_ > TimeDelta() && duration_ != kInfiniteDuration()) |
- host_->SetTotalBytes(kFakeTotalBytes); |
host_->SetDuration(duration_); |
ChangeState_Locked(INITIALIZED); |