Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(164)

Unified Diff: third_party/qcms/src/tests/qcms_test_tetra_clut_rgba.c

Issue 1374953003: Expand QCMS tests. Add Munsell test for transform accuracy (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Changed return error from -1 to EXIT_FAILURE Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/qcms/src/tests/qcms_test_munsell.c ('k') | third_party/qcms/src/tests/qcms_test_util.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/qcms/src/tests/qcms_test_tetra_clut_rgba.c
diff --git a/third_party/qcms/src/tests/qcms_test_tetra_clut_rgba.c b/third_party/qcms/src/tests/qcms_test_tetra_clut_rgba.c
index 3fafdc5e20bbad870c8f4c5becfc520c4dd45e2a..e1fc5b99dd05fecb7d4c9b62320dbae9563dac82 100644
--- a/third_party/qcms/src/tests/qcms_test_tetra_clut_rgba.c
+++ b/third_party/qcms/src/tests/qcms_test_tetra_clut_rgba.c
@@ -3,8 +3,7 @@
// found in the Chromium LICENSE file.
#include "qcms.h"
-#include "qcmsint.h"
-#include "qcmstypes.h"
+#include "qcms_test_util.h"
#include "timing.h"
#include <math.h>
@@ -26,18 +25,6 @@ extern void qcms_transform_data_tetra_clut_rgba_sse2(qcms_transform *transform,
size_t length,
qcms_format_type output_format);
-#define PIXEL_SIZE 4
-
-static void generate_source(unsigned char *src, size_t length)
-{
- size_t bytes = length * PIXEL_SIZE;
- size_t i;
-
- for (i = 0; i < bytes; ++i) {
- *src++ = rand() & 255;
- }
-}
-
static float *create_lut(size_t lutSize)
{
float *lut = malloc(lutSize * sizeof(float));
@@ -52,9 +39,9 @@ static float *create_lut(size_t lutSize)
static int diffs;
-static int validate(unsigned char *dst0, unsigned char *dst1, size_t length, int limit)
+static int validate(unsigned char *dst0, unsigned char *dst1, size_t length, int limit, const size_t pixel_size)
{
- size_t bytes = length * PIXEL_SIZE;
+ size_t bytes = length * pixel_size;
size_t i;
// Compare dst0/dst0 byte-by-byte, allowing for minor differences due
@@ -72,7 +59,12 @@ static int validate(unsigned char *dst0, unsigned char *dst1, size_t length, int
return !diffs;
}
-int main(int argc, const char **argv)
+static int qcms_test_tetra_clut_rgba(size_t width,
+ size_t height,
+ int iterations,
+ const char *in_profile,
+ const char *out_profile,
+ const int force_software)
{
qcms_transform transform0, transform1;
qcms_format_type format = {2, 0};
@@ -80,27 +72,14 @@ int main(int argc, const char **argv)
size_t lutSize;
float *lut0, *lut1;
- int iterations = 1;
- size_t height = 2000;
- size_t width = 2000;
- size_t length;
+ const size_t length = width * height;
+ const size_t pixel_size = 4;
double time0, time1;
int i;
- while (argc > 1) {
- if (strcmp(argv[1], "-i") == 0)
- iterations = abs(atoi(argv[2]));
- else if (strcmp(argv[1], "-w") == 0)
- width = (size_t) abs(atoi(argv[2]));
- else if (strcmp(argv[1], "-h") == 0)
- height = (size_t) abs(atoi(argv[2]));
- (--argc, ++argv);
- }
-
printf("Test qcms clut transforms for %d iterations\n", iterations);
printf("Test image size %u x %u pixels\n", (unsigned) width, (unsigned) height);
- length = width * height;
fflush(stdout);
srand(0);
@@ -135,13 +114,13 @@ int main(int argc, const char **argv)
time1 = 0.0;
for (i = 0; i < iterations; ++i) {
- unsigned char *src0 = (unsigned char *)calloc(length, PIXEL_SIZE);
- unsigned char *src1 = (unsigned char *)calloc(length, PIXEL_SIZE);
- unsigned char *dst0 = (unsigned char *)calloc(length, PIXEL_SIZE);
- unsigned char *dst1 = (unsigned char *)calloc(length, PIXEL_SIZE);
+ unsigned char *src0 = (unsigned char *)calloc(length, pixel_size);
+ unsigned char *src1 = (unsigned char *)calloc(length, pixel_size);
+ unsigned char *dst0 = (unsigned char *)calloc(length, pixel_size);
+ unsigned char *dst1 = (unsigned char *)calloc(length, pixel_size);
- generate_source(src0, length);
- memcpy(src1, src0, length * PIXEL_SIZE);
+ generate_source_uint8_t(src0, length, pixel_size);
+ memcpy(src1, src0, length * pixel_size);
#define TRANSFORM_TEST0 qcms_transform_data_tetra_clut_rgba
#define TRANSFORM_TEST1 qcms_transform_data_tetra_clut_rgba_sse2
@@ -149,7 +128,7 @@ int main(int argc, const char **argv)
TIME(TRANSFORM_TEST0(&transform0, src0, dst0, length, format), &time0);
TIME(TRANSFORM_TEST1(&transform1, src1, dst1, length, format), &time1);
- if (!validate(dst0, dst1, length, 0)) {
+ if (!validate(dst0, dst1, length, 0, pixel_size)) {
fprintf(stderr, "Invalid transform output: %d diffs\n", diffs);
}
@@ -163,14 +142,20 @@ int main(int argc, const char **argv)
#define STRING(s) STRINGIZE(s)
printf("%.6lf (avg %.6lf) seconds " STRING(TRANSFORM_TEST0) "\n",
- time0, time0 / iterations);
+ time0, time0 / iterations);
printf("%.6lf (avg %.6lf) seconds " STRING(TRANSFORM_TEST1) "\n",
- time1, time1 / iterations);
+ time1, time1 / iterations);
printf("%.6lf speedup after %d iterations\n\n",
- time0 / time1, iterations);
+ time0 / time1, iterations);
free(lut0);
free(lut1);
- return EXIT_SUCCESS;
+ return diffs;
}
+
+struct qcms_test_case qcms_test_tetra_clut_rgba_info = {
+ "qcms_test_tetra_clut_rgba",
+ qcms_test_tetra_clut_rgba,
+ QCMS_TEST_DISABLED
+};
« no previous file with comments | « third_party/qcms/src/tests/qcms_test_munsell.c ('k') | third_party/qcms/src/tests/qcms_test_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698