File: libdng.h

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 (197 lines) | stat: -rw-r--r-- 5,581 bytes parent folder | download
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
#ifndef LIBDNG_LIBRARY_H
#define LIBDNG_LIBRARY_H

#include <limits.h>
#include <time.h>
#include <stdint.h>
#include <stdbool.h>

#define EXPORT __attribute__((__visibility__("default")))

typedef struct {
		char *camera_make;
		char *camera_model;
		char *unique_camera_model;
		char *software;
		uint16_t orientation;
		struct tm datetime;
		uint16_t exposure_program;
		float exposure_time;
		uint32_t iso;
		float fnumber;
		float focal_length;
		float crop_factor;
		float frame_rate;

		// Raw image data
		uint16_t bayer_pattern_dimensions[2];
		float neutral[3];
		float analogbalance[3];
		uint8_t cfapattern[4];
		uint32_t whitelevel;

		// Calibration data
		float color_matrix_1[9];
		float color_matrix_2[9];
		float forward_matrix_1[9];
		float forward_matrix_2[9];
		unsigned short illuminant_1;
		unsigned short illuminant_2;
		unsigned int hue_sat_map_dims[3];
		size_t tone_curve_length;
		float *tone_curve;
		float *hue_sat_map_data_1;
		float *hue_sat_map_data_2;

		uint16_t bit_depth;
		bool needs_repack;
		uint32_t width;
		uint32_t height;

		float distortion_a;
		float distortion_b;
		float distortion_c;
		float vignette_k1;
		float vignette_k2;
		float vignette_k3;

		// v4l2 bytesperline in case it's weird
		unsigned int stride;
} libdng_info;

#define LIBDNG_ORIENTATION_TOPLEFT 1
#define LIBDNG_ORIENTATION_TOPRIGHT 2
#define LIBDNG_ORIENTATION_BOTRIGHT 3
#define LIBDNG_ORIENTATION_BOTLEFT 4
#define LIBDNG_ORIENTATION_LEFTTOP 5
#define LIBDNG_ORIENTATION_RIGHTTOP 6
#define LIBDNG_ORIENTATION_RIGHTBOT 7
#define LIBDNG_ORIENTATION_LEFTBOT 8

#define LIBDNG_EXPOSUREPROGRAM_UNDEFINED 0
#define LIBDNG_EXPOSUREPROGRAM_MANUAL 1
#define LIBDNG_EXPOSUREPROGRAM_NORMAL 2
#define LIBDNG_EXPOSUREPROGRAM_APERTURE_PRIORITY 3
#define LIBDNG_EXPOSUREPROGRAM_SHUTTER_PRIORITY 4
#define LIBDNG_EXPOSUREPROGRAM_CREATIVE 5
#define LIBDNG_EXPOSUREPROGRAM_ACTION 6
#define LIBDNG_EXPOSUREPROGRAM_PORTRAIT 7
#define LIBDNG_EXPOSUREPROGRAM_LANDSCAPE 8

#define LIBDNG_ILLUMINANT_UNKNOWN 0
#define LIBDNG_ILLUMINANT_DAYLIGHT 1
#define LIBDNG_ILLUMINANT_FLUORESCENT 2
#define LIBDNG_ILLUMINANT_TUNGSTEN 3
#define LIBDNG_ILLUMINANT_FLASH 4
#define LIBDNG_ILLUMINANT_FINE_WEATHER 9
#define LIBDNG_ILLUMINANT_CLOUDY_WEATHER 10
#define LIBDNG_ILLUMINANT_SHADE 11
#define LIBDNG_ILLUMINANT_DAYLIGHT_FLUORESCENT 12
#define LIBDNG_ILLUMINANT_DAY_WHITE_FLUORESCENT 13
#define LIBDNG_ILLUMINANT_COOL_WHITE_FLUORESCENT 14
#define LIBDNG_ILLUMINANT_WHITE_FLUORESCENT 15
#define LIBDNG_ILLUMINANT_STANDARD_A 17
#define LIBDNG_ILLUMINANT_STANDARD_B 18
#define LIBDNG_ILLUMINANT_STANDARD_C 19
#define LIBDNG_ILLUMINANT_D55 20
#define LIBDNG_ILLUMINANT_D65 21
#define LIBDNG_ILLUMINANT_D75 22
#define LIBDNG_ILLUMINANT_D50 23
#define LIBDNG_ILLUMINANT_ISO_TUNGSTEN 24
#define LIBDNG_ILLUMINANT_OTHER 255

EXPORT int
libdng_init();

EXPORT void
libdng_new(libdng_info *dng);

EXPORT void
libdng_free(libdng_info *dng);

EXPORT int
libdng_set_mode_from_name(libdng_info *dng, const char *name);

EXPORT int
libdng_set_mode_from_pixfmt(libdng_info *dng, uint32_t pixfmt);

EXPORT int
libdng_set_make_model(libdng_info *dng, const char *make, const char *model);

EXPORT int
libdng_set_software(libdng_info *dng, const char *software);

EXPORT int
libdng_set_datetime(libdng_info *dng, struct tm time);

EXPORT int
libdng_set_datetime_now(libdng_info *dng);

EXPORT int
libdng_set_orientation(libdng_info *dng, uint16_t orientation);

EXPORT int
libdng_set_neutral(libdng_info *dng, float red, float green, float blue);

EXPORT int
libdng_set_analog_balance(libdng_info *dng, float red, float green, float blue);

EXPORT int
libdng_load_calibration_file(libdng_info *dng, const char *path);

EXPORT int
libdng_set_exposure_program(libdng_info *dng, uint16_t mode);

EXPORT int
libdng_set_exposure_time(libdng_info *dng, float seconds);

EXPORT int
libdng_set_iso(libdng_info *dng, uint32_t isospeed);

EXPORT int
libdng_set_fnumber(libdng_info *dng, float fnumber);

EXPORT int
libdng_set_focal_length(libdng_info *dng, float focal_length, float crop_factor);

EXPORT int
libdng_set_frame_rate(libdng_info *dng, float framerate);

EXPORT int
libdng_set_distortion(libdng_info *dng, float a, float b, float c);

EXPORT int
libdng_set_vignette(libdng_info *dng, float k1, float k2, float k3);

EXPORT int
libdng_set_color_matrix_1(libdng_info *dng, float v1, float v2, float v3, float v4, float v5, float v6, float v7, float v8, float v9);

EXPORT int
libdng_set_color_matrix_2(libdng_info *dng, float v1, float v2, float v3, float v4, float v5, float v6, float v7, float v8, float v9);

EXPORT int
libdng_set_forward_matrix_1(libdng_info *dng, float v1, float v2, float v3, float v4, float v5, float v6, float v7, float v8, float v9);

EXPORT int
libdng_set_forward_matrix_2(libdng_info *dng, float v1, float v2, float v3, float v4, float v5, float v6, float v7, float v8, float v9);

EXPORT int
libdng_set_stride(libdng_info *dng, unsigned int stride);

EXPORT int
libdng_write(libdng_info *dng, const char *path, unsigned int width, unsigned int height, const uint8_t *data,
	size_t length);

EXPORT int
libdng_write_with_thumbnail(libdng_info *dng, const char *path, unsigned int width, unsigned int height,
	const uint8_t *data,
	size_t length, unsigned int thumb_width, unsigned int thumb_height, const uint8_t *thumb, size_t thumb_length);

EXPORT int
libdng_read(libdng_info *dng, const char *path);

EXPORT int
libdng_read_image(libdng_info *dng, const char *path, uint8_t index, uint8_t **data, size_t *length, uint32_t *width,
	uint32_t *height);

#endif //LIBDNG_LIBRARY_H