Index: media/filters/vp8_parser_unittest.cc |
diff --git a/media/filters/vp8_parser_unittest.cc b/media/filters/vp8_parser_unittest.cc |
index 39a2a801032e7d6cb2f459199b611321ae1effc2..50f21e92a1cc7f797b1b3fa4d59e2da2ba98e787 100644 |
--- a/media/filters/vp8_parser_unittest.cc |
+++ b/media/filters/vp8_parser_unittest.cc |
@@ -2,12 +2,10 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include "base/command_line.h" |
#include "base/files/memory_mapped_file.h" |
#include "base/logging.h" |
-#include "base/strings/string_number_conversions.h" |
-#include "base/sys_byteorder.h" |
#include "media/base/test_data_util.h" |
+#include "media/filters/ivf_parser.h" |
#include "media/filters/vp8_parser.h" |
#include "testing/gtest/include/gtest/gtest.h" |
@@ -15,45 +13,37 @@ namespace media { |
TEST(Vp8ParserTest, StreamFileParsing) { |
base::FilePath file_path = GetTestDataFilePath("test-25fps.vp8"); |
- // Number of frames in the test stream to be parsed. |
- const int num_frames = 250; |
- |
base::MemoryMappedFile stream; |
ASSERT_TRUE(stream.Initialize(file_path)) |
<< "Couldn't open stream file: " << file_path.MaybeAsASCII(); |
- Vp8Parser parser; |
+ IvfParser ivf_parser; |
+ IvfFileHeader ivf_file_header; |
+ memset(&ivf_file_header, 0, sizeof(ivf_file_header)); |
+ ASSERT_TRUE( |
+ ivf_parser.Initialize(stream.data(), stream.length(), &ivf_file_header)); |
+ ASSERT_EQ(ivf_file_header.fourcc, 0x30385056u); // VP80 |
+ |
+ Vp8Parser vp8_parser; |
+ IvfFrameHeader ivf_frame_header; |
xhwang
2015/08/06 21:56:10
Here and in other places, can you just do
IvfFra
kcwu
2015/08/07 06:20:08
Done.
|
+ memset(&ivf_frame_header, 0, sizeof(ivf_frame_header)); |
+ size_t num_parsed_frames = 0; |
// Parse until the end of stream/unsupported stream/error in stream is found. |
- int num_parsed_frames = 0; |
- const uint8_t* stream_ptr = stream.data(); |
- size_t bytes_left = stream.length(); |
- // Skip IVF file header. |
- const size_t kIvfStreamHeaderLen = 32; |
- CHECK_GE(bytes_left, kIvfStreamHeaderLen); |
- stream_ptr += kIvfStreamHeaderLen; |
- bytes_left -= kIvfStreamHeaderLen; |
- |
- const size_t kIvfFrameHeaderLen = 12; |
- while (bytes_left > kIvfFrameHeaderLen) { |
+ const uint8_t* payload = nullptr; |
+ while (ivf_parser.ParseNextFrame(&ivf_frame_header, &payload)) { |
Vp8FrameHeader fhdr; |
- uint32_t frame_size = |
- base::ByteSwapToLE32(*reinterpret_cast<const uint32_t*>(stream_ptr)); |
- // Skip IVF frame header. |
- stream_ptr += kIvfFrameHeaderLen; |
- bytes_left -= kIvfFrameHeaderLen; |
- ASSERT_TRUE(parser.ParseFrame(stream_ptr, frame_size, &fhdr)); |
+ ASSERT_TRUE( |
+ vp8_parser.ParseFrame(payload, ivf_frame_header.frame_size, &fhdr)); |
- stream_ptr += frame_size; |
- bytes_left -= frame_size; |
++num_parsed_frames; |
} |
DVLOG(1) << "Number of successfully parsed frames before EOS: " |
<< num_parsed_frames; |
- EXPECT_EQ(num_frames, num_parsed_frames); |
+ EXPECT_EQ(ivf_file_header.num_frames, num_parsed_frames); |
} |
} // namespace media |