Commit c6273ea4 authored by acolwell@chromium.org's avatar acolwell@chromium.org

Fix buffered range reporting for ChunkDemuxer

BUG=None
TEST=PipelineIntegrationTest, BasicPlayback_MediaSource

Review URL: https://chromiumcodereview.appspot.com/10701130

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@146127 0039d316-1c4b-4281-b951-d872f2087c98
parent 7acfaf93
......@@ -202,12 +202,12 @@ TimeDelta Pipeline::GetCurrentTime_Locked() const {
Ranges<TimeDelta> Pipeline::GetBufferedTimeRanges() {
base::AutoLock auto_lock(lock_);
Ranges<TimeDelta> time_ranges;
if (clock_->Duration() == TimeDelta() || total_bytes_ == 0)
return time_ranges;
for (size_t i = 0; i < buffered_time_ranges_.size(); ++i) {
time_ranges.Add(buffered_time_ranges_.start(i),
buffered_time_ranges_.end(i));
}
if (clock_->Duration() == TimeDelta() || total_bytes_ == 0)
return time_ranges;
for (size_t i = 0; i < buffered_byte_ranges_.size(); ++i) {
TimeDelta start = TimeForByteOffset_Locked(buffered_byte_ranges_.start(i));
TimeDelta end = TimeForByteOffset_Locked(buffered_byte_ranges_.end(i));
......
......@@ -723,14 +723,12 @@ bool ChunkDemuxer::AppendData(const std::string& id,
std::swap(cb, seek_cb_);
}
if (duration_ > TimeDelta() && duration_ != kInfiniteDuration()) {
if (audio_ && !video_) {
ranges = audio_->GetBufferedRanges();
} else if (!audio_ && video_) {
ranges = video_->GetBufferedRanges();
} else {
ranges = ComputeIntersection();
}
if (audio_ && !video_) {
ranges = audio_->GetBufferedRanges();
} else if (!audio_ && video_) {
ranges = video_->GetBufferedRanges();
} else {
ranges = ComputeIntersection();
}
}
......
......@@ -263,6 +263,23 @@ TEST_F(PipelineIntegrationTest, BasicPlaybackHashed) {
EXPECT_EQ(GetAudioHash(), "6138555be3389e6aba4c8e6f70195d50");
}
TEST_F(PipelineIntegrationTest, BasicPlayback_MediaSource) {
MockMediaSource source("bear-320x240.webm", 219229, true, true);
StartPipelineWithMediaSource(&source);
source.EndOfStream();
ASSERT_EQ(pipeline_status_, PIPELINE_OK);
EXPECT_EQ(pipeline_->GetBufferedTimeRanges().size(), 1u);
EXPECT_EQ(pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds(), 0);
EXPECT_EQ(pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds(), 2737);
Play();
ASSERT_TRUE(WaitUntilOnEnded());
source.Abort();
Stop();
}
TEST_F(PipelineIntegrationTest, EncryptedPlayback) {
MockMediaSource source("bear-320x240-encrypted.webm", 219726, true, true);
FakeDecryptorClient encrypted_media;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment