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

Unified Diff: media/filters/chunk_demuxer.cc

Issue 8921010: Revert 114030 - Adding support for incremental cluster parsing. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years 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/media.gyp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
« no previous file with comments | « media/filters/chunk_demuxer.h ('k') | media/media.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698