| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2011 The LibYuv Project Authors. All rights reserved. | 2 * Copyright 2011 The LibYuv 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 |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 150 uint32 fourcc; | 150 uint32 fourcc; |
| 151 const int kMaxTest = benchmark_width_ * benchmark_height_ * 4; | 151 const int kMaxTest = benchmark_width_ * benchmark_height_ * 4; |
| 152 align_buffer_page_end(src_a, kMaxTest); | 152 align_buffer_page_end(src_a, kMaxTest); |
| 153 for (int i = 0; i < kMaxTest; ++i) { | 153 for (int i = 0; i < kMaxTest; ++i) { |
| 154 src_a[i] = 255; | 154 src_a[i] = 255; |
| 155 } | 155 } |
| 156 | 156 |
| 157 src_a[0] = 0; | 157 src_a[0] = 0; |
| 158 fourcc = ARGBDetect(src_a, benchmark_width_ * 4, | 158 fourcc = ARGBDetect(src_a, benchmark_width_ * 4, |
| 159 benchmark_width_, benchmark_height_); | 159 benchmark_width_, benchmark_height_); |
| 160 EXPECT_EQ(libyuv::FOURCC_BGRA, fourcc); | 160 EXPECT_EQ(static_cast<uint32>(libyuv::FOURCC_BGRA), fourcc); |
| 161 src_a[0] = 255; | 161 src_a[0] = 255; |
| 162 src_a[3] = 0; | 162 src_a[3] = 0; |
| 163 fourcc = ARGBDetect(src_a, benchmark_width_ * 4, | 163 fourcc = ARGBDetect(src_a, benchmark_width_ * 4, |
| 164 benchmark_width_, benchmark_height_); | 164 benchmark_width_, benchmark_height_); |
| 165 EXPECT_EQ(libyuv::FOURCC_ARGB, fourcc); | 165 EXPECT_EQ(static_cast<uint32>(libyuv::FOURCC_ARGB), fourcc); |
| 166 src_a[3] = 255; | 166 src_a[3] = 255; |
| 167 | 167 |
| 168 for (int i = 0; i < benchmark_iterations_; ++i) { | 168 for (int i = 0; i < benchmark_iterations_; ++i) { |
| 169 fourcc = ARGBDetect(src_a, benchmark_width_ * 4, | 169 fourcc = ARGBDetect(src_a, benchmark_width_ * 4, |
| 170 benchmark_width_, benchmark_height_); | 170 benchmark_width_, benchmark_height_); |
| 171 } | 171 } |
| 172 EXPECT_EQ(0, fourcc); | 172 EXPECT_EQ(0u, fourcc); |
| 173 | 173 |
| 174 free_aligned_buffer_page_end(src_a); | 174 free_aligned_buffer_page_end(src_a); |
| 175 } | 175 } |
| 176 | 176 |
| 177 TEST_F(LibYUVBaseTest, BenchmarkARGBDetect_Unaligned) { | 177 TEST_F(LibYUVBaseTest, BenchmarkARGBDetect_Unaligned) { |
| 178 uint32 fourcc; | 178 uint32 fourcc; |
| 179 const int kMaxTest = benchmark_width_ * benchmark_height_ * 4 + 1; | 179 const int kMaxTest = benchmark_width_ * benchmark_height_ * 4 + 1; |
| 180 align_buffer_page_end(src_a, kMaxTest); | 180 align_buffer_page_end(src_a, kMaxTest); |
| 181 for (int i = 1; i < kMaxTest; ++i) { | 181 for (int i = 1; i < kMaxTest; ++i) { |
| 182 src_a[i] = 255; | 182 src_a[i] = 255; |
| 183 } | 183 } |
| 184 | 184 |
| 185 src_a[0 + 1] = 0; | 185 src_a[0 + 1] = 0; |
| 186 fourcc = ARGBDetect(src_a + 1, benchmark_width_ * 4, | 186 fourcc = ARGBDetect(src_a + 1, benchmark_width_ * 4, |
| 187 benchmark_width_, benchmark_height_); | 187 benchmark_width_, benchmark_height_); |
| 188 EXPECT_EQ(libyuv::FOURCC_BGRA, fourcc); | 188 EXPECT_EQ(static_cast<uint32>(libyuv::FOURCC_BGRA), fourcc); |
| 189 src_a[0 + 1] = 255; | 189 src_a[0 + 1] = 255; |
| 190 src_a[3 + 1] = 0; | 190 src_a[3 + 1] = 0; |
| 191 fourcc = ARGBDetect(src_a + 1, benchmark_width_ * 4, | 191 fourcc = ARGBDetect(src_a + 1, benchmark_width_ * 4, |
| 192 benchmark_width_, benchmark_height_); | 192 benchmark_width_, benchmark_height_); |
| 193 EXPECT_EQ(libyuv::FOURCC_ARGB, fourcc); | 193 EXPECT_EQ(static_cast<uint32>(libyuv::FOURCC_ARGB), fourcc); |
| 194 src_a[3 + 1] = 255; | 194 src_a[3 + 1] = 255; |
| 195 | 195 |
| 196 for (int i = 0; i < benchmark_iterations_; ++i) { | 196 for (int i = 0; i < benchmark_iterations_; ++i) { |
| 197 fourcc = ARGBDetect(src_a + 1, benchmark_width_ * 4, | 197 fourcc = ARGBDetect(src_a + 1, benchmark_width_ * 4, |
| 198 benchmark_width_, benchmark_height_); | 198 benchmark_width_, benchmark_height_); |
| 199 } | 199 } |
| 200 EXPECT_EQ(0, fourcc); | 200 EXPECT_EQ(0u, fourcc); |
| 201 | 201 |
| 202 free_aligned_buffer_page_end(src_a); | 202 free_aligned_buffer_page_end(src_a); |
| 203 } | 203 } |
| 204 TEST_F(LibYUVBaseTest, BenchmarkSumSquareError_Opt) { | 204 TEST_F(LibYUVBaseTest, BenchmarkSumSquareError_Opt) { |
| 205 const int kMaxWidth = 4096 * 3; | 205 const int kMaxWidth = 4096 * 3; |
| 206 align_buffer_page_end(src_a, kMaxWidth); | 206 align_buffer_page_end(src_a, kMaxWidth); |
| 207 align_buffer_page_end(src_b, kMaxWidth); | 207 align_buffer_page_end(src_b, kMaxWidth); |
| 208 memset(src_a, 0, kMaxWidth); | 208 memset(src_a, 0, kMaxWidth); |
| 209 memset(src_b, 0, kMaxWidth); | 209 memset(src_b, 0, kMaxWidth); |
| 210 | 210 |
| 211 memcpy(src_a, "test0123test4567", 16); | 211 memcpy(src_a, "test0123test4567", 16); |
| 212 memcpy(src_b, "tick0123tock4567", 16); | 212 memcpy(src_b, "tick0123tock4567", 16); |
| 213 uint64 h1 = ComputeSumSquareError(src_a, src_b, 16); | 213 uint64 h1 = ComputeSumSquareError(src_a, src_b, 16); |
| 214 EXPECT_EQ(790u, h1); | 214 EXPECT_EQ(790u, h1); |
| 215 | 215 |
| 216 for (int i = 0; i < kMaxWidth; ++i) { | 216 for (int i = 0; i < kMaxWidth; ++i) { |
| 217 src_a[i] = i; | 217 src_a[i] = i; |
| 218 src_b[i] = i; | 218 src_b[i] = i; |
| 219 } | 219 } |
| 220 memset(src_a, 0, kMaxWidth); | 220 memset(src_a, 0, kMaxWidth); |
| 221 memset(src_b, 0, kMaxWidth); | 221 memset(src_b, 0, kMaxWidth); |
| 222 | 222 |
| 223 int count = benchmark_iterations_ * | 223 int count = benchmark_iterations_ * |
| 224 ((benchmark_width_ * benchmark_height_ + kMaxWidth - 1) / kMaxWidth); | 224 ((benchmark_width_ * benchmark_height_ + kMaxWidth - 1) / kMaxWidth); |
| 225 for (int i = 0; i < count; ++i) { | 225 for (int i = 0; i < count; ++i) { |
| 226 h1 = ComputeSumSquareError(src_a, src_b, kMaxWidth); | 226 h1 = ComputeSumSquareError(src_a, src_b, kMaxWidth); |
| 227 } | 227 } |
| 228 | 228 |
| 229 EXPECT_EQ(0, h1); | 229 EXPECT_EQ(0u, h1); |
| 230 | 230 |
| 231 free_aligned_buffer_page_end(src_a); | 231 free_aligned_buffer_page_end(src_a); |
| 232 free_aligned_buffer_page_end(src_b); | 232 free_aligned_buffer_page_end(src_b); |
| 233 } | 233 } |
| 234 | 234 |
| 235 TEST_F(LibYUVBaseTest, SumSquareError) { | 235 TEST_F(LibYUVBaseTest, SumSquareError) { |
| 236 const int kMaxWidth = 4096 * 3; | 236 const int kMaxWidth = 4096 * 3; |
| 237 align_buffer_page_end(src_a, kMaxWidth); | 237 align_buffer_page_end(src_a, kMaxWidth); |
| 238 align_buffer_page_end(src_b, kMaxWidth); | 238 align_buffer_page_end(src_b, kMaxWidth); |
| 239 memset(src_a, 0, kMaxWidth); | 239 memset(src_a, 0, kMaxWidth); |
| 240 memset(src_b, 0, kMaxWidth); | 240 memset(src_b, 0, kMaxWidth); |
| 241 | 241 |
| 242 uint64 err; | 242 uint64 err; |
| 243 err = ComputeSumSquareError(src_a, src_b, kMaxWidth); | 243 err = ComputeSumSquareError(src_a, src_b, kMaxWidth); |
| 244 | 244 |
| 245 EXPECT_EQ(0, err); | 245 EXPECT_EQ(0u, err); |
| 246 | 246 |
| 247 memset(src_a, 1, kMaxWidth); | 247 memset(src_a, 1, kMaxWidth); |
| 248 err = ComputeSumSquareError(src_a, src_b, kMaxWidth); | 248 err = ComputeSumSquareError(src_a, src_b, kMaxWidth); |
| 249 | 249 |
| 250 EXPECT_EQ(err, kMaxWidth); | 250 EXPECT_EQ(static_cast<int>(err), kMaxWidth); |
| 251 | 251 |
| 252 memset(src_a, 190, kMaxWidth); | 252 memset(src_a, 190, kMaxWidth); |
| 253 memset(src_b, 193, kMaxWidth); | 253 memset(src_b, 193, kMaxWidth); |
| 254 err = ComputeSumSquareError(src_a, src_b, kMaxWidth); | 254 err = ComputeSumSquareError(src_a, src_b, kMaxWidth); |
| 255 | 255 |
| 256 EXPECT_EQ(kMaxWidth * 3 * 3, err); | 256 EXPECT_EQ(static_cast<int>(err), kMaxWidth * 3 * 3); |
| 257 | 257 |
| 258 for (int i = 0; i < kMaxWidth; ++i) { | 258 for (int i = 0; i < kMaxWidth; ++i) { |
| 259 src_a[i] = (fastrand() & 0xff); | 259 src_a[i] = (fastrand() & 0xff); |
| 260 src_b[i] = (fastrand() & 0xff); | 260 src_b[i] = (fastrand() & 0xff); |
| 261 } | 261 } |
| 262 | 262 |
| 263 MaskCpuFlags(disable_cpu_flags_); | 263 MaskCpuFlags(disable_cpu_flags_); |
| 264 uint64 c_err = ComputeSumSquareError(src_a, src_b, kMaxWidth); | 264 uint64 c_err = ComputeSumSquareError(src_a, src_b, kMaxWidth); |
| 265 | 265 |
| 266 MaskCpuFlags(benchmark_cpu_info_); | 266 MaskCpuFlags(benchmark_cpu_info_); |
| (...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 504 | 504 |
| 505 if (kSrcWidth > 8 && kSrcHeight > 8) { | 505 if (kSrcWidth > 8 && kSrcHeight > 8) { |
| 506 EXPECT_EQ(opt_err, c_err); | 506 EXPECT_EQ(opt_err, c_err); |
| 507 } | 507 } |
| 508 | 508 |
| 509 free_aligned_buffer_page_end(src_a); | 509 free_aligned_buffer_page_end(src_a); |
| 510 free_aligned_buffer_page_end(src_b); | 510 free_aligned_buffer_page_end(src_b); |
| 511 } | 511 } |
| 512 | 512 |
| 513 } // namespace libyuv | 513 } // namespace libyuv |
| OLD | NEW |