76 FILE *fp, uint32_t xs, uint32_t ys,
float Tv,
float Av,
77 float f,
float iso, uint32_t filter,
78 const uint8_t xtrans[6][6],
79 const float whitelevel,
80 const dt_aligned_pixel_t wb_coeffs,
81 const float adobe_XYZ_to_CAM[4][3])
83 const uint32_t channels = 1;
90 int m[9] = { 3240454, -1537138, -498531, -969266, 1876010, 41556, 55643, -204025, 1057225 };
93 memset(buf, 0,
sizeof(buf));
129 uint32_t cfapattern = 0;
133 cfapattern = (0 << 24) | (1 << 16) | (1 << 8) | 2;
136 cfapattern = (1 << 24) | (2 << 16) | (0 << 8) | 1;
139 cfapattern = (1 << 24) | (0 << 16) | (2 << 8) | 1;
142 cfapattern = (2 << 24) | (1 << 16) | (1 << 8) | 0;
159 white.f = whitelevel;
172 memcpy(buf+400, xtrans,
sizeof(uint8_t)*36);
175 if(!isnan(adobe_XYZ_to_CAM[0][0]))
177 for(
int k= 0; k < 3; k++)
178 for(
int i= 0; i < 3; i++)
183 for(
int k = 0; k < 9; k++)
191 for(
int k = 0; k < 3; k++)
193 const float coeff = roundf(((
float)den * wb_coeffs[1]) / wb_coeffs[k]);
199 const int written = fwrite(buf, 1, 584, fp);
200 if(written != 584) fprintf(stderr,
"[dng_write_header] failed to write image header!\n");
204 const char *filename,
const float *
const pixel,
const int wd,
205 const int ht,
void *exif,
const int exif_len,
const uint32_t filter,
206 const uint8_t xtrans[6][6],
207 const float whitelevel,
208 const dt_aligned_pixel_t wb_coeffs,
209 const float adobe_XYZ_to_CAM[4][3])
211 FILE *
f = g_fopen(filename,
"wb");
215 filter, xtrans, whitelevel, wb_coeffs, adobe_XYZ_to_CAM);
216 const int k = fwrite(pixel,
sizeof(
float), (
size_t)wd * ht,
f);
217 if(k != wd * ht) fprintf(stderr,
"[dng_write] Error writing image data to %s\n", filename);
static float f(const float t, const float c, const float x)
Definition graduatednd.c:173
static uint8_t * dt_imageio_dng_make_tag(uint16_t tag, uint16_t type, uint32_t lng, uint32_t fld, uint8_t *b, uint8_t *cnt)
Definition imageio_dng.h:49
static void dt_imageio_write_dng(const char *filename, const float *const pixel, const int wd, const int ht, void *exif, const int exif_len, const uint32_t filter, const uint8_t xtrans[6][6], const float whitelevel, const dt_aligned_pixel_t wb_coeffs, const float adobe_XYZ_to_CAM[4][3])
Definition imageio_dng.h:203
static void dt_imageio_dng_write_tiff_header(FILE *fp, uint32_t xs, uint32_t ys, float Tv, float Av, float f, float iso, uint32_t filter, const uint8_t xtrans[6][6], const float whitelevel, const dt_aligned_pixel_t wb_coeffs, const float adobe_XYZ_to_CAM[4][3])
Definition imageio_dng.h:75