OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
11 #include <stdio.h> | 11 #include <stdio.h> |
| 12 |
| 13 #include <memory> |
12 #include <string> | 14 #include <string> |
13 | 15 |
14 #include "testing/gtest/include/gtest/gtest.h" | 16 #include "testing/gtest/include/gtest/gtest.h" |
15 #include "webrtc/base/scoped_ptr.h" | |
16 #include "webrtc/test/frame_generator.h" | 17 #include "webrtc/test/frame_generator.h" |
17 #include "webrtc/test/testsupport/fileutils.h" | 18 #include "webrtc/test/testsupport/fileutils.h" |
18 | 19 |
19 namespace webrtc { | 20 namespace webrtc { |
20 namespace test { | 21 namespace test { |
21 | 22 |
22 static const int kFrameWidth = 4; | 23 static const int kFrameWidth = 4; |
23 static const int kFrameHeight = 4; | 24 static const int kFrameHeight = 4; |
24 | 25 |
25 class FrameGeneratorTest : public ::testing::Test { | 26 class FrameGeneratorTest : public ::testing::Test { |
(...skipping 13 matching lines...) Expand all Loading... |
39 fclose(file); | 40 fclose(file); |
40 } | 41 } |
41 void TearDown() override { | 42 void TearDown() override { |
42 remove(one_frame_filename_.c_str()); | 43 remove(one_frame_filename_.c_str()); |
43 remove(two_frame_filename_.c_str()); | 44 remove(two_frame_filename_.c_str()); |
44 } | 45 } |
45 | 46 |
46 protected: | 47 protected: |
47 void WriteYuvFile(FILE* file, uint8_t y, uint8_t u, uint8_t v) { | 48 void WriteYuvFile(FILE* file, uint8_t y, uint8_t u, uint8_t v) { |
48 assert(file); | 49 assert(file); |
49 rtc::scoped_ptr<uint8_t[]> plane_buffer(new uint8_t[y_size]); | 50 std::unique_ptr<uint8_t[]> plane_buffer(new uint8_t[y_size]); |
50 memset(plane_buffer.get(), y, y_size); | 51 memset(plane_buffer.get(), y, y_size); |
51 fwrite(plane_buffer.get(), 1, y_size, file); | 52 fwrite(plane_buffer.get(), 1, y_size, file); |
52 memset(plane_buffer.get(), u, uv_size); | 53 memset(plane_buffer.get(), u, uv_size); |
53 fwrite(plane_buffer.get(), 1, uv_size, file); | 54 fwrite(plane_buffer.get(), 1, uv_size, file); |
54 memset(plane_buffer.get(), v, uv_size); | 55 memset(plane_buffer.get(), v, uv_size); |
55 fwrite(plane_buffer.get(), 1, uv_size, file); | 56 fwrite(plane_buffer.get(), 1, uv_size, file); |
56 } | 57 } |
57 | 58 |
58 void CheckFrameAndMutate(VideoFrame* frame, uint8_t y, uint8_t u, uint8_t v) { | 59 void CheckFrameAndMutate(VideoFrame* frame, uint8_t y, uint8_t u, uint8_t v) { |
59 // Check that frame is valid, has the correct color and timestamp are clean. | 60 // Check that frame is valid, has the correct color and timestamp are clean. |
(...skipping 21 matching lines...) Expand all Loading... |
81 frame->set_timestamp(13); | 82 frame->set_timestamp(13); |
82 } | 83 } |
83 | 84 |
84 std::string two_frame_filename_; | 85 std::string two_frame_filename_; |
85 std::string one_frame_filename_; | 86 std::string one_frame_filename_; |
86 const int y_size = kFrameWidth * kFrameHeight; | 87 const int y_size = kFrameWidth * kFrameHeight; |
87 const int uv_size = ((kFrameHeight + 1) / 2) * ((kFrameWidth + 1) / 2); | 88 const int uv_size = ((kFrameHeight + 1) / 2) * ((kFrameWidth + 1) / 2); |
88 }; | 89 }; |
89 | 90 |
90 TEST_F(FrameGeneratorTest, SingleFrameFile) { | 91 TEST_F(FrameGeneratorTest, SingleFrameFile) { |
91 rtc::scoped_ptr<FrameGenerator> generator(FrameGenerator::CreateFromYuvFile( | 92 std::unique_ptr<FrameGenerator> generator(FrameGenerator::CreateFromYuvFile( |
92 std::vector<std::string>(1, one_frame_filename_), kFrameWidth, | 93 std::vector<std::string>(1, one_frame_filename_), kFrameWidth, |
93 kFrameHeight, 1)); | 94 kFrameHeight, 1)); |
94 CheckFrameAndMutate(generator->NextFrame(), 255, 255, 255); | 95 CheckFrameAndMutate(generator->NextFrame(), 255, 255, 255); |
95 CheckFrameAndMutate(generator->NextFrame(), 255, 255, 255); | 96 CheckFrameAndMutate(generator->NextFrame(), 255, 255, 255); |
96 } | 97 } |
97 | 98 |
98 TEST_F(FrameGeneratorTest, TwoFrameFile) { | 99 TEST_F(FrameGeneratorTest, TwoFrameFile) { |
99 rtc::scoped_ptr<FrameGenerator> generator(FrameGenerator::CreateFromYuvFile( | 100 std::unique_ptr<FrameGenerator> generator(FrameGenerator::CreateFromYuvFile( |
100 std::vector<std::string>(1, two_frame_filename_), kFrameWidth, | 101 std::vector<std::string>(1, two_frame_filename_), kFrameWidth, |
101 kFrameHeight, 1)); | 102 kFrameHeight, 1)); |
102 CheckFrameAndMutate(generator->NextFrame(), 0, 0, 0); | 103 CheckFrameAndMutate(generator->NextFrame(), 0, 0, 0); |
103 CheckFrameAndMutate(generator->NextFrame(), 127, 127, 127); | 104 CheckFrameAndMutate(generator->NextFrame(), 127, 127, 127); |
104 CheckFrameAndMutate(generator->NextFrame(), 0, 0, 0); | 105 CheckFrameAndMutate(generator->NextFrame(), 0, 0, 0); |
105 } | 106 } |
106 | 107 |
107 TEST_F(FrameGeneratorTest, MultipleFrameFiles) { | 108 TEST_F(FrameGeneratorTest, MultipleFrameFiles) { |
108 std::vector<std::string> files; | 109 std::vector<std::string> files; |
109 files.push_back(two_frame_filename_); | 110 files.push_back(two_frame_filename_); |
110 files.push_back(one_frame_filename_); | 111 files.push_back(one_frame_filename_); |
111 | 112 |
112 rtc::scoped_ptr<FrameGenerator> generator( | 113 std::unique_ptr<FrameGenerator> generator( |
113 FrameGenerator::CreateFromYuvFile(files, kFrameWidth, kFrameHeight, 1)); | 114 FrameGenerator::CreateFromYuvFile(files, kFrameWidth, kFrameHeight, 1)); |
114 CheckFrameAndMutate(generator->NextFrame(), 0, 0, 0); | 115 CheckFrameAndMutate(generator->NextFrame(), 0, 0, 0); |
115 CheckFrameAndMutate(generator->NextFrame(), 127, 127, 127); | 116 CheckFrameAndMutate(generator->NextFrame(), 127, 127, 127); |
116 CheckFrameAndMutate(generator->NextFrame(), 255, 255, 255); | 117 CheckFrameAndMutate(generator->NextFrame(), 255, 255, 255); |
117 CheckFrameAndMutate(generator->NextFrame(), 0, 0, 0); | 118 CheckFrameAndMutate(generator->NextFrame(), 0, 0, 0); |
118 } | 119 } |
119 | 120 |
120 TEST_F(FrameGeneratorTest, TwoFrameFileWithRepeat) { | 121 TEST_F(FrameGeneratorTest, TwoFrameFileWithRepeat) { |
121 const int kRepeatCount = 3; | 122 const int kRepeatCount = 3; |
122 rtc::scoped_ptr<FrameGenerator> generator(FrameGenerator::CreateFromYuvFile( | 123 std::unique_ptr<FrameGenerator> generator(FrameGenerator::CreateFromYuvFile( |
123 std::vector<std::string>(1, two_frame_filename_), kFrameWidth, | 124 std::vector<std::string>(1, two_frame_filename_), kFrameWidth, |
124 kFrameHeight, kRepeatCount)); | 125 kFrameHeight, kRepeatCount)); |
125 for (int i = 0; i < kRepeatCount; ++i) | 126 for (int i = 0; i < kRepeatCount; ++i) |
126 CheckFrameAndMutate(generator->NextFrame(), 0, 0, 0); | 127 CheckFrameAndMutate(generator->NextFrame(), 0, 0, 0); |
127 for (int i = 0; i < kRepeatCount; ++i) | 128 for (int i = 0; i < kRepeatCount; ++i) |
128 CheckFrameAndMutate(generator->NextFrame(), 127, 127, 127); | 129 CheckFrameAndMutate(generator->NextFrame(), 127, 127, 127); |
129 CheckFrameAndMutate(generator->NextFrame(), 0, 0, 0); | 130 CheckFrameAndMutate(generator->NextFrame(), 0, 0, 0); |
130 } | 131 } |
131 | 132 |
132 TEST_F(FrameGeneratorTest, MultipleFrameFilesWithRepeat) { | 133 TEST_F(FrameGeneratorTest, MultipleFrameFilesWithRepeat) { |
133 const int kRepeatCount = 3; | 134 const int kRepeatCount = 3; |
134 std::vector<std::string> files; | 135 std::vector<std::string> files; |
135 files.push_back(two_frame_filename_); | 136 files.push_back(two_frame_filename_); |
136 files.push_back(one_frame_filename_); | 137 files.push_back(one_frame_filename_); |
137 rtc::scoped_ptr<FrameGenerator> generator(FrameGenerator::CreateFromYuvFile( | 138 std::unique_ptr<FrameGenerator> generator(FrameGenerator::CreateFromYuvFile( |
138 files, kFrameWidth, kFrameHeight, kRepeatCount)); | 139 files, kFrameWidth, kFrameHeight, kRepeatCount)); |
139 for (int i = 0; i < kRepeatCount; ++i) | 140 for (int i = 0; i < kRepeatCount; ++i) |
140 CheckFrameAndMutate(generator->NextFrame(), 0, 0, 0); | 141 CheckFrameAndMutate(generator->NextFrame(), 0, 0, 0); |
141 for (int i = 0; i < kRepeatCount; ++i) | 142 for (int i = 0; i < kRepeatCount; ++i) |
142 CheckFrameAndMutate(generator->NextFrame(), 127, 127, 127); | 143 CheckFrameAndMutate(generator->NextFrame(), 127, 127, 127); |
143 for (int i = 0; i < kRepeatCount; ++i) | 144 for (int i = 0; i < kRepeatCount; ++i) |
144 CheckFrameAndMutate(generator->NextFrame(), 255, 255, 255); | 145 CheckFrameAndMutate(generator->NextFrame(), 255, 255, 255); |
145 CheckFrameAndMutate(generator->NextFrame(), 0, 0, 0); | 146 CheckFrameAndMutate(generator->NextFrame(), 0, 0, 0); |
146 } | 147 } |
147 | 148 |
148 } // namespace test | 149 } // namespace test |
149 } // namespace webrtc | 150 } // namespace webrtc |
OLD | NEW |