| // Copyright 2015 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "base/files/memory_mapped_file.h" |
| #include "base/logging.h" |
| #include "cobalt/media/base/test_data_util.h" |
| #include "cobalt/media/filters/ivf_parser.h" |
| #include "cobalt/media/filters/vp8_parser.h" |
| #include "starboard/types.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| namespace cobalt { |
| namespace media { |
| |
| TEST(Vp8ParserTest, StreamFileParsing) { |
| base::FilePath file_path = GetTestDataFilePath("test-25fps.vp8"); |
| base::MemoryMappedFile stream; |
| ASSERT_TRUE(stream.Initialize(file_path)) << "Couldn't open stream file: " |
| << file_path.MaybeAsASCII(); |
| |
| IvfParser ivf_parser; |
| IvfFileHeader 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 = {}; |
| size_t num_parsed_frames = 0; |
| |
| // Parse until the end of stream/unsupported stream/error in stream is found. |
| const uint8_t* payload = NULL; |
| while (ivf_parser.ParseNextFrame(&ivf_frame_header, &payload)) { |
| Vp8FrameHeader fhdr; |
| |
| ASSERT_TRUE( |
| vp8_parser.ParseFrame(payload, ivf_frame_header.frame_size, &fhdr)); |
| |
| ++num_parsed_frames; |
| } |
| |
| DVLOG(1) << "Number of successfully parsed frames before EOS: " |
| << num_parsed_frames; |
| |
| EXPECT_EQ(ivf_file_header.num_frames, num_parsed_frames); |
| } |
| |
| } // namespace media |
| } // namespace cobalt |