Merge "vp9_header_parser: make SetFrame private"
diff --git a/common/vp9_header_parser.cc b/common/vp9_header_parser.cc
index e58b19b..604a050 100644
--- a/common/vp9_header_parser.cc
+++ b/common/vp9_header_parser.cc
@@ -33,7 +33,10 @@
return true;
}
-bool Vp9HeaderParser::ParseUncompressedHeader() {
+bool Vp9HeaderParser::ParseUncompressedHeader(const uint8_t* frame,
+ size_t length) {
+ if (!SetFrame(frame, length))
+ return false;
const int frame_marker = VpxReadLiteral(2);
if (frame_marker != kVp9FrameMarker) {
fprintf(stderr, "Invalid VP9 frame_marker:%d\n", frame_marker);
diff --git a/common/vp9_header_parser.h b/common/vp9_header_parser.h
index ea975b8..06bd656 100644
--- a/common/vp9_header_parser.h
+++ b/common/vp9_header_parser.h
@@ -51,12 +51,9 @@
column_tiles_(0),
frame_parallel_mode_(0) {}
- // Set the compressed VP9 frame. This must be called before
- // ParseUncompressedHeader.
- bool SetFrame(const uint8_t* frame, size_t length);
-
- // Parse the VP9 uncompressed header.
- bool ParseUncompressedHeader();
+ // Parse the VP9 uncompressed header. The return values of the remaining
+ // functions are only valid on success.
+ bool ParseUncompressedHeader(const uint8_t* frame, size_t length);
size_t frame_size() const { return frame_size_; }
int profile() const { return profile_; }
@@ -73,6 +70,9 @@
int frame_parallel_mode() const { return frame_parallel_mode_; }
private:
+ // Set the compressed VP9 frame.
+ bool SetFrame(const uint8_t* frame, size_t length);
+
// Returns the next bit of the frame.
int ReadBit();
diff --git a/common/vp9_header_parser_tests.cc b/common/vp9_header_parser_tests.cc
index 1e8eceb..d13bff2 100644
--- a/common/vp9_header_parser_tests.cc
+++ b/common/vp9_header_parser_tests.cc
@@ -107,8 +107,8 @@
data_len = static_cast<size_t>(frame.len);
}
ASSERT_FALSE(frame.Read(&reader_, data));
- parser_.SetFrame(data, data_len);
- ASSERT_EQ(parser_.ParseUncompressedHeader(), !invalid_bitstream);
+ ASSERT_EQ(parser_.ParseUncompressedHeader(data, data_len),
+ !invalid_bitstream);
}
}
@@ -165,6 +165,14 @@
}
}
+TEST_F(Vp9HeaderParserTests, API) {
+ vp9_parser::Vp9HeaderParser parser;
+ uint8_t data;
+ EXPECT_FALSE(parser.ParseUncompressedHeader(NULL, 0));
+ EXPECT_FALSE(parser.ParseUncompressedHeader(NULL, 10));
+ EXPECT_FALSE(parser.ParseUncompressedHeader(&data, 0));
+}
+
} // namespace
int main(int argc, char* argv[]) {
diff --git a/common/vp9_level_stats_tests.cc b/common/vp9_level_stats_tests.cc
index 84210ae..0dec071 100644
--- a/common/vp9_level_stats_tests.cc
+++ b/common/vp9_level_stats_tests.cc
@@ -94,8 +94,7 @@
data_len = static_cast<size_t>(frame.len);
}
ASSERT_FALSE(frame.Read(&reader_, &data[0]));
- parser_.SetFrame(&data[0], data_len);
- parser_.ParseUncompressedHeader();
+ parser_.ParseUncompressedHeader(&data[0], data_len);
stats_.AddFrame(parser_, time_ns);
}
}
diff --git a/webm_info.cc b/webm_info.cc
index 03077e7..1b05067 100644
--- a/webm_info.cc
+++ b/webm_info.cc
@@ -715,8 +715,7 @@
static_cast<uint32_t>(frame_length));
return;
}
- parser->SetFrame(data, frame_length);
- if (!parser->ParseUncompressedHeader())
+ if (!parser->ParseUncompressedHeader(data, frame_length))
return;
level_stats->AddFrame(*parser, time_ns);