| Index: media/filters/chunk_demuxer.cc
|
| ===================================================================
|
| --- media/filters/chunk_demuxer.cc (revision 114032)
|
| +++ media/filters/chunk_demuxer.cc (working copy)
|
| @@ -130,7 +130,7 @@
|
| bool ChunkDemuxerStream::CanAddBuffers(const BufferQueue& buffers) const {
|
| base::AutoLock auto_lock(lock_);
|
|
|
| - // If we haven't seen any buffers yet, then anything can be added.
|
| + // If we haven't seen any buffers yet than anything can be added.
|
| if (last_buffer_timestamp_ == kNoTimestamp)
|
| return true;
|
|
|
| @@ -434,7 +434,7 @@
|
| int cur_size = 0;
|
| int bytes_parsed = 0;
|
| int result = -1;
|
| - bool can_complete_seek = false;
|
| + bool parsed_a_cluster = false;
|
|
|
| byte_queue_.Peek(&cur, &cur_size);
|
|
|
| @@ -449,19 +449,16 @@
|
| }
|
| break;
|
|
|
| - case INITIALIZED: {
|
| - bool buffers_added = false;
|
| - result = ParseCluster_Locked(cur, cur_size, &buffers_added);
|
| + case INITIALIZED:
|
| + result = ParseCluster_Locked(cur, cur_size);
|
| if (result < 0) {
|
| VLOG(1) << "AppendData(): parsing data failed";
|
| ReportError_Locked(PIPELINE_ERROR_DECODE);
|
| return true;
|
| }
|
|
|
| - // We can complete the seek if we have successfully parsed
|
| - // some data and buffers were added to one of the DemuxerStreams.
|
| - can_complete_seek |= (result > 0 && buffers_added);
|
| - } break;
|
| + parsed_a_cluster = (result > 0);
|
| + break;
|
|
|
| case WAITING_FOR_INIT:
|
| case ENDED:
|
| @@ -480,7 +477,7 @@
|
|
|
| byte_queue_.Pop(bytes_parsed);
|
|
|
| - if (can_complete_seek && seek_waits_for_data_) {
|
| + if (parsed_a_cluster && seek_waits_for_data_) {
|
| seek_waits_for_data_ = false;
|
|
|
| if (!seek_cb_.is_null())
|
| @@ -733,8 +730,7 @@
|
| return !no_supported_streams;
|
| }
|
|
|
| -int ChunkDemuxer::ParseCluster_Locked(const uint8* data, int size,
|
| - bool* buffers_added) {
|
| +int ChunkDemuxer::ParseCluster_Locked(const uint8* data, int size) {
|
| lock_.AssertAcquired();
|
| if (!cluster_parser_.get())
|
| return -1;
|
| @@ -753,6 +749,9 @@
|
| }
|
| // Skip the element.
|
| return result + element_size;
|
| + } else if (id != kWebMIdCluster) {
|
| + VLOG(1) << "Unexpected ID 0x" << std::hex << id;
|
| + return -1;
|
| }
|
|
|
| int bytes_parsed = cluster_parser_->Parse(data, size);
|
| @@ -760,26 +759,21 @@
|
| if (bytes_parsed <= 0)
|
| return bytes_parsed;
|
|
|
| - if (!cluster_parser_->audio_buffers().empty() ||
|
| - !cluster_parser_->video_buffers().empty()) {
|
| - // Make sure we can add the buffers to both streams before we actually
|
| - // add them. This allows us to accept all of the data or none of it.
|
| - if ((audio_.get() &&
|
| - !audio_->CanAddBuffers(cluster_parser_->audio_buffers())) ||
|
| - (video_.get() &&
|
| - !video_->CanAddBuffers(cluster_parser_->video_buffers()))) {
|
| - return -1;
|
| - }
|
| + // Make sure we can add the buffers to both streams before we actutally
|
| + // add them. This allows us to accept all of the data or none of it.
|
| + if ((audio_.get() &&
|
| + !audio_->CanAddBuffers(cluster_parser_->audio_buffers())) ||
|
| + (video_.get() &&
|
| + !video_->CanAddBuffers(cluster_parser_->video_buffers()))) {
|
| + return -1;
|
| + }
|
|
|
| - if (audio_.get())
|
| - audio_->AddBuffers(cluster_parser_->audio_buffers());
|
| + if (audio_.get())
|
| + audio_->AddBuffers(cluster_parser_->audio_buffers());
|
|
|
| - if (video_.get())
|
| - video_->AddBuffers(cluster_parser_->video_buffers());
|
| + if (video_.get())
|
| + video_->AddBuffers(cluster_parser_->video_buffers());
|
|
|
| - *buffers_added = true;
|
| - }
|
| -
|
| // TODO(acolwell) : make this more representative of what is actually
|
| // buffered.
|
| buffered_bytes_ += bytes_parsed;
|
|
|