Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(63)

Side by Side Diff: media/filters/vp8_parser_unittest.cc

Issue 1269473002: Extract IVF parser from VP8 parser unittest (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: DKIF Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/command_line.h"
6 #include "base/files/memory_mapped_file.h" 5 #include "base/files/memory_mapped_file.h"
7 #include "base/logging.h" 6 #include "base/logging.h"
8 #include "base/strings/string_number_conversions.h"
9 #include "base/sys_byteorder.h"
10 #include "media/base/test_data_util.h" 7 #include "media/base/test_data_util.h"
8 #include "media/filters/ivf_parser.h"
11 #include "media/filters/vp8_parser.h" 9 #include "media/filters/vp8_parser.h"
12 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
13 11
14 namespace media { 12 namespace media {
15 13
16 TEST(Vp8ParserTest, StreamFileParsing) { 14 TEST(Vp8ParserTest, StreamFileParsing) {
17 base::FilePath file_path = GetTestDataFilePath("test-25fps.vp8"); 15 base::FilePath file_path = GetTestDataFilePath("test-25fps.vp8");
18 // Number of frames in the test stream to be parsed.
19 const int num_frames = 250;
20
21 base::MemoryMappedFile stream; 16 base::MemoryMappedFile stream;
22 ASSERT_TRUE(stream.Initialize(file_path)) 17 ASSERT_TRUE(stream.Initialize(file_path))
23 << "Couldn't open stream file: " << file_path.MaybeAsASCII(); 18 << "Couldn't open stream file: " << file_path.MaybeAsASCII();
24 19
25 Vp8Parser parser; 20 IvfParser ivf_parser;
21 IvfFileHeader ivf_file_header;
22 memset(&ivf_file_header, 0, sizeof(ivf_file_header));
23 ASSERT_TRUE(
24 ivf_parser.Initialize(stream.data(), stream.length(), &ivf_file_header));
25 ASSERT_EQ(ivf_file_header.fourcc, 0x30385056u); // VP80
26
27 Vp8Parser vp8_parser;
28 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.
29 memset(&ivf_frame_header, 0, sizeof(ivf_frame_header));
30 size_t num_parsed_frames = 0;
26 31
27 // Parse until the end of stream/unsupported stream/error in stream is found. 32 // Parse until the end of stream/unsupported stream/error in stream is found.
28 int num_parsed_frames = 0; 33 const uint8_t* payload = nullptr;
29 const uint8_t* stream_ptr = stream.data(); 34 while (ivf_parser.ParseNextFrame(&ivf_frame_header, &payload)) {
30 size_t bytes_left = stream.length(); 35 Vp8FrameHeader fhdr;
31 // Skip IVF file header.
32 const size_t kIvfStreamHeaderLen = 32;
33 CHECK_GE(bytes_left, kIvfStreamHeaderLen);
34 stream_ptr += kIvfStreamHeaderLen;
35 bytes_left -= kIvfStreamHeaderLen;
36 36
37 const size_t kIvfFrameHeaderLen = 12; 37 ASSERT_TRUE(
38 while (bytes_left > kIvfFrameHeaderLen) { 38 vp8_parser.ParseFrame(payload, ivf_frame_header.frame_size, &fhdr));
39 Vp8FrameHeader fhdr;
40 uint32_t frame_size =
41 base::ByteSwapToLE32(*reinterpret_cast<const uint32_t*>(stream_ptr));
42 // Skip IVF frame header.
43 stream_ptr += kIvfFrameHeaderLen;
44 bytes_left -= kIvfFrameHeaderLen;
45 39
46 ASSERT_TRUE(parser.ParseFrame(stream_ptr, frame_size, &fhdr));
47
48 stream_ptr += frame_size;
49 bytes_left -= frame_size;
50 ++num_parsed_frames; 40 ++num_parsed_frames;
51 } 41 }
52 42
53 DVLOG(1) << "Number of successfully parsed frames before EOS: " 43 DVLOG(1) << "Number of successfully parsed frames before EOS: "
54 << num_parsed_frames; 44 << num_parsed_frames;
55 45
56 EXPECT_EQ(num_frames, num_parsed_frames); 46 EXPECT_EQ(ivf_file_header.num_frames, num_parsed_frames);
57 } 47 }
58 48
59 } // namespace media 49 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698