file probe prefs, updated dcraw, bugs - garbage, accel, ffmpeg/giphy.gif
[goodguy/history.git] / cinelerra-5.1 / cinelerra / dcraw.h
1
2 /* CINELERRA dcraw.c */
3 static int CLASS fcol(int row,int col);
4 #if 0
5 static char *my_memmem(char *haystack,size_t haystacklen,char *needle,size_t needlelen);
6 static char *my_strcasestr(char *haystack,const char *needle);
7 #endif
8 static void CLASS merror(void *ptr,const char *where);
9 static void CLASS derror(void);
10 static ushort CLASS sget2(uchar *s);
11 static ushort CLASS get2(void);
12 static unsigned CLASS sget4(uchar *s);
13 static unsigned CLASS get4(void);
14 static unsigned CLASS getint(int type);
15 static float CLASS int_to_float(int i);
16 static double CLASS getreal(int type);
17 static void CLASS read_shorts(ushort *pixel,int count);
18 static void CLASS cubic_spline(const int *x_,const int *y_,const int len);
19 static void CLASS canon_600_fixed_wb(int temp);
20 static int CLASS canon_600_color(int ratio[2],int mar);
21 static void CLASS canon_600_auto_wb(void);
22 static void CLASS canon_600_coeff(void);
23 static void CLASS canon_600_load_raw(void);
24 static void CLASS canon_600_correct(void);
25 static int CLASS canon_s2is(void);
26 static unsigned CLASS getbithuff(int nbits,ushort *huff);
27 static ushort *CLASS make_decoder_ref(const uchar **source);
28 static ushort *CLASS make_decoder(const uchar *source);
29 static void CLASS crw_init_tables(unsigned table,ushort *huff[2]);
30 static int CLASS canon_has_lowbits(void);
31 static void CLASS canon_load_raw(void);
32 static int CLASS ljpeg_start(struct jhead *jh,int info_only);
33 static void CLASS ljpeg_end(struct jhead *jh);
34 static int CLASS ljpeg_diff(ushort *huff);
35 static ushort *CLASS ljpeg_row(int jrow,struct jhead *jh);
36 static void CLASS lossless_jpeg_load_raw(void);
37 static void CLASS canon_sraw_load_raw(void);
38 static void CLASS adobe_copy_pixel(unsigned row,unsigned col,ushort **rp);
39 static void CLASS ljpeg_idct(struct jhead *jh);
40 static void CLASS lossless_dng_load_raw(void);
41 static void CLASS packed_dng_load_raw(void);
42 static void CLASS pentax_load_raw(void);
43 static void CLASS nikon_load_raw(void);
44 static void CLASS nikon_yuv_load_raw(void);
45 static int CLASS nikon_e995(void);
46 static int CLASS nikon_e2100(void);
47 static void CLASS nikon_3700(void);
48 static int CLASS minolta_z2(void);
49 static void CLASS ppm_thumb(void);
50 static void CLASS ppm16_thumb(void);
51 static void CLASS layer_thumb(void);
52 static void CLASS rollei_thumb(void);
53 static void CLASS rollei_load_raw(void);
54 static int CLASS raw(unsigned row,unsigned col);
55 static void CLASS phase_one_flat_field(int is_float,int nc);
56 static void CLASS phase_one_correct(void);
57 static void CLASS phase_one_load_raw(void);
58 static unsigned CLASS ph1_bithuff(int nbits,ushort *huff);
59 static void CLASS phase_one_load_raw_c(void);
60 static void CLASS hasselblad_load_raw(void);
61 static void CLASS leaf_hdr_load_raw(void);
62 static void CLASS unpacked_load_raw(void);
63 static void CLASS sinar_4shot_load_raw(void);
64 static void CLASS imacon_full_load_raw(void);
65 static void CLASS packed_load_raw(void);
66 static void CLASS nokia_load_raw(void);
67 static void CLASS canon_rmf_load_raw(void);
68 static unsigned CLASS pana_bits(int nbits);
69 static void CLASS panasonic_load_raw(void);
70 static void CLASS olympus_load_raw(void);
71 static void CLASS minolta_rd175_load_raw(void);
72 static void CLASS quicktake_100_load_raw(void);
73 static void CLASS kodak_radc_load_raw(void);
74 static void CLASS kodak_jpeg_load_raw(void);
75 static void CLASS lossy_dng_load_raw(void);
76 #ifndef NO_JPEG
77 static int boolean fill_input_buffer(j_decompress_ptr cinfo);
78 #endif
79 static void CLASS kodak_jpeg_load_raw(void);
80 static void CLASS lossy_dng_load_raw(void);
81 static void CLASS kodak_dc120_load_raw(void);
82 static void CLASS eight_bit_load_raw(void);
83 static void CLASS kodak_c330_load_raw(void);
84 static void CLASS kodak_c603_load_raw(void);
85 static void CLASS kodak_262_load_raw(void);
86 static int CLASS kodak_65000_decode(short *out,int bsize);
87 static void CLASS kodak_65000_load_raw(void);
88 static void CLASS kodak_ycbcr_load_raw(void);
89 static void CLASS kodak_rgb_load_raw(void);
90 static void CLASS kodak_thumb_load_raw(void);
91 static void CLASS sony_decrypt(unsigned *data,int len,int start,int key);
92 static void CLASS sony_load_raw(void);
93 static void CLASS sony_arw_load_raw(void);
94 static void CLASS sony_arw2_load_raw(void);
95 static void CLASS samsung_load_raw(void);
96 static void CLASS samsung2_load_raw(void);
97 static void CLASS samsung3_load_raw(void);
98 static void CLASS smal_decode_segment(unsigned seg[2][2],int holes);
99 static void CLASS smal_v6_load_raw(void);
100 static int CLASS median4(int *p);
101 static void CLASS fill_holes(int holes);
102 static void CLASS smal_v9_load_raw(void);
103 static void CLASS redcine_load_raw(void);
104 static void CLASS foveon_decoder(unsigned size,unsigned code);
105 static void CLASS foveon_thumb(void);
106 static void CLASS foveon_sd_load_raw(void);
107 static void CLASS foveon_huff(ushort *huff);
108 static void CLASS foveon_dp_load_raw(void);
109 static void CLASS foveon_load_camf(void);
110 static const char *CLASS foveon_camf_param(const char *block,const char *param);
111 static void *CLASS foveon_camf_matrix(unsigned dim[3],const char *name);
112 static int CLASS foveon_fixed(void *ptr,int size,const char *name);
113 static float CLASS foveon_avg(short *pix,int range[2],float cfilt);
114 static short *CLASS foveon_make_curve(double max,double mul,double filt);
115 static void CLASS foveon_make_curves(short **curvep,float dq[3],float div[3],float filt);
116 static int CLASS foveon_apply_curve(short *curve,int i);
117 static void CLASS foveon_interpolate(void);
118 static void CLASS crop_masked_pixels(void);
119 static void CLASS remove_zeroes(void);
120 static void CLASS bad_pixels(const char *cfname);
121 static void CLASS subtract(const char *fname);
122 static void CLASS gamma_curve(double pwr,double ts,int mode,int imax);
123 static void CLASS pseudoinverse (double (*in)[3],double (*out)[3],int size);
124 static void CLASS cam_xyz_coeff(float rgb_cam[3][4],double cam_xyz[4][3]);
125 #ifdef COLORCHECK
126 static void CLASS colorcheck(void);
127 #endif
128 static void CLASS hat_transform(float *temp,float *base,int st,int size,int sc);
129 static void CLASS wavelet_denoise(void);
130 static void CLASS scale_colors(void);
131 static void CLASS pre_interpolate(void);
132 static void CLASS border_interpolate(int border);
133 static void CLASS lin_interpolate(void);
134 static void CLASS vng_interpolate(void);
135 static void CLASS ppg_interpolate(void);
136 static void CLASS cielab(ushort rgb[3],short lab[3]);
137 static void CLASS xtrans_interpolate(int passes);
138 static void CLASS ahd_interpolate(void);
139 static void CLASS median_filter(void);
140 static void CLASS blend_highlights(void);
141 static void CLASS recover_highlights(void);
142 static void CLASS tiff_get(unsigned base,unsigned *tag,unsigned *type,unsigned *len,unsigned *save);
143 static void CLASS parse_thumb_note(int base,unsigned toff,unsigned tlen);
144 static void CLASS parse_makernote(int base,int uptag);
145 static void CLASS get_timestamp(int reversed);
146 static void CLASS parse_exif(int base);
147 static void CLASS parse_gps(int base);
148 static void CLASS romm_coeff(float romm_cam[3][3]);
149 static void CLASS parse_mos(int offset);
150 static void CLASS linear_table(unsigned len);
151 static void CLASS parse_kodak_ifd(int base);
152 static int CLASS parse_tiff_ifd(int base);
153 static int CLASS parse_tiff(int base);
154 static void CLASS apply_tiff(void);
155 static void CLASS parse_minolta(int base);
156 static void CLASS parse_external_jpeg(void);
157 static void CLASS ciff_block_1030(void);
158 static void CLASS parse_ciff(int offset,int length,int depth);
159 static void CLASS parse_rollei(void);
160 static void CLASS parse_sinar_ia(void);
161 static void CLASS parse_phase_one(int base);
162 static void CLASS parse_fuji(int offset);
163 static int CLASS parse_jpeg(int offset);
164 static void CLASS parse_riff(void);
165 static void CLASS parse_qt(int end);
166 static void CLASS parse_smal(int offset,int fsize);
167 static void CLASS parse_cine(void);
168 static void CLASS parse_redcine(void);
169 static char *CLASS foveon_gets(int offset,char *str,int len);
170 static void CLASS parse_foveon(void);
171 static void CLASS adobe_coeff(const char *make,const char *model);
172 static void CLASS simple_coeff(int index);
173 static short CLASS guess_byte_order(int words);
174 static float CLASS find_green(int bps,int bite,int off0,int off1);
175 static void CLASS identify(void);
176 #ifndef NO_LCMS
177 static void CLASS apply_profile(const char *input,const char *output);
178 #endif
179 static void CLASS convert_to_rgb(void);
180 static void CLASS fuji_rotate(void);
181 static void CLASS stretch(void);
182 static int CLASS flip_index(int row, int col);
183 static void CLASS tiff_set(struct tiff_hdr *th,ushort *ntag,ushort tag,ushort type,int count,int val);
184 static void CLASS tiff_head(struct tiff_hdr *th,int full);
185 static void CLASS jpeg_thumb(void);
186 static void CLASS write_ppm_tiff(void);
187 static void CLASS write_cinelerra(FILE *ofp);
188