File: check_dcp.c

package info (click to toggle)
libdng 0.2.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,476 kB
  • sloc: ansic: 3,130; sh: 157; makefile: 13; python: 8
file content (81 lines) | stat: -rw-r--r-- 2,363 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <stdbool.h>
#include <tiffio.h>
#include "greatest.h"
#include "libdng.h"


TEST load_pinephone_dcp(void)
{
	libdng_info info = {0};
	libdng_new(&info);

	if (!libdng_load_calibration_file(&info, "fixture/pinephone.dcp")) {
			FAILm("Could not load calibration file");
	}

	float colormatrix1[] = {
		1.8464f, -0.9617f, 0.096f,
		-0.4260f, 1.3753f, 0.3348f,
		-0.1147f, 0.4933f, 1.6042f,
	};
	char name[20] = {0};
	for (int i = 0; i < 9; i++) {
		snprintf(name, 20, "COLORMATRIX1[%d]", i);
			ASSERT_IN_RANGEm(strdup(name), colormatrix1[i], info.color_matrix_1[i], 0.0000001f);
	}

	float forwardmatrix1[] = {
		0.7063f, 0.1361f, 0.1219f,
		0.2691f, 0.6969f, 0.0340f,
		0.0003f, 0.0855f, 0.7393f,
	};
	for (int i = 0; i < 9; i++) {
		snprintf(name, 20, "FORWARDMATRIX1[%d]", i);
			ASSERT_IN_RANGEm(strdup(name), forwardmatrix1[i], info.forward_matrix_1[i], 0.0000001f);
	}

		ASSERT_EQ_FMTm("ILLUMINANT1", LIBDNG_ILLUMINANT_STANDARD_A, info.illuminant_1, "%d");
		ASSERT_EQ_FMTm("ILLUMINANT2", LIBDNG_ILLUMINANT_D65, info.illuminant_2, "%d");

		ASSERT_EQ_FMTm("TONE_CURVE_LEN", (size_t) 4, info.tone_curve_length, "%zu");
	double tonecurve[] = {0.0, 0.0, 1.0, 1.0};
	for (size_t i = 0; i < info.tone_curve_length; i++) {
		snprintf(name, 20, "TONECURVE[%zu]", i);
			ASSERT_IN_RANGEm(strdup(name), tonecurve[i], info.tone_curve[i], 0.0000001f);
	}

	// HueSat map is 90x30x1 in this DCP (ProfileHueSatMapDims: Hues = 90, Sats = 30, Vals = 1)
		ASSERT_EQ_FMTm("HUE_SAT_MAP_DIMS[0]", 90, info.hue_sat_map_dims[0], "%d");
		ASSERT_EQ_FMTm("HUE_SAT_MAP_DIMS[1]", 30, info.hue_sat_map_dims[1], "%d");
		ASSERT_EQ_FMTm("HUE_SAT_MAP_DIMS[2]", 1, info.hue_sat_map_dims[2], "%d");

	size_t entries = info.hue_sat_map_dims[0] * info.hue_sat_map_dims[1] * info.hue_sat_map_dims[2];
	for (size_t i = 0; i < entries; i = i + 3) {
		if (info.hue_sat_map_data_1[i] < -360.0f || info.hue_sat_map_data_1[i] > 360.0f) {
			snprintf(name, 20, "HUESATMAP1[%zu]", i);
				FAILm(strdup(name));
		}
		if (info.hue_sat_map_data_2[i] < -360.0f || info.hue_sat_map_data_2[i] > 360.0f) {
			snprintf(name, 20, "HUESATMAP2[%zu]", i);
				FAILm(strdup(name));
		}

	}
		PASS();
}

SUITE (test_suite)
{
		RUN_TEST(load_pinephone_dcp);
}

GREATEST_MAIN_DEFS();

int
main(int argc, char **argv)
{
	GREATEST_MAIN_BEGIN();
	libdng_init();
	RUN_SUITE(test_suite);
	GREATEST_MAIN_END();
}