Index: media/webm/webm_info_parser.cc |
diff --git a/media/webm/webm_info_parser.cc b/media/webm/webm_info_parser.cc |
index 41e1a25138abe08471b59f6f71e046bfc0b67813..5807d7e3883e7e6c883c3762173f18884536df6e 100644 |
--- a/media/webm/webm_info_parser.cc |
+++ b/media/webm/webm_info_parser.cc |
@@ -17,7 +17,17 @@ WebMInfoParser::WebMInfoParser() |
WebMInfoParser::~WebMInfoParser() {} |
int WebMInfoParser::Parse(const uint8* buf, int size) { |
- return WebMParseListElement(buf, size, kWebMIdInfo, 1, this); |
+ timecode_scale_ = -1; |
+ duration_ = -1; |
+ |
+ WebMListParser parser(kWebMIdInfo); |
+ int result = parser.Parse(buf, size, this); |
+ |
+ if (result <= 0) |
+ return result; |
+ |
+ // For now we do all or nothing parsing. |
+ return parser.IsParsingComplete() ? result : 0; |
} |
bool WebMInfoParser::OnListStart(int id) { return true; } |
@@ -36,7 +46,7 @@ bool WebMInfoParser::OnUInt(int id, int64 val) { |
return true; |
if (timecode_scale_ != -1) { |
- VLOG(1) << "Multiple values for id " << std::hex << id << " specified"; |
+ DVLOG(1) << "Multiple values for id " << std::hex << id << " specified"; |
return false; |
} |
@@ -46,12 +56,12 @@ bool WebMInfoParser::OnUInt(int id, int64 val) { |
bool WebMInfoParser::OnFloat(int id, double val) { |
if (id != kWebMIdDuration) { |
- VLOG(1) << "Unexpected float for id" << std::hex << id; |
+ DVLOG(1) << "Unexpected float for id" << std::hex << id; |
return false; |
} |
if (duration_ != -1) { |
- VLOG(1) << "Multiple values for duration."; |
+ DVLOG(1) << "Multiple values for duration."; |
return false; |
} |