summaryrefslogtreecommitdiffstats
path: root/media/webm/webm_stream_parser.cc
diff options
context:
space:
mode:
authoracolwell@chromium.org <acolwell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-26 16:38:03 +0000
committeracolwell@chromium.org <acolwell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-26 16:38:03 +0000
commita93866519172cc8993583d9116ce16eec01d532b (patch)
treee617d768783948cabd3e0363cfa6bfe45a6b4ee0 /media/webm/webm_stream_parser.cc
parent2b2d9393845b8bb60f843d14ab0b59c4bc3949db (diff)
downloadchromium_src-a93866519172cc8993583d9116ce16eec01d532b.zip
chromium_src-a93866519172cc8993583d9116ce16eec01d532b.tar.gz
chromium_src-a93866519172cc8993583d9116ce16eec01d532b.tar.bz2
Add config change handling to SourceBufferStream & ChunkDemuxer
BUG=122913 TEST=None Review URL: https://chromiumcodereview.appspot.com/10696182 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@148563 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/webm/webm_stream_parser.cc')
-rw-r--r--media/webm/webm_stream_parser.cc9
1 files changed, 7 insertions, 2 deletions
diff --git a/media/webm/webm_stream_parser.cc b/media/webm/webm_stream_parser.cc
index d141bfd..e9c8233 100644
--- a/media/webm/webm_stream_parser.cc
+++ b/media/webm/webm_stream_parser.cc
@@ -235,7 +235,8 @@ bool WebMStreamParser::Parse(const uint8* buf, int size) {
int cur_size = 0;
byte_queue_.Peek(&cur, &cur_size);
- do {
+ while (cur_size > 0) {
+ State oldState = state_;
switch (state_) {
case kParsingHeaders:
result = ParseInfoAndTracks(cur, cur_size);
@@ -255,10 +256,14 @@ bool WebMStreamParser::Parse(const uint8* buf, int size) {
return false;
}
+ if (state_ == oldState && result == 0)
+ break;
+
+ DCHECK_GE(result, 0);
cur += result;
cur_size -= result;
bytes_parsed += result;
- } while (result > 0 && cur_size > 0);
+ }
byte_queue_.Pop(bytes_parsed);
return true;