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);