summaryrefslogtreecommitdiffstats
path: root/media/webm/webm_cluster_parser.cc
diff options
context:
space:
mode:
Diffstat (limited to 'media/webm/webm_cluster_parser.cc')
-rw-r--r--media/webm/webm_cluster_parser.cc9
1 files changed, 7 insertions, 2 deletions
diff --git a/media/webm/webm_cluster_parser.cc b/media/webm/webm_cluster_parser.cc
index 14a360d..e9ef93e 100644
--- a/media/webm/webm_cluster_parser.cc
+++ b/media/webm/webm_cluster_parser.cc
@@ -43,6 +43,7 @@ WebMClusterParser::WebMClusterParser(int64 timecode_scale,
block_duration_(-1),
cluster_timecode_(-1),
cluster_start_time_(kNoTimestamp()),
+ cluster_ended_(false),
audio_(audio_track_num),
video_(video_track_num) {
CHECK_GE(video_encryption_key_id_size, 0);
@@ -59,6 +60,7 @@ void WebMClusterParser::Reset() {
last_block_timecode_ = -1;
cluster_timecode_ = -1;
cluster_start_time_ = kNoTimestamp();
+ cluster_ended_ = false;
parser_.Reset();
audio_.Reset();
video_.Reset();
@@ -70,10 +72,13 @@ int WebMClusterParser::Parse(const uint8* buf, int size) {
int result = parser_.Parse(buf, size);
- if (result <= 0)
+ if (result <= 0) {
+ cluster_ended_ = false;
return result;
+ }
- if (parser_.IsParsingComplete()) {
+ cluster_ended_ = parser_.IsParsingComplete();
+ if (cluster_ended_) {
// If there were no buffers in this cluster, set the cluster start time to
// be the |cluster_timecode_|.
if (cluster_start_time_ == kNoTimestamp()) {