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 |