| 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 14 matching lines...) Expand all Loading... |
| 25 static uint32 ReferenceHashDjb2(const uint8* src, uint64 count, uint32 seed) { | 25 static uint32 ReferenceHashDjb2(const uint8* src, uint64 count, uint32 seed) { |
| 26 uint32 hash = seed; | 26 uint32 hash = seed; |
| 27 if (count > 0) { | 27 if (count > 0) { |
| 28 do { | 28 do { |
| 29 hash = hash * 33 + *src++; | 29 hash = hash * 33 + *src++; |
| 30 } while (--count); | 30 } while (--count); |
| 31 } | 31 } |
| 32 return hash; | 32 return hash; |
| 33 } | 33 } |
| 34 | 34 |
| 35 TEST_F(libyuvTest, Djb2_Test) { | 35 TEST_F(LibYUVBaseTest, Djb2_Test) { |
| 36 const int kMaxTest = benchmark_width_ * benchmark_height_; | 36 const int kMaxTest = benchmark_width_ * benchmark_height_; |
| 37 align_buffer_64(src_a, kMaxTest); | 37 align_buffer_64(src_a, kMaxTest); |
| 38 align_buffer_64(src_b, kMaxTest); | 38 align_buffer_64(src_b, kMaxTest); |
| 39 | 39 |
| 40 const char* fox = "The quick brown fox jumps over the lazy dog" | 40 const char* fox = "The quick brown fox jumps over the lazy dog" |
| 41 " and feels as if he were in the seventh heaven of typography" | 41 " and feels as if he were in the seventh heaven of typography" |
| 42 " together with Hermann Zapf"; | 42 " together with Hermann Zapf"; |
| 43 uint32 foxhash = HashDjb2(reinterpret_cast<const uint8*>(fox), 131, 5381); | 43 uint32 foxhash = HashDjb2(reinterpret_cast<const uint8*>(fox), 131, 5381); |
| 44 const uint32 kExpectedFoxHash = 2611006483u; | 44 const uint32 kExpectedFoxHash = 2611006483u; |
| 45 EXPECT_EQ(kExpectedFoxHash, foxhash); | 45 EXPECT_EQ(kExpectedFoxHash, foxhash); |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 109 // Make a zeros and seed of zero. Test different lengths. Expect hash is same. | 109 // Make a zeros and seed of zero. Test different lengths. Expect hash is same. |
| 110 memset(src_a, 0, kMaxTest); | 110 memset(src_a, 0, kMaxTest); |
| 111 h1 = HashDjb2(src_a, kMaxTest, 0); | 111 h1 = HashDjb2(src_a, kMaxTest, 0); |
| 112 h2 = HashDjb2(src_a, kMaxTest / 2, 0); | 112 h2 = HashDjb2(src_a, kMaxTest / 2, 0); |
| 113 EXPECT_EQ(h1, h2); | 113 EXPECT_EQ(h1, h2); |
| 114 | 114 |
| 115 free_aligned_buffer_64(src_a); | 115 free_aligned_buffer_64(src_a); |
| 116 free_aligned_buffer_64(src_b); | 116 free_aligned_buffer_64(src_b); |
| 117 } | 117 } |
| 118 | 118 |
| 119 TEST_F(libyuvTest, BenchmarkDjb2_Opt) { | 119 TEST_F(LibYUVBaseTest, BenchmarkDjb2_Opt) { |
| 120 const int kMaxTest = benchmark_width_ * benchmark_height_; | 120 const int kMaxTest = benchmark_width_ * benchmark_height_; |
| 121 align_buffer_64(src_a, kMaxTest); | 121 align_buffer_64(src_a, kMaxTest); |
| 122 | 122 |
| 123 for (int i = 0; i < kMaxTest; ++i) { | 123 for (int i = 0; i < kMaxTest; ++i) { |
| 124 src_a[i] = i; | 124 src_a[i] = i; |
| 125 } | 125 } |
| 126 uint32 h2 = ReferenceHashDjb2(src_a, kMaxTest, 5381); | 126 uint32 h2 = ReferenceHashDjb2(src_a, kMaxTest, 5381); |
| 127 uint32 h1; | 127 uint32 h1; |
| 128 for (int i = 0; i < benchmark_iterations_; ++i) { | 128 for (int i = 0; i < benchmark_iterations_; ++i) { |
| 129 h1 = HashDjb2(src_a, kMaxTest, 5381); | 129 h1 = HashDjb2(src_a, kMaxTest, 5381); |
| 130 } | 130 } |
| 131 EXPECT_EQ(h1, h2); | 131 EXPECT_EQ(h1, h2); |
| 132 free_aligned_buffer_64(src_a); | 132 free_aligned_buffer_64(src_a); |
| 133 } | 133 } |
| 134 | 134 |
| 135 TEST_F(libyuvTest, BenchmarkDjb2_Unaligned) { | 135 TEST_F(LibYUVBaseTest, BenchmarkDjb2_Unaligned) { |
| 136 const int kMaxTest = benchmark_width_ * benchmark_height_; | 136 const int kMaxTest = benchmark_width_ * benchmark_height_; |
| 137 align_buffer_64(src_a, kMaxTest + 1); | 137 align_buffer_64(src_a, kMaxTest + 1); |
| 138 for (int i = 0; i < kMaxTest; ++i) { | 138 for (int i = 0; i < kMaxTest; ++i) { |
| 139 src_a[i + 1] = i; | 139 src_a[i + 1] = i; |
| 140 } | 140 } |
| 141 uint32 h2 = ReferenceHashDjb2(src_a + 1, kMaxTest, 5381); | 141 uint32 h2 = ReferenceHashDjb2(src_a + 1, kMaxTest, 5381); |
| 142 uint32 h1; | 142 uint32 h1; |
| 143 for (int i = 0; i < benchmark_iterations_; ++i) { | 143 for (int i = 0; i < benchmark_iterations_; ++i) { |
| 144 h1 = HashDjb2(src_a + 1, kMaxTest, 5381); | 144 h1 = HashDjb2(src_a + 1, kMaxTest, 5381); |
| 145 } | 145 } |
| 146 EXPECT_EQ(h1, h2); | 146 EXPECT_EQ(h1, h2); |
| 147 free_aligned_buffer_64(src_a); | 147 free_aligned_buffer_64(src_a); |
| 148 } | 148 } |
| 149 | 149 |
| 150 TEST_F(libyuvTest, BenchmarkARGBDetect_Opt) { | 150 TEST_F(LibYUVBaseTest, BenchmarkARGBDetect_Opt) { |
| 151 uint32 fourcc; | 151 uint32 fourcc; |
| 152 const int kMaxTest = benchmark_width_ * benchmark_height_ * 4; | 152 const int kMaxTest = benchmark_width_ * benchmark_height_ * 4; |
| 153 align_buffer_64(src_a, kMaxTest); | 153 align_buffer_64(src_a, kMaxTest); |
| 154 for (int i = 0; i < kMaxTest; ++i) { | 154 for (int i = 0; i < kMaxTest; ++i) { |
| 155 src_a[i] = 255; | 155 src_a[i] = 255; |
| 156 } | 156 } |
| 157 | 157 |
| 158 src_a[0] = 0; | 158 src_a[0] = 0; |
| 159 fourcc = ARGBDetect(src_a, benchmark_width_ * 4, | 159 fourcc = ARGBDetect(src_a, benchmark_width_ * 4, |
| 160 benchmark_width_, benchmark_height_); | 160 benchmark_width_, benchmark_height_); |
| 161 EXPECT_EQ(libyuv::FOURCC_BGRA, fourcc); | 161 EXPECT_EQ(libyuv::FOURCC_BGRA, fourcc); |
| 162 src_a[0] = 255; | 162 src_a[0] = 255; |
| 163 src_a[3] = 0; | 163 src_a[3] = 0; |
| 164 fourcc = ARGBDetect(src_a, benchmark_width_ * 4, | 164 fourcc = ARGBDetect(src_a, benchmark_width_ * 4, |
| 165 benchmark_width_, benchmark_height_); | 165 benchmark_width_, benchmark_height_); |
| 166 EXPECT_EQ(libyuv::FOURCC_ARGB, fourcc); | 166 EXPECT_EQ(libyuv::FOURCC_ARGB, fourcc); |
| 167 src_a[3] = 255; | 167 src_a[3] = 255; |
| 168 | 168 |
| 169 for (int i = 0; i < benchmark_iterations_; ++i) { | 169 for (int i = 0; i < benchmark_iterations_; ++i) { |
| 170 fourcc = ARGBDetect(src_a, benchmark_width_ * 4, | 170 fourcc = ARGBDetect(src_a, benchmark_width_ * 4, |
| 171 benchmark_width_, benchmark_height_); | 171 benchmark_width_, benchmark_height_); |
| 172 } | 172 } |
| 173 EXPECT_EQ(0, fourcc); | 173 EXPECT_EQ(0, fourcc); |
| 174 | 174 |
| 175 free_aligned_buffer_64(src_a); | 175 free_aligned_buffer_64(src_a); |
| 176 } | 176 } |
| 177 | 177 |
| 178 TEST_F(libyuvTest, BenchmarkARGBDetect_Unaligned) { | 178 TEST_F(LibYUVBaseTest, BenchmarkARGBDetect_Unaligned) { |
| 179 uint32 fourcc; | 179 uint32 fourcc; |
| 180 const int kMaxTest = benchmark_width_ * benchmark_height_ * 4 + 1; | 180 const int kMaxTest = benchmark_width_ * benchmark_height_ * 4 + 1; |
| 181 align_buffer_64(src_a, kMaxTest); | 181 align_buffer_64(src_a, kMaxTest); |
| 182 for (int i = 0; i < kMaxTest; ++i) { | 182 for (int i = 0; i < kMaxTest; ++i) { |
| 183 src_a[i + 1] = 255; | 183 src_a[i + 1] = 255; |
| 184 } | 184 } |
| 185 | 185 |
| 186 src_a[0 + 1] = 0; | 186 src_a[0 + 1] = 0; |
| 187 fourcc = ARGBDetect(src_a + 1, benchmark_width_ * 4, | 187 fourcc = ARGBDetect(src_a + 1, benchmark_width_ * 4, |
| 188 benchmark_width_, benchmark_height_); | 188 benchmark_width_, benchmark_height_); |
| 189 EXPECT_EQ(libyuv::FOURCC_BGRA, fourcc); | 189 EXPECT_EQ(libyuv::FOURCC_BGRA, fourcc); |
| 190 src_a[0 + 1] = 255; | 190 src_a[0 + 1] = 255; |
| 191 src_a[3 + 1] = 0; | 191 src_a[3 + 1] = 0; |
| 192 fourcc = ARGBDetect(src_a + 1, benchmark_width_ * 4, | 192 fourcc = ARGBDetect(src_a + 1, benchmark_width_ * 4, |
| 193 benchmark_width_, benchmark_height_); | 193 benchmark_width_, benchmark_height_); |
| 194 EXPECT_EQ(libyuv::FOURCC_ARGB, fourcc); | 194 EXPECT_EQ(libyuv::FOURCC_ARGB, fourcc); |
| 195 src_a[3 + 1] = 255; | 195 src_a[3 + 1] = 255; |
| 196 | 196 |
| 197 for (int i = 0; i < benchmark_iterations_; ++i) { | 197 for (int i = 0; i < benchmark_iterations_; ++i) { |
| 198 fourcc = ARGBDetect(src_a + 1, benchmark_width_ * 4, | 198 fourcc = ARGBDetect(src_a + 1, benchmark_width_ * 4, |
| 199 benchmark_width_, benchmark_height_); | 199 benchmark_width_, benchmark_height_); |
| 200 } | 200 } |
| 201 EXPECT_EQ(0, fourcc); | 201 EXPECT_EQ(0, fourcc); |
| 202 | 202 |
| 203 free_aligned_buffer_64(src_a); | 203 free_aligned_buffer_64(src_a); |
| 204 } | 204 } |
| 205 TEST_F(libyuvTest, BenchmarkSumSquareError_Opt) { | 205 TEST_F(LibYUVBaseTest, BenchmarkSumSquareError_Opt) { |
| 206 const int kMaxWidth = 4096 * 3; | 206 const int kMaxWidth = 4096 * 3; |
| 207 align_buffer_64(src_a, kMaxWidth); | 207 align_buffer_64(src_a, kMaxWidth); |
| 208 align_buffer_64(src_b, kMaxWidth); | 208 align_buffer_64(src_b, kMaxWidth); |
| 209 memset(src_a, 0, kMaxWidth); | 209 memset(src_a, 0, kMaxWidth); |
| 210 memset(src_b, 0, kMaxWidth); | 210 memset(src_b, 0, kMaxWidth); |
| 211 | 211 |
| 212 memcpy(src_a, "test0123test4567", 16); | 212 memcpy(src_a, "test0123test4567", 16); |
| 213 memcpy(src_b, "tick0123tock4567", 16); | 213 memcpy(src_b, "tick0123tock4567", 16); |
| 214 uint64 h1 = ComputeSumSquareError(src_a, src_b, 16); | 214 uint64 h1 = ComputeSumSquareError(src_a, src_b, 16); |
| 215 EXPECT_EQ(790u, h1); | 215 EXPECT_EQ(790u, h1); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 226 for (int i = 0; i < count; ++i) { | 226 for (int i = 0; i < count; ++i) { |
| 227 h1 = ComputeSumSquareError(src_a, src_b, kMaxWidth); | 227 h1 = ComputeSumSquareError(src_a, src_b, kMaxWidth); |
| 228 } | 228 } |
| 229 | 229 |
| 230 EXPECT_EQ(0, h1); | 230 EXPECT_EQ(0, h1); |
| 231 | 231 |
| 232 free_aligned_buffer_64(src_a); | 232 free_aligned_buffer_64(src_a); |
| 233 free_aligned_buffer_64(src_b); | 233 free_aligned_buffer_64(src_b); |
| 234 } | 234 } |
| 235 | 235 |
| 236 TEST_F(libyuvTest, SumSquareError) { | 236 TEST_F(LibYUVBaseTest, SumSquareError) { |
| 237 const int kMaxWidth = 4096 * 3; | 237 const int kMaxWidth = 4096 * 3; |
| 238 align_buffer_64(src_a, kMaxWidth); | 238 align_buffer_64(src_a, kMaxWidth); |
| 239 align_buffer_64(src_b, kMaxWidth); | 239 align_buffer_64(src_b, kMaxWidth); |
| 240 memset(src_a, 0, kMaxWidth); | 240 memset(src_a, 0, kMaxWidth); |
| 241 memset(src_b, 0, kMaxWidth); | 241 memset(src_b, 0, kMaxWidth); |
| 242 | 242 |
| 243 uint64 err; | 243 uint64 err; |
| 244 err = ComputeSumSquareError(src_a, src_b, kMaxWidth); | 244 err = ComputeSumSquareError(src_a, src_b, kMaxWidth); |
| 245 | 245 |
| 246 EXPECT_EQ(0, err); | 246 EXPECT_EQ(0, err); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 266 | 266 |
| 267 MaskCpuFlags(-1); | 267 MaskCpuFlags(-1); |
| 268 uint64 opt_err = ComputeSumSquareError(src_a, src_b, kMaxWidth); | 268 uint64 opt_err = ComputeSumSquareError(src_a, src_b, kMaxWidth); |
| 269 | 269 |
| 270 EXPECT_EQ(c_err, opt_err); | 270 EXPECT_EQ(c_err, opt_err); |
| 271 | 271 |
| 272 free_aligned_buffer_64(src_a); | 272 free_aligned_buffer_64(src_a); |
| 273 free_aligned_buffer_64(src_b); | 273 free_aligned_buffer_64(src_b); |
| 274 } | 274 } |
| 275 | 275 |
| 276 TEST_F(libyuvTest, BenchmarkPsnr_Opt) { | 276 TEST_F(LibYUVBaseTest, BenchmarkPsnr_Opt) { |
| 277 align_buffer_64(src_a, benchmark_width_ * benchmark_height_); | 277 align_buffer_64(src_a, benchmark_width_ * benchmark_height_); |
| 278 align_buffer_64(src_b, benchmark_width_ * benchmark_height_); | 278 align_buffer_64(src_b, benchmark_width_ * benchmark_height_); |
| 279 for (int i = 0; i < benchmark_width_ * benchmark_height_; ++i) { | 279 for (int i = 0; i < benchmark_width_ * benchmark_height_; ++i) { |
| 280 src_a[i] = i; | 280 src_a[i] = i; |
| 281 src_b[i] = i; | 281 src_b[i] = i; |
| 282 } | 282 } |
| 283 | 283 |
| 284 MaskCpuFlags(-1); | 284 MaskCpuFlags(-1); |
| 285 | 285 |
| 286 double opt_time = get_time(); | 286 double opt_time = get_time(); |
| 287 for (int i = 0; i < benchmark_iterations_; ++i) | 287 for (int i = 0; i < benchmark_iterations_; ++i) |
| 288 CalcFramePsnr(src_a, benchmark_width_, | 288 CalcFramePsnr(src_a, benchmark_width_, |
| 289 src_b, benchmark_width_, | 289 src_b, benchmark_width_, |
| 290 benchmark_width_, benchmark_height_); | 290 benchmark_width_, benchmark_height_); |
| 291 | 291 |
| 292 opt_time = (get_time() - opt_time) / benchmark_iterations_; | 292 opt_time = (get_time() - opt_time) / benchmark_iterations_; |
| 293 printf("BenchmarkPsnr_Opt - %8.2f us opt\n", opt_time * 1e6); | 293 printf("BenchmarkPsnr_Opt - %8.2f us opt\n", opt_time * 1e6); |
| 294 | 294 |
| 295 EXPECT_EQ(0, 0); | 295 EXPECT_EQ(0, 0); |
| 296 | 296 |
| 297 free_aligned_buffer_64(src_a); | 297 free_aligned_buffer_64(src_a); |
| 298 free_aligned_buffer_64(src_b); | 298 free_aligned_buffer_64(src_b); |
| 299 } | 299 } |
| 300 | 300 |
| 301 TEST_F(libyuvTest, BenchmarkPsnr_Unaligned) { | 301 TEST_F(LibYUVBaseTest, BenchmarkPsnr_Unaligned) { |
| 302 align_buffer_64(src_a, benchmark_width_ * benchmark_height_ + 1); | 302 align_buffer_64(src_a, benchmark_width_ * benchmark_height_ + 1); |
| 303 align_buffer_64(src_b, benchmark_width_ * benchmark_height_); | 303 align_buffer_64(src_b, benchmark_width_ * benchmark_height_); |
| 304 for (int i = 0; i < benchmark_width_ * benchmark_height_; ++i) { | 304 for (int i = 0; i < benchmark_width_ * benchmark_height_; ++i) { |
| 305 src_a[i + 1] = i; | 305 src_a[i + 1] = i; |
| 306 src_b[i] = i; | 306 src_b[i] = i; |
| 307 } | 307 } |
| 308 | 308 |
| 309 MaskCpuFlags(-1); | 309 MaskCpuFlags(-1); |
| 310 | 310 |
| 311 double opt_time = get_time(); | 311 double opt_time = get_time(); |
| 312 for (int i = 0; i < benchmark_iterations_; ++i) | 312 for (int i = 0; i < benchmark_iterations_; ++i) |
| 313 CalcFramePsnr(src_a + 1, benchmark_width_, | 313 CalcFramePsnr(src_a + 1, benchmark_width_, |
| 314 src_b, benchmark_width_, | 314 src_b, benchmark_width_, |
| 315 benchmark_width_, benchmark_height_); | 315 benchmark_width_, benchmark_height_); |
| 316 | 316 |
| 317 opt_time = (get_time() - opt_time) / benchmark_iterations_; | 317 opt_time = (get_time() - opt_time) / benchmark_iterations_; |
| 318 printf("BenchmarkPsnr_Opt - %8.2f us opt\n", opt_time * 1e6); | 318 printf("BenchmarkPsnr_Opt - %8.2f us opt\n", opt_time * 1e6); |
| 319 | 319 |
| 320 EXPECT_EQ(0, 0); | 320 EXPECT_EQ(0, 0); |
| 321 | 321 |
| 322 free_aligned_buffer_64(src_a); | 322 free_aligned_buffer_64(src_a); |
| 323 free_aligned_buffer_64(src_b); | 323 free_aligned_buffer_64(src_b); |
| 324 } | 324 } |
| 325 | 325 |
| 326 TEST_F(libyuvTest, Psnr) { | 326 TEST_F(LibYUVBaseTest, Psnr) { |
| 327 const int kSrcWidth = benchmark_width_; | 327 const int kSrcWidth = benchmark_width_; |
| 328 const int kSrcHeight = benchmark_height_; | 328 const int kSrcHeight = benchmark_height_; |
| 329 const int b = 128; | 329 const int b = 128; |
| 330 const int kSrcPlaneSize = (kSrcWidth + b * 2) * (kSrcHeight + b * 2); | 330 const int kSrcPlaneSize = (kSrcWidth + b * 2) * (kSrcHeight + b * 2); |
| 331 const int kSrcStride = 2 * b + kSrcWidth; | 331 const int kSrcStride = 2 * b + kSrcWidth; |
| 332 align_buffer_64(src_a, kSrcPlaneSize); | 332 align_buffer_64(src_a, kSrcPlaneSize); |
| 333 align_buffer_64(src_b, kSrcPlaneSize); | 333 align_buffer_64(src_b, kSrcPlaneSize); |
| 334 memset(src_a, 0, kSrcPlaneSize); | 334 memset(src_a, 0, kSrcPlaneSize); |
| 335 memset(src_b, 0, kSrcPlaneSize); | 335 memset(src_b, 0, kSrcPlaneSize); |
| 336 | 336 |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 393 opt_err = CalcFramePsnr(src_a + kSrcStride * b + b, kSrcStride, | 393 opt_err = CalcFramePsnr(src_a + kSrcStride * b + b, kSrcStride, |
| 394 src_b + kSrcStride * b + b, kSrcStride, | 394 src_b + kSrcStride * b + b, kSrcStride, |
| 395 kSrcWidth, kSrcHeight); | 395 kSrcWidth, kSrcHeight); |
| 396 | 396 |
| 397 EXPECT_EQ(opt_err, c_err); | 397 EXPECT_EQ(opt_err, c_err); |
| 398 | 398 |
| 399 free_aligned_buffer_64(src_a); | 399 free_aligned_buffer_64(src_a); |
| 400 free_aligned_buffer_64(src_b); | 400 free_aligned_buffer_64(src_b); |
| 401 } | 401 } |
| 402 | 402 |
| 403 TEST_F(libyuvTest, DISABLED_BenchmarkSsim_Opt) { | 403 TEST_F(LibYUVBaseTest, DISABLED_BenchmarkSsim_Opt) { |
| 404 align_buffer_64(src_a, benchmark_width_ * benchmark_height_); | 404 align_buffer_64(src_a, benchmark_width_ * benchmark_height_); |
| 405 align_buffer_64(src_b, benchmark_width_ * benchmark_height_); | 405 align_buffer_64(src_b, benchmark_width_ * benchmark_height_); |
| 406 for (int i = 0; i < benchmark_width_ * benchmark_height_; ++i) { | 406 for (int i = 0; i < benchmark_width_ * benchmark_height_; ++i) { |
| 407 src_a[i] = i; | 407 src_a[i] = i; |
| 408 src_b[i] = i; | 408 src_b[i] = i; |
| 409 } | 409 } |
| 410 | 410 |
| 411 MaskCpuFlags(-1); | 411 MaskCpuFlags(-1); |
| 412 | 412 |
| 413 double opt_time = get_time(); | 413 double opt_time = get_time(); |
| 414 for (int i = 0; i < benchmark_iterations_; ++i) | 414 for (int i = 0; i < benchmark_iterations_; ++i) |
| 415 CalcFrameSsim(src_a, benchmark_width_, | 415 CalcFrameSsim(src_a, benchmark_width_, |
| 416 src_b, benchmark_width_, | 416 src_b, benchmark_width_, |
| 417 benchmark_width_, benchmark_height_); | 417 benchmark_width_, benchmark_height_); |
| 418 | 418 |
| 419 opt_time = (get_time() - opt_time) / benchmark_iterations_; | 419 opt_time = (get_time() - opt_time) / benchmark_iterations_; |
| 420 printf("BenchmarkSsim_Opt - %8.2f us opt\n", opt_time * 1e6); | 420 printf("BenchmarkSsim_Opt - %8.2f us opt\n", opt_time * 1e6); |
| 421 | 421 |
| 422 EXPECT_EQ(0, 0); // Pass if we get this far. | 422 EXPECT_EQ(0, 0); // Pass if we get this far. |
| 423 | 423 |
| 424 free_aligned_buffer_64(src_a); | 424 free_aligned_buffer_64(src_a); |
| 425 free_aligned_buffer_64(src_b); | 425 free_aligned_buffer_64(src_b); |
| 426 } | 426 } |
| 427 | 427 |
| 428 TEST_F(libyuvTest, Ssim) { | 428 TEST_F(LibYUVBaseTest, Ssim) { |
| 429 const int kSrcWidth = benchmark_width_; | 429 const int kSrcWidth = benchmark_width_; |
| 430 const int kSrcHeight = benchmark_height_; | 430 const int kSrcHeight = benchmark_height_; |
| 431 const int b = 128; | 431 const int b = 128; |
| 432 const int kSrcPlaneSize = (kSrcWidth + b * 2) * (kSrcHeight + b * 2); | 432 const int kSrcPlaneSize = (kSrcWidth + b * 2) * (kSrcHeight + b * 2); |
| 433 const int kSrcStride = 2 * b + kSrcWidth; | 433 const int kSrcStride = 2 * b + kSrcWidth; |
| 434 align_buffer_64(src_a, kSrcPlaneSize); | 434 align_buffer_64(src_a, kSrcPlaneSize); |
| 435 align_buffer_64(src_b, kSrcPlaneSize); | 435 align_buffer_64(src_b, kSrcPlaneSize); |
| 436 memset(src_a, 0, kSrcPlaneSize); | 436 memset(src_a, 0, kSrcPlaneSize); |
| 437 memset(src_b, 0, kSrcPlaneSize); | 437 memset(src_b, 0, kSrcPlaneSize); |
| 438 | 438 |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 505 | 505 |
| 506 if (kSrcWidth > 8 && kSrcHeight > 8) { | 506 if (kSrcWidth > 8 && kSrcHeight > 8) { |
| 507 EXPECT_EQ(opt_err, c_err); | 507 EXPECT_EQ(opt_err, c_err); |
| 508 } | 508 } |
| 509 | 509 |
| 510 free_aligned_buffer_64(src_a); | 510 free_aligned_buffer_64(src_a); |
| 511 free_aligned_buffer_64(src_b); | 511 free_aligned_buffer_64(src_b); |
| 512 } | 512 } |
| 513 | 513 |
| 514 } // namespace libyuv | 514 } // namespace libyuv |
| OLD | NEW |