Index: media/webm/webm_cluster_parser.cc |
diff --git a/media/webm/webm_cluster_parser.cc b/media/webm/webm_cluster_parser.cc |
index 8eb045cbf8a3e3ffdf577868bce4c0dd3eb86683..995578cd988012600de699b6c4651fd5eb7cc57f 100644 |
--- a/media/webm/webm_cluster_parser.cc |
+++ b/media/webm/webm_cluster_parser.cc |
@@ -33,11 +33,31 @@ WebMClusterParser::WebMClusterParser(int64 timecode_scale, |
WebMClusterParser::~WebMClusterParser() {} |
int WebMClusterParser::Parse(const uint8* buf, int size) { |
scherkus (not reviewing)
2011/12/03 01:56:51
perhaps the .h docs need to be updated because I'm
|
- last_block_timecode_ = -1; |
- cluster_timecode_ = -1; |
audio_buffers_.clear(); |
video_buffers_.clear(); |
+ int id; |
+ int64 element_size; |
+ int result = WebMParseElementHeader(buf, size, &id, &element_size); |
+ |
+ if (result <= 0) |
+ return result; |
+ |
+ if (id == kWebMIdCues) { |
scherkus (not reviewing)
2011/12/03 01:56:51
sanity check: this branch checks for a CUES sectio
|
+ if (size < (result + element_size)) { |
+ // We don't have the whole element yet. Signal we need more data. |
+ return 0; |
+ } |
+ // Skip the element. |
+ return result + element_size; |
+ } else if (id != kWebMIdCluster) { |
scherkus (not reviewing)
2011/12/03 01:56:51
nit: no need for else
|
+ VLOG(1) << "Unexpected ID 0x" << std::hex << id; |
scherkus (not reviewing)
2011/12/03 01:56:51
DVLOG
|
+ return -1; |
+ } |
+ |
+ last_block_timecode_ = -1; |
+ cluster_timecode_ = -1; |
+ |
return WebMParseListElement(buf, size, kWebMIdCluster, 1, this); |
} |