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 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241
|
/* -*- C++ -*-
* File: libraw_internal_funcs.h
* Copyright 2008-2009 LibRaw LLC (info@libraw.org)
* Created: Sat Mar 14, 2008
LibRaw is free software; you can redistribute it and/or modify
it under the terms of the one of three licenses as you choose:
1. GNU LESSER GENERAL PUBLIC LICENSE version 2.1
(See file LICENSE.LGPL provided in LibRaw distribution archive for details).
2. COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
(See file LICENSE.CDDL provided in LibRaw distribution archive for details).
3. LibRaw Software License 27032010
(See file LICENSE.LibRaw.pdf provided in LibRaw distribution archive for details).
*/
#ifndef _LIBRAW_INTERNAL_FUNCS_H
#define _LIBRAW_INTERNAL_FUNCS_H
#ifndef LIBRAW_LIBRARY_BUILD
#error "This file should be used only for libraw library build"
#else
// inline functions
ushort sget2 (uchar *s);
ushort get2();
unsigned sget4 (uchar *s);
unsigned getint (int type);
float int_to_float (int i);
double getreal (int type);
void read_shorts (ushort *pixel, int count);
// Canon P&S cameras
void canon_600_fixed_wb (int temp);
int canon_600_color (int ratio[2], int mar);
void canon_600_auto_wb();
void canon_600_coeff();
void canon_600_load_raw();
int canon_s2is();
void parse_ciff (int offset, int length);
void ciff_block_1030();
// LJPEG decoder
unsigned getbithuff (int nbits, ushort *huff);
ushort* make_decoder_ref (const uchar **source);
ushort* make_decoder (const uchar *source);
int ljpeg_start (struct jhead *jh, int info_only);
void ljpeg_end(struct jhead *jh);
int ljpeg_diff (ushort *huff);
int ljpeg_diff_new (LibRaw_bit_buffer& bits, LibRaw_byte_buffer* buf,ushort *huff);
int ljpeg_diff_pef (LibRaw_bit_buffer& bits, LibRaw_byte_buffer* buf,ushort *huff);
ushort * ljpeg_row (int jrow, struct jhead *jh);
ushort * ljpeg_row_new (int jrow, struct jhead *jh, LibRaw_bit_buffer& bits,LibRaw_byte_buffer* bytes);
unsigned ph1_bithuff (int nbits, ushort *huff);
// Canon DSLRs
void crw_init_tables (unsigned table, ushort *huff[2]);
int canon_has_lowbits();
void canon_compressed_load_raw();
void lossless_jpeg_load_raw();
void canon_sraw_load_raw();
// Adobe DNG
void adobe_copy_pixel (int row, int col, ushort **rp);
void adobe_dng_load_raw_lj();
void adobe_dng_load_raw_nc();
// Pentax
void pentax_load_raw();
void pentax_tree();
// Nikon (and Minolta Z2)
void nikon_compressed_load_raw();
void nikon_load_raw();
int nikon_is_compressed();
int nikon_e995();
int nikon_e2100();
void nikon_3700();
int minolta_z2();
void nikon_e2100_load_raw();
// Fuji
void fuji_load_raw();
void parse_fuji (int offset);
// RedCine
void parse_redcine();
void redcine_load_raw();
// Rollei
void rollei_load_raw();
void parse_rollei();
// MF backs
int bayer (unsigned row, unsigned col);
void phase_one_flat_field (int is_float, int nc);
void phase_one_correct();
void phase_one_load_raw();
unsigned ph1_bits (int nbits);
void phase_one_load_raw_c();
void hasselblad_load_raw();
void leaf_hdr_load_raw();
void sinar_4shot_load_raw();
void imacon_full_load_raw();
void packed_load_raw();
float find_green(int,int,int,int);
void unpacked_load_raw();
void parse_sinar_ia();
void parse_phase_one (int base);
// Misc P&S cameras
void nokia_load_raw();
unsigned pana_bits (int nbits);
void panasonic_load_raw();
void olympus_load_raw();
void olympus_cseries_load_raw();
void minolta_rd175_load_raw();
void quicktake_100_load_raw();
const int* make_decoder_int (const int *source, int level);
int radc_token (int tree);
void kodak_radc_load_raw();
void kodak_jpeg_load_raw();
void kodak_dc120_load_raw();
void eight_bit_load_raw();
void smal_decode_segment (unsigned seg[2][2], int holes);
void smal_v6_load_raw();
int median4 (int *p);
void fill_holes (int holes);
void smal_v9_load_raw();
void parse_riff();
void parse_cine();
void parse_smal (int offset, int fsize);
int parse_jpeg (int offset);
// Kodak
void kodak_262_load_raw();
int kodak_65000_decode (short *out, int bsize);
void kodak_65000_load_raw();
void kodak_rgb_load_raw();
void kodak_yrgb_load_raw();
void kodak_ycbcr_load_raw();
void kodak_rgb_load_thumb();
void kodak_ycbcr_load_thumb();
// It's a Sony (and K&M)
void sony_decrypt (unsigned *data, int len, int start, int key);
void sony_load_raw();
void sony_arw_load_raw();
void sony_arw2_load_raw();
void parse_minolta (int base);
// Foveon/Sigma
void foveon_load_camf();
void foveon_load_raw();
const char* foveon_camf_param (const char *block, const char *param);
void * foveon_camf_matrix (unsigned dim[3], const char *name);
int foveon_fixed (void *ptr, int size, const char *name);
float foveon_avg (short *pix, int range[2], float cfilt);
short * foveon_make_curve (double max, double mul, double filt);
void foveon_make_curves(short **curvep, float dq[3], float div[3], float filt);
int foveon_apply_curve (short *curve, int i);
void foveon_interpolate();
char * foveon_gets (int offset, char *str, int len);
void parse_foveon();
// CAM/RGB
void pseudoinverse (double (*in)[3], double (*out)[3], int size);
void cam_xyz_coeff (double cam_xyz[4][3]);
void adobe_coeff (const char *, const char *);
void simple_coeff (int index);
// Tiff/Exif parsers
void tiff_get (unsigned base,unsigned *tag, unsigned *type, unsigned *len, unsigned *save);
void parse_thumb_note (int base, unsigned toff, unsigned tlen);
void parse_makernote (int base, int uptag);
void parse_exif (int base);
void linear_table (unsigned len);
void parse_kodak_ifd (int base);
int parse_tiff_ifd (int base);
int parse_tiff (int base);
void apply_tiff(void);
void parse_gps (int base);
void romm_coeff (float romm_cam[3][3]);
void parse_mos (int offset);
void get_timestamp (int reversed);
// External JPEGs, what cameras uses it ?
void parse_external_jpeg();
// The identify
short guess_byte_order (int words);
// Tiff writer
void tiff_set (ushort *ntag, ushort tag, ushort type, int count, int val);
void tiff_head (struct tiff_hdr *th, int full);
// splitted AHD code
#define TS 256
void ahd_interpolate_green_h_and_v(int top, int left, ushort (*out_rgb)[TS][TS][3]);
void ahd_interpolate_r_and_b_in_rgb_and_convert_to_cielab(int top, int left, ushort (*inout_rgb)[TS][3], short (*out_lab)[TS][3], const float (&xyz_cam)[3][4]);
void ahd_interpolate_r_and_b_and_convert_to_cielab(int top, int left, ushort (*inout_rgb)[TS][TS][3], short (*out_lab)[TS][TS][3], const float (&xyz_cam)[3][4]);
void ahd_interpolate_build_homogeneity_map(int top, int left, short (*lab)[TS][TS][3], char (*out_homogeneity_map)[TS][2]);
void ahd_interpolate_combine_homogeneous_pixels(int top, int left, ushort (*rgb)[TS][TS][3], char (*homogeneity_map)[TS][2]);
#undef TS
// LibRaw demosaic packs functions
// AMaZe
int LinEqSolve(int, float*, float*, float*);
// DCB
void dcb_pp();
void dcb_copy_to_buffer(float (*image2)[3]);
void dcb_restore_from_buffer(float (*image2)[3]);
void dcb_color();
void dcb_color_full();
void dcb_map();
void dcb_correction();
void dcb_correction2();
void dcb_refinement();
void rgb_to_lch(double (*image3)[3]);
void lch_to_rgb(double (*image3)[3]);
void fbdd_correction();
void fbdd_correction2(double (*image3)[3]);
void fbdd_green();
void dcb_ver(float (*image3)[3]);
void dcb_hor(float (*image2)[3]);
void dcb_color2(float (*image2)[3]);
void dcb_color3(float (*image3)[3]);
void dcb_decide(float (*image2)[3], float (*image3)[3]);
void dcb_nyquist();
// VCD/modified dcraw
void refinement();
void ahd_partial_interpolate(int threshold_value);
void es_median_filter();
void median_filter_new();
#endif
#endif
|