Revert "[M120 Migration]Fix for crash during chrome exit"
[platform/framework/web/chromium-efl.git] / media / filters / ivf_parser_unittest.cc
1 // Copyright 2015 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include <stddef.h>
6 #include <stdint.h>
7
8 #include "base/files/memory_mapped_file.h"
9 #include "media/base/test_data_util.h"
10 #include "media/filters/ivf_parser.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12
13 namespace media {
14
15 TEST(IvfParserTest, StreamFileParsing) {
16   base::FilePath file_path = GetTestDataFilePath("test-25fps.vp8");
17
18   base::MemoryMappedFile stream;
19   ASSERT_TRUE(stream.Initialize(file_path)) << "Couldn't open stream file: "
20                                             << file_path.MaybeAsASCII();
21
22   IvfParser parser;
23   IvfFileHeader file_header = {};
24
25   EXPECT_TRUE(parser.Initialize(stream.data(), stream.length(), &file_header));
26
27   // Check file header fields.
28   EXPECT_EQ(0, memcmp(file_header.signature, kIvfHeaderSignature,
29                       sizeof(file_header.signature)));
30   EXPECT_EQ(0, file_header.version);
31   EXPECT_EQ(sizeof(IvfFileHeader), file_header.header_size);
32   EXPECT_EQ(0x30385056u, file_header.fourcc);  // VP80
33   EXPECT_EQ(320u, file_header.width);
34   EXPECT_EQ(240u, file_header.height);
35   EXPECT_EQ(50u, file_header.timebase_denum);
36   EXPECT_EQ(2u, file_header.timebase_num);
37   EXPECT_EQ(250u, file_header.num_frames);
38
39   IvfFrameHeader frame_header;
40   size_t num_parsed_frames = 0;
41   const uint8_t* payload = nullptr;
42   while (parser.ParseNextFrame(&frame_header, &payload)) {
43     ++num_parsed_frames;
44     EXPECT_TRUE(payload != nullptr);
45
46     // Only check the first frame.
47     if (num_parsed_frames == 1u) {
48       EXPECT_EQ(14788u, frame_header.frame_size);
49       EXPECT_EQ(0u, frame_header.timestamp);
50       EXPECT_EQ(
51           static_cast<ptrdiff_t>(sizeof(file_header) + sizeof(frame_header)),
52           payload - stream.data());
53     }
54   }
55
56   EXPECT_EQ(file_header.num_frames, num_parsed_frames);
57 }
58
59 }  // namespace media