| 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 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 107 static int TestAttenuateI(int width, int height, int benchmark_iterations, | 107 static int TestAttenuateI(int width, int height, int benchmark_iterations, |
| 108 int disable_cpu_flags, int invert, int off) { | 108 int disable_cpu_flags, int invert, int off) { |
| 109 if (width < 1) { | 109 if (width < 1) { |
| 110 width = 1; | 110 width = 1; |
| 111 } | 111 } |
| 112 const int kBpp = 4; | 112 const int kBpp = 4; |
| 113 const int kStride = width * kBpp; | 113 const int kStride = width * kBpp; |
| 114 align_buffer_64(src_argb, kStride * height + off); | 114 align_buffer_64(src_argb, kStride * height + off); |
| 115 align_buffer_64(dst_argb_c, kStride * height); | 115 align_buffer_64(dst_argb_c, kStride * height); |
| 116 align_buffer_64(dst_argb_opt, kStride * height); | 116 align_buffer_64(dst_argb_opt, kStride * height); |
| 117 srandom(time(NULL)); | |
| 118 for (int i = 0; i < kStride * height; ++i) { | 117 for (int i = 0; i < kStride * height; ++i) { |
| 119 src_argb[i + off] = (random() & 0xff); | 118 src_argb[i + off] = (fastrand() & 0xff); |
| 120 } | 119 } |
| 121 memset(dst_argb_c, 0, kStride * height); | 120 memset(dst_argb_c, 0, kStride * height); |
| 122 memset(dst_argb_opt, 0, kStride * height); | 121 memset(dst_argb_opt, 0, kStride * height); |
| 123 | 122 |
| 124 MaskCpuFlags(disable_cpu_flags); | 123 MaskCpuFlags(disable_cpu_flags); |
| 125 ARGBAttenuate(src_argb + off, kStride, | 124 ARGBAttenuate(src_argb + off, kStride, |
| 126 dst_argb_c, kStride, | 125 dst_argb_c, kStride, |
| 127 width, invert * height); | 126 width, invert * height); |
| 128 MaskCpuFlags(-1); | 127 MaskCpuFlags(-1); |
| 129 for (int i = 0; i < benchmark_iterations; ++i) { | 128 for (int i = 0; i < benchmark_iterations; ++i) { |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 173 static int TestUnattenuateI(int width, int height, int benchmark_iterations, | 172 static int TestUnattenuateI(int width, int height, int benchmark_iterations, |
| 174 int disable_cpu_flags, int invert, int off) { | 173 int disable_cpu_flags, int invert, int off) { |
| 175 if (width < 1) { | 174 if (width < 1) { |
| 176 width = 1; | 175 width = 1; |
| 177 } | 176 } |
| 178 const int kBpp = 4; | 177 const int kBpp = 4; |
| 179 const int kStride = width * kBpp; | 178 const int kStride = width * kBpp; |
| 180 align_buffer_64(src_argb, kStride * height + off); | 179 align_buffer_64(src_argb, kStride * height + off); |
| 181 align_buffer_64(dst_argb_c, kStride * height); | 180 align_buffer_64(dst_argb_c, kStride * height); |
| 182 align_buffer_64(dst_argb_opt, kStride * height); | 181 align_buffer_64(dst_argb_opt, kStride * height); |
| 183 srandom(time(NULL)); | |
| 184 for (int i = 0; i < kStride * height; ++i) { | 182 for (int i = 0; i < kStride * height; ++i) { |
| 185 src_argb[i + off] = (random() & 0xff); | 183 src_argb[i + off] = (fastrand() & 0xff); |
| 186 } | 184 } |
| 187 ARGBAttenuate(src_argb + off, kStride, | 185 ARGBAttenuate(src_argb + off, kStride, |
| 188 src_argb + off, kStride, | 186 src_argb + off, kStride, |
| 189 width, height); | 187 width, height); |
| 190 memset(dst_argb_c, 0, kStride * height); | 188 memset(dst_argb_c, 0, kStride * height); |
| 191 memset(dst_argb_opt, 0, kStride * height); | 189 memset(dst_argb_opt, 0, kStride * height); |
| 192 | 190 |
| 193 MaskCpuFlags(disable_cpu_flags); | 191 MaskCpuFlags(disable_cpu_flags); |
| 194 ARGBUnattenuate(src_argb + off, kStride, | 192 ARGBUnattenuate(src_argb + off, kStride, |
| 195 dst_argb_c, kStride, | 193 dst_argb_c, kStride, |
| (...skipping 733 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 929 W1280, TERP, DIFF, N, NEG, OFF) \ | 927 W1280, TERP, DIFF, N, NEG, OFF) \ |
| 930 TEST_F(libyuvTest, ARGBInterpolate##TERP##N) { \ | 928 TEST_F(libyuvTest, ARGBInterpolate##TERP##N) { \ |
| 931 const int kWidth = ((W1280) > 0) ? (W1280) : 1; \ | 929 const int kWidth = ((W1280) > 0) ? (W1280) : 1; \ |
| 932 const int kHeight = benchmark_height_; \ | 930 const int kHeight = benchmark_height_; \ |
| 933 const int kStrideA = (kWidth * BPP_A + STRIDE_A - 1) / STRIDE_A * STRIDE_A; \ | 931 const int kStrideA = (kWidth * BPP_A + STRIDE_A - 1) / STRIDE_A * STRIDE_A; \ |
| 934 const int kStrideB = (kWidth * BPP_B + STRIDE_B - 1) / STRIDE_B * STRIDE_B; \ | 932 const int kStrideB = (kWidth * BPP_B + STRIDE_B - 1) / STRIDE_B * STRIDE_B; \ |
| 935 align_buffer_64(src_argb_a, kStrideA * kHeight + OFF); \ | 933 align_buffer_64(src_argb_a, kStrideA * kHeight + OFF); \ |
| 936 align_buffer_64(src_argb_b, kStrideA * kHeight + OFF); \ | 934 align_buffer_64(src_argb_b, kStrideA * kHeight + OFF); \ |
| 937 align_buffer_64(dst_argb_c, kStrideB * kHeight); \ | 935 align_buffer_64(dst_argb_c, kStrideB * kHeight); \ |
| 938 align_buffer_64(dst_argb_opt, kStrideB * kHeight); \ | 936 align_buffer_64(dst_argb_opt, kStrideB * kHeight); \ |
| 939 srandom(time(NULL)); \ | |
| 940 for (int i = 0; i < kStrideA * kHeight; ++i) { \ | 937 for (int i = 0; i < kStrideA * kHeight; ++i) { \ |
| 941 src_argb_a[i + OFF] = (random() & 0xff); \ | 938 src_argb_a[i + OFF] = (fastrand() & 0xff);
\ |
| 942 src_argb_b[i + OFF] = (random() & 0xff); \ | 939 src_argb_b[i + OFF] = (fastrand() & 0xff);
\ |
| 943 } \ | 940 } \ |
| 944 MaskCpuFlags(disable_cpu_flags_);
\ | 941 MaskCpuFlags(disable_cpu_flags_);
\ |
| 945 ARGBInterpolate(src_argb_a + OFF, kStrideA, \ | 942 ARGBInterpolate(src_argb_a + OFF, kStrideA, \ |
| 946 src_argb_b + OFF, kStrideA, \ | 943 src_argb_b + OFF, kStrideA, \ |
| 947 dst_argb_c, kStrideB, \ | 944 dst_argb_c, kStrideB, \ |
| 948 kWidth, NEG kHeight, TERP); \ | 945 kWidth, NEG kHeight, TERP); \ |
| 949 MaskCpuFlags(-1); \ | 946 MaskCpuFlags(-1); \ |
| 950 for (int i = 0; i < benchmark_iterations_; ++i) { \ | 947 for (int i = 0; i < benchmark_iterations_; ++i) { \ |
| 951 ARGBInterpolate(src_argb_a + OFF, kStrideA, \ | 948 ARGBInterpolate(src_argb_a + OFF, kStrideA, \ |
| 952 src_argb_b + OFF, kStrideA, \ | 949 src_argb_b + OFF, kStrideA, \ |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 991 int disable_cpu_flags, int invert, int off) { | 988 int disable_cpu_flags, int invert, int off) { |
| 992 if (width < 1) { | 989 if (width < 1) { |
| 993 width = 1; | 990 width = 1; |
| 994 } | 991 } |
| 995 const int kBpp = 4; | 992 const int kBpp = 4; |
| 996 const int kStride = width * kBpp; | 993 const int kStride = width * kBpp; |
| 997 align_buffer_64(src_argb_a, kStride * height + off); | 994 align_buffer_64(src_argb_a, kStride * height + off); |
| 998 align_buffer_64(src_argb_b, kStride * height + off); | 995 align_buffer_64(src_argb_b, kStride * height + off); |
| 999 align_buffer_64(dst_argb_c, kStride * height); | 996 align_buffer_64(dst_argb_c, kStride * height); |
| 1000 align_buffer_64(dst_argb_opt, kStride * height); | 997 align_buffer_64(dst_argb_opt, kStride * height); |
| 1001 srandom(time(NULL)); | |
| 1002 for (int i = 0; i < kStride * height; ++i) { | 998 for (int i = 0; i < kStride * height; ++i) { |
| 1003 src_argb_a[i + off] = (random() & 0xff); | 999 src_argb_a[i + off] = (fastrand() & 0xff); |
| 1004 src_argb_b[i + off] = (random() & 0xff); | 1000 src_argb_b[i + off] = (fastrand() & 0xff); |
| 1005 } | 1001 } |
| 1006 ARGBAttenuate(src_argb_a + off, kStride, src_argb_a + off, kStride, width, | 1002 ARGBAttenuate(src_argb_a + off, kStride, src_argb_a + off, kStride, width, |
| 1007 height); | 1003 height); |
| 1008 ARGBAttenuate(src_argb_b + off, kStride, src_argb_b + off, kStride, width, | 1004 ARGBAttenuate(src_argb_b + off, kStride, src_argb_b + off, kStride, width, |
| 1009 height); | 1005 height); |
| 1010 memset(dst_argb_c, 255, kStride * height); | 1006 memset(dst_argb_c, 255, kStride * height); |
| 1011 memset(dst_argb_opt, 255, kStride * height); | 1007 memset(dst_argb_opt, 255, kStride * height); |
| 1012 | 1008 |
| 1013 MaskCpuFlags(disable_cpu_flags); | 1009 MaskCpuFlags(disable_cpu_flags); |
| 1014 ARGBBlend(src_argb_a + off, kStride, | 1010 ARGBBlend(src_argb_a + off, kStride, |
| (...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1297 } | 1293 } |
| 1298 | 1294 |
| 1299 TEST_F(libyuvTest, TestCopyPlane) { | 1295 TEST_F(libyuvTest, TestCopyPlane) { |
| 1300 int err = 0; | 1296 int err = 0; |
| 1301 int yw = benchmark_width_; | 1297 int yw = benchmark_width_; |
| 1302 int yh = benchmark_height_; | 1298 int yh = benchmark_height_; |
| 1303 int b = 12; | 1299 int b = 12; |
| 1304 int i, j; | 1300 int i, j; |
| 1305 | 1301 |
| 1306 int y_plane_size = (yw + b * 2) * (yh + b * 2); | 1302 int y_plane_size = (yw + b * 2) * (yh + b * 2); |
| 1307 srandom(time(NULL)); | |
| 1308 align_buffer_64(orig_y, y_plane_size); | 1303 align_buffer_64(orig_y, y_plane_size); |
| 1309 align_buffer_64(dst_c, y_plane_size); | 1304 align_buffer_64(dst_c, y_plane_size); |
| 1310 align_buffer_64(dst_opt, y_plane_size); | 1305 align_buffer_64(dst_opt, y_plane_size); |
| 1311 | 1306 |
| 1312 memset(orig_y, 0, y_plane_size); | 1307 memset(orig_y, 0, y_plane_size); |
| 1313 memset(dst_c, 0, y_plane_size); | 1308 memset(dst_c, 0, y_plane_size); |
| 1314 memset(dst_opt, 0, y_plane_size); | 1309 memset(dst_opt, 0, y_plane_size); |
| 1315 | 1310 |
| 1316 // Fill image buffers with random data. | 1311 // Fill image buffers with random data. |
| 1317 for (i = b; i < (yh + b); ++i) { | 1312 for (i = b; i < (yh + b); ++i) { |
| 1318 for (j = b; j < (yw + b); ++j) { | 1313 for (j = b; j < (yw + b); ++j) { |
| 1319 orig_y[i * (yw + b * 2) + j] = random() & 0xff; | 1314 orig_y[i * (yw + b * 2) + j] = fastrand() & 0xff; |
| 1320 } | 1315 } |
| 1321 } | 1316 } |
| 1322 | 1317 |
| 1323 // Fill destination buffers with random data. | 1318 // Fill destination buffers with random data. |
| 1324 for (i = 0; i < y_plane_size; ++i) { | 1319 for (i = 0; i < y_plane_size; ++i) { |
| 1325 uint8 random_number = random() & 0x7f; | 1320 uint8 random_number = fastrand() & 0x7f; |
| 1326 dst_c[i] = random_number; | 1321 dst_c[i] = random_number; |
| 1327 dst_opt[i] = dst_c[i]; | 1322 dst_opt[i] = dst_c[i]; |
| 1328 } | 1323 } |
| 1329 | 1324 |
| 1330 int y_off = b * (yw + b * 2) + b; | 1325 int y_off = b * (yw + b * 2) + b; |
| 1331 | 1326 |
| 1332 int y_st = yw + b * 2; | 1327 int y_st = yw + b * 2; |
| 1333 int stride = 8; | 1328 int stride = 8; |
| 1334 | 1329 |
| 1335 // Disable all optimizations. | 1330 // Disable all optimizations. |
| (...skipping 28 matching lines...) Expand all Loading... |
| 1364 int disable_cpu_flags, int invert, int off) { | 1359 int disable_cpu_flags, int invert, int off) { |
| 1365 if (width < 1) { | 1360 if (width < 1) { |
| 1366 width = 1; | 1361 width = 1; |
| 1367 } | 1362 } |
| 1368 const int kBpp = 4; | 1363 const int kBpp = 4; |
| 1369 const int kStride = width * kBpp; | 1364 const int kStride = width * kBpp; |
| 1370 align_buffer_64(src_argb_a, kStride * height + off); | 1365 align_buffer_64(src_argb_a, kStride * height + off); |
| 1371 align_buffer_64(src_argb_b, kStride * height + off); | 1366 align_buffer_64(src_argb_b, kStride * height + off); |
| 1372 align_buffer_64(dst_argb_c, kStride * height); | 1367 align_buffer_64(dst_argb_c, kStride * height); |
| 1373 align_buffer_64(dst_argb_opt, kStride * height); | 1368 align_buffer_64(dst_argb_opt, kStride * height); |
| 1374 srandom(time(NULL)); | |
| 1375 for (int i = 0; i < kStride * height; ++i) { | 1369 for (int i = 0; i < kStride * height; ++i) { |
| 1376 src_argb_a[i + off] = (random() & 0xff); | 1370 src_argb_a[i + off] = (fastrand() & 0xff); |
| 1377 src_argb_b[i + off] = (random() & 0xff); | 1371 src_argb_b[i + off] = (fastrand() & 0xff); |
| 1378 } | 1372 } |
| 1379 memset(dst_argb_c, 0, kStride * height); | 1373 memset(dst_argb_c, 0, kStride * height); |
| 1380 memset(dst_argb_opt, 0, kStride * height); | 1374 memset(dst_argb_opt, 0, kStride * height); |
| 1381 | 1375 |
| 1382 MaskCpuFlags(disable_cpu_flags); | 1376 MaskCpuFlags(disable_cpu_flags); |
| 1383 ARGBMultiply(src_argb_a + off, kStride, | 1377 ARGBMultiply(src_argb_a + off, kStride, |
| 1384 src_argb_b + off, kStride, | 1378 src_argb_b + off, kStride, |
| 1385 dst_argb_c, kStride, | 1379 dst_argb_c, kStride, |
| 1386 width, invert * height); | 1380 width, invert * height); |
| 1387 MaskCpuFlags(-1); | 1381 MaskCpuFlags(-1); |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1435 int disable_cpu_flags, int invert, int off) { | 1429 int disable_cpu_flags, int invert, int off) { |
| 1436 if (width < 1) { | 1430 if (width < 1) { |
| 1437 width = 1; | 1431 width = 1; |
| 1438 } | 1432 } |
| 1439 const int kBpp = 4; | 1433 const int kBpp = 4; |
| 1440 const int kStride = width * kBpp; | 1434 const int kStride = width * kBpp; |
| 1441 align_buffer_64(src_argb_a, kStride * height + off); | 1435 align_buffer_64(src_argb_a, kStride * height + off); |
| 1442 align_buffer_64(src_argb_b, kStride * height + off); | 1436 align_buffer_64(src_argb_b, kStride * height + off); |
| 1443 align_buffer_64(dst_argb_c, kStride * height); | 1437 align_buffer_64(dst_argb_c, kStride * height); |
| 1444 align_buffer_64(dst_argb_opt, kStride * height); | 1438 align_buffer_64(dst_argb_opt, kStride * height); |
| 1445 srandom(time(NULL)); | |
| 1446 for (int i = 0; i < kStride * height; ++i) { | 1439 for (int i = 0; i < kStride * height; ++i) { |
| 1447 src_argb_a[i + off] = (random() & 0xff); | 1440 src_argb_a[i + off] = (fastrand() & 0xff); |
| 1448 src_argb_b[i + off] = (random() & 0xff); | 1441 src_argb_b[i + off] = (fastrand() & 0xff); |
| 1449 } | 1442 } |
| 1450 memset(dst_argb_c, 0, kStride * height); | 1443 memset(dst_argb_c, 0, kStride * height); |
| 1451 memset(dst_argb_opt, 0, kStride * height); | 1444 memset(dst_argb_opt, 0, kStride * height); |
| 1452 | 1445 |
| 1453 MaskCpuFlags(disable_cpu_flags); | 1446 MaskCpuFlags(disable_cpu_flags); |
| 1454 ARGBAdd(src_argb_a + off, kStride, | 1447 ARGBAdd(src_argb_a + off, kStride, |
| 1455 src_argb_b + off, kStride, | 1448 src_argb_b + off, kStride, |
| 1456 dst_argb_c, kStride, | 1449 dst_argb_c, kStride, |
| 1457 width, invert * height); | 1450 width, invert * height); |
| 1458 MaskCpuFlags(-1); | 1451 MaskCpuFlags(-1); |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1506 int disable_cpu_flags, int invert, int off) { | 1499 int disable_cpu_flags, int invert, int off) { |
| 1507 if (width < 1) { | 1500 if (width < 1) { |
| 1508 width = 1; | 1501 width = 1; |
| 1509 } | 1502 } |
| 1510 const int kBpp = 4; | 1503 const int kBpp = 4; |
| 1511 const int kStride = width * kBpp; | 1504 const int kStride = width * kBpp; |
| 1512 align_buffer_64(src_argb_a, kStride * height + off); | 1505 align_buffer_64(src_argb_a, kStride * height + off); |
| 1513 align_buffer_64(src_argb_b, kStride * height + off); | 1506 align_buffer_64(src_argb_b, kStride * height + off); |
| 1514 align_buffer_64(dst_argb_c, kStride * height); | 1507 align_buffer_64(dst_argb_c, kStride * height); |
| 1515 align_buffer_64(dst_argb_opt, kStride * height); | 1508 align_buffer_64(dst_argb_opt, kStride * height); |
| 1516 srandom(time(NULL)); | |
| 1517 for (int i = 0; i < kStride * height; ++i) { | 1509 for (int i = 0; i < kStride * height; ++i) { |
| 1518 src_argb_a[i + off] = (random() & 0xff); | 1510 src_argb_a[i + off] = (fastrand() & 0xff); |
| 1519 src_argb_b[i + off] = (random() & 0xff); | 1511 src_argb_b[i + off] = (fastrand() & 0xff); |
| 1520 } | 1512 } |
| 1521 memset(dst_argb_c, 0, kStride * height); | 1513 memset(dst_argb_c, 0, kStride * height); |
| 1522 memset(dst_argb_opt, 0, kStride * height); | 1514 memset(dst_argb_opt, 0, kStride * height); |
| 1523 | 1515 |
| 1524 MaskCpuFlags(disable_cpu_flags); | 1516 MaskCpuFlags(disable_cpu_flags); |
| 1525 ARGBSubtract(src_argb_a + off, kStride, | 1517 ARGBSubtract(src_argb_a + off, kStride, |
| 1526 src_argb_b + off, kStride, | 1518 src_argb_b + off, kStride, |
| 1527 dst_argb_c, kStride, | 1519 dst_argb_c, kStride, |
| 1528 width, invert * height); | 1520 width, invert * height); |
| 1529 MaskCpuFlags(-1); | 1521 MaskCpuFlags(-1); |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1577 int disable_cpu_flags, int invert, int off) { | 1569 int disable_cpu_flags, int invert, int off) { |
| 1578 if (width < 1) { | 1570 if (width < 1) { |
| 1579 width = 1; | 1571 width = 1; |
| 1580 } | 1572 } |
| 1581 const int kBpp = 4; | 1573 const int kBpp = 4; |
| 1582 const int kStride = width * kBpp; | 1574 const int kStride = width * kBpp; |
| 1583 align_buffer_64(src_argb_a, kStride * height + off); | 1575 align_buffer_64(src_argb_a, kStride * height + off); |
| 1584 align_buffer_64(dst_argb_c, kStride * height); | 1576 align_buffer_64(dst_argb_c, kStride * height); |
| 1585 align_buffer_64(dst_argb_opt, kStride * height); | 1577 align_buffer_64(dst_argb_opt, kStride * height); |
| 1586 memset(src_argb_a, 0, kStride * height + off); | 1578 memset(src_argb_a, 0, kStride * height + off); |
| 1587 srandom(time(NULL)); | |
| 1588 for (int i = 0; i < kStride * height; ++i) { | 1579 for (int i = 0; i < kStride * height; ++i) { |
| 1589 src_argb_a[i + off] = (random() & 0xff); | 1580 src_argb_a[i + off] = (fastrand() & 0xff); |
| 1590 } | 1581 } |
| 1591 memset(dst_argb_c, 0, kStride * height); | 1582 memset(dst_argb_c, 0, kStride * height); |
| 1592 memset(dst_argb_opt, 0, kStride * height); | 1583 memset(dst_argb_opt, 0, kStride * height); |
| 1593 | 1584 |
| 1594 MaskCpuFlags(disable_cpu_flags); | 1585 MaskCpuFlags(disable_cpu_flags); |
| 1595 ARGBSobel(src_argb_a + off, kStride, | 1586 ARGBSobel(src_argb_a + off, kStride, |
| 1596 dst_argb_c, kStride, | 1587 dst_argb_c, kStride, |
| 1597 width, invert * height); | 1588 width, invert * height); |
| 1598 MaskCpuFlags(-1); | 1589 MaskCpuFlags(-1); |
| 1599 for (int i = 0; i < benchmark_iterations; ++i) { | 1590 for (int i = 0; i < benchmark_iterations; ++i) { |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1646 width = 1; | 1637 width = 1; |
| 1647 } | 1638 } |
| 1648 const int kSrcBpp = 4; | 1639 const int kSrcBpp = 4; |
| 1649 const int kDstBpp = 1; | 1640 const int kDstBpp = 1; |
| 1650 const int kSrcStride = (width * kSrcBpp + 15) & ~15; | 1641 const int kSrcStride = (width * kSrcBpp + 15) & ~15; |
| 1651 const int kDstStride = (width * kDstBpp + 15) & ~15; | 1642 const int kDstStride = (width * kDstBpp + 15) & ~15; |
| 1652 align_buffer_64(src_argb_a, kSrcStride * height + off); | 1643 align_buffer_64(src_argb_a, kSrcStride * height + off); |
| 1653 align_buffer_64(dst_argb_c, kDstStride * height); | 1644 align_buffer_64(dst_argb_c, kDstStride * height); |
| 1654 align_buffer_64(dst_argb_opt, kDstStride * height); | 1645 align_buffer_64(dst_argb_opt, kDstStride * height); |
| 1655 memset(src_argb_a, 0, kSrcStride * height + off); | 1646 memset(src_argb_a, 0, kSrcStride * height + off); |
| 1656 srandom(time(NULL)); | |
| 1657 for (int i = 0; i < kSrcStride * height; ++i) { | 1647 for (int i = 0; i < kSrcStride * height; ++i) { |
| 1658 src_argb_a[i + off] = (random() & 0xff); | 1648 src_argb_a[i + off] = (fastrand() & 0xff); |
| 1659 } | 1649 } |
| 1660 memset(dst_argb_c, 0, kDstStride * height); | 1650 memset(dst_argb_c, 0, kDstStride * height); |
| 1661 memset(dst_argb_opt, 0, kDstStride * height); | 1651 memset(dst_argb_opt, 0, kDstStride * height); |
| 1662 | 1652 |
| 1663 MaskCpuFlags(disable_cpu_flags); | 1653 MaskCpuFlags(disable_cpu_flags); |
| 1664 ARGBSobelToPlane(src_argb_a + off, kSrcStride, | 1654 ARGBSobelToPlane(src_argb_a + off, kSrcStride, |
| 1665 dst_argb_c, kDstStride, | 1655 dst_argb_c, kDstStride, |
| 1666 width, invert * height); | 1656 width, invert * height); |
| 1667 MaskCpuFlags(-1); | 1657 MaskCpuFlags(-1); |
| 1668 for (int i = 0; i < benchmark_iterations; ++i) { | 1658 for (int i = 0; i < benchmark_iterations; ++i) { |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1713 int disable_cpu_flags, int invert, int off) { | 1703 int disable_cpu_flags, int invert, int off) { |
| 1714 if (width < 1) { | 1704 if (width < 1) { |
| 1715 width = 1; | 1705 width = 1; |
| 1716 } | 1706 } |
| 1717 const int kBpp = 4; | 1707 const int kBpp = 4; |
| 1718 const int kStride = width * kBpp; | 1708 const int kStride = width * kBpp; |
| 1719 align_buffer_64(src_argb_a, kStride * height + off); | 1709 align_buffer_64(src_argb_a, kStride * height + off); |
| 1720 align_buffer_64(dst_argb_c, kStride * height); | 1710 align_buffer_64(dst_argb_c, kStride * height); |
| 1721 align_buffer_64(dst_argb_opt, kStride * height); | 1711 align_buffer_64(dst_argb_opt, kStride * height); |
| 1722 memset(src_argb_a, 0, kStride * height + off); | 1712 memset(src_argb_a, 0, kStride * height + off); |
| 1723 srandom(time(NULL)); | |
| 1724 for (int i = 0; i < kStride * height; ++i) { | 1713 for (int i = 0; i < kStride * height; ++i) { |
| 1725 src_argb_a[i + off] = (random() & 0xff); | 1714 src_argb_a[i + off] = (fastrand() & 0xff); |
| 1726 } | 1715 } |
| 1727 memset(dst_argb_c, 0, kStride * height); | 1716 memset(dst_argb_c, 0, kStride * height); |
| 1728 memset(dst_argb_opt, 0, kStride * height); | 1717 memset(dst_argb_opt, 0, kStride * height); |
| 1729 | 1718 |
| 1730 MaskCpuFlags(disable_cpu_flags); | 1719 MaskCpuFlags(disable_cpu_flags); |
| 1731 ARGBSobelXY(src_argb_a + off, kStride, | 1720 ARGBSobelXY(src_argb_a + off, kStride, |
| 1732 dst_argb_c, kStride, | 1721 dst_argb_c, kStride, |
| 1733 width, invert * height); | 1722 width, invert * height); |
| 1734 MaskCpuFlags(-1); | 1723 MaskCpuFlags(-1); |
| 1735 for (int i = 0; i < benchmark_iterations; ++i) { | 1724 for (int i = 0; i < benchmark_iterations; ++i) { |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1780 int disable_cpu_flags, int invert, int off, int radius) { | 1769 int disable_cpu_flags, int invert, int off, int radius) { |
| 1781 if (width < 1) { | 1770 if (width < 1) { |
| 1782 width = 1; | 1771 width = 1; |
| 1783 } | 1772 } |
| 1784 const int kBpp = 4; | 1773 const int kBpp = 4; |
| 1785 const int kStride = width * kBpp; | 1774 const int kStride = width * kBpp; |
| 1786 align_buffer_64(src_argb_a, kStride * height + off); | 1775 align_buffer_64(src_argb_a, kStride * height + off); |
| 1787 align_buffer_64(dst_cumsum, width * height * 16); | 1776 align_buffer_64(dst_cumsum, width * height * 16); |
| 1788 align_buffer_64(dst_argb_c, kStride * height); | 1777 align_buffer_64(dst_argb_c, kStride * height); |
| 1789 align_buffer_64(dst_argb_opt, kStride * height); | 1778 align_buffer_64(dst_argb_opt, kStride * height); |
| 1790 srandom(time(NULL)); | |
| 1791 for (int i = 0; i < kStride * height; ++i) { | 1779 for (int i = 0; i < kStride * height; ++i) { |
| 1792 src_argb_a[i + off] = (random() & 0xff); | 1780 src_argb_a[i + off] = (fastrand() & 0xff); |
| 1793 } | 1781 } |
| 1794 memset(dst_cumsum, 0, width * height * 16); | 1782 memset(dst_cumsum, 0, width * height * 16); |
| 1795 memset(dst_argb_c, 0, kStride * height); | 1783 memset(dst_argb_c, 0, kStride * height); |
| 1796 memset(dst_argb_opt, 0, kStride * height); | 1784 memset(dst_argb_opt, 0, kStride * height); |
| 1797 | 1785 |
| 1798 MaskCpuFlags(disable_cpu_flags); | 1786 MaskCpuFlags(disable_cpu_flags); |
| 1799 ARGBBlur(src_argb_a + off, kStride, | 1787 ARGBBlur(src_argb_a + off, kStride, |
| 1800 dst_argb_c, kStride, | 1788 dst_argb_c, kStride, |
| 1801 reinterpret_cast<int32*>(dst_cumsum), width * 4, | 1789 reinterpret_cast<int32*>(dst_cumsum), width * 4, |
| 1802 width, invert * height, radius); | 1790 width, invert * height, radius); |
| (...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2098 free_aligned_buffer_64(orig_pixels); | 2086 free_aligned_buffer_64(orig_pixels); |
| 2099 } | 2087 } |
| 2100 | 2088 |
| 2101 static int TestARGBRect(int width, int height, int benchmark_iterations, | 2089 static int TestARGBRect(int width, int height, int benchmark_iterations, |
| 2102 int disable_cpu_flags, int invert, int off, int bpp) { | 2090 int disable_cpu_flags, int invert, int off, int bpp) { |
| 2103 if (width < 1) { | 2091 if (width < 1) { |
| 2104 width = 1; | 2092 width = 1; |
| 2105 } | 2093 } |
| 2106 const int kStride = width * bpp; | 2094 const int kStride = width * bpp; |
| 2107 const int kSize = kStride * height; | 2095 const int kSize = kStride * height; |
| 2108 const uint32 v32 = random() & (bpp == 4 ? 0xffffffff : 0xff); | 2096 const uint32 v32 = fastrand() & (bpp == 4 ? 0xffffffff : 0xff); |
| 2109 | 2097 |
| 2110 align_buffer_64(dst_argb_c, kSize + off); | 2098 align_buffer_64(dst_argb_c, kSize + off); |
| 2111 align_buffer_64(dst_argb_opt, kSize + off); | 2099 align_buffer_64(dst_argb_opt, kSize + off); |
| 2112 | 2100 |
| 2113 MemRandomize(dst_argb_c + off, kSize); | 2101 MemRandomize(dst_argb_c + off, kSize); |
| 2114 memcpy(dst_argb_opt + off, dst_argb_c + off, kSize); | 2102 memcpy(dst_argb_opt + off, dst_argb_c + off, kSize); |
| 2115 | 2103 |
| 2116 MaskCpuFlags(disable_cpu_flags); | 2104 MaskCpuFlags(disable_cpu_flags); |
| 2117 if (bpp == 4) { | 2105 if (bpp == 4) { |
| 2118 ARGBRect(dst_argb_c + off, kStride, 0, 0, width, invert * height, v32); | 2106 ARGBRect(dst_argb_c + off, kStride, 0, 0, width, invert * height, v32); |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2192 } | 2180 } |
| 2193 | 2181 |
| 2194 TEST_F(libyuvTest, SetPlane_Opt) { | 2182 TEST_F(libyuvTest, SetPlane_Opt) { |
| 2195 int max_diff = TestARGBRect(benchmark_width_, benchmark_height_, | 2183 int max_diff = TestARGBRect(benchmark_width_, benchmark_height_, |
| 2196 benchmark_iterations_, disable_cpu_flags_, | 2184 benchmark_iterations_, disable_cpu_flags_, |
| 2197 +1, 0, 1); | 2185 +1, 0, 1); |
| 2198 EXPECT_EQ(0, max_diff); | 2186 EXPECT_EQ(0, max_diff); |
| 2199 } | 2187 } |
| 2200 | 2188 |
| 2201 } // namespace libyuv | 2189 } // namespace libyuv |
| OLD | NEW |