A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/ncruces/dcraw/commit/6bdeee0d353335e483d8c5f7108d19131d49188f below:

Added the Sony DSLR-A100, Minolta DiMAGE G530, and Sinar 4080x4080. · ncruces/dcraw@6bdeee0 · GitHub

19 19

copy them from an earlier, non-GPL Revision of dcraw.c, or (c)

20 20

purchase a license from the author.

21 21 22 -

$Revision: 1.330 $

23 -

$Date: 2006/05/29 18:54:35 $

22 +

$Revision: 1.331 $

23 +

$Date: 2006/06/21 20:00:07 $

24 24

*/

25 25 26 26

#define _GNU_SOURCE

@@ -1447,6 +1447,8 @@ void CLASS phase_one_load_raw_c()

1447 1447

fseek (ifp, ph1.black_off, SEEK_SET);

1448 1448

if (ph1.black_off)

1449 1449

read_shorts ((ushort *) black[0], raw_height*2);

1450 +

for (i=0; i < 256; i++)

1451 +

curve[i] = i*i / 3.969 + 0.5;

1450 1452

for (row=0; row < raw_height; row++) {

1451 1453

fseek (ifp, data_offset + offset[row], SEEK_SET);

1452 1454

ph1_bits(0);

@@ -1463,6 +1465,8 @@ void CLASS phase_one_load_raw_c()

1463 1465

pixel[col] = pred[col & 1] = ph1_bits(16);

1464 1466

else

1465 1467

pixel[col] = pred[col & 1] += ph1_bits(i) + 1 - (1 << (i - 1));

1468 +

if (ph1.format == 5 && pixel[col] < 256)

1469 +

pixel[col] = curve[pixel[col]];

1466 1470

}

1467 1471

if ((unsigned) (row-top_margin) < height)

1468 1472

for (col=0; col < width; col++) {

@@ -2046,6 +2050,26 @@ void CLASS sony_load_raw()

2046 2050

maximum = 0x3ff0;

2047 2051

}

2048 2052 2053 +

void CLASS sony_arw_load_raw()

2054 +

{

2055 +

int col, row, len, diff, sum=0;

2056 + 2057 +

getbits(-1);

2058 +

for (col = raw_width; col--; )

2059 +

for (row=0; row < raw_height+1; row+=2) {

2060 +

if (row == raw_height) row = 1;

2061 +

len = 4 - getbits(2);

2062 +

if (len == 3 && getbits(1)) len = 0;

2063 +

if (len == 4)

2064 +

while (len < 17 && !getbits(1)) len++;

2065 +

diff = getbits(len);

2066 +

if ((diff & (1 << (len-1))) == 0)

2067 +

diff -= (1 << len) - 1;

2068 +

sum += diff;

2069 +

if (row < height) BAYER(row,col) = sum;

2070 +

}

2071 +

}

2072 + 2049 2073

#define HOLE(row) ((holes >> (((row) - raw_height) & 7)) & 1)

2050 2074 2051 2075

/* Kudos to Rich Taylor for figuring out SMaL's compression algorithm. */

@@ -3650,7 +3674,7 @@ void CLASS parse_makernote (int base)

3650 3674

0x3b,0x2d,0xeb,0x25,0x49,0xfa,0xa3,0xaa,0x39,0xa7,0xc5,0xa7,0x50,0x11,0x36,0xfb,

3651 3675

0xc6,0x67,0x4a,0xf5,0xa5,0x12,0x65,0x7e,0xb0,0xdf,0xaf,0x4e,0xb3,0x61,0x7f,0x2f } };

3652 3676

unsigned offset=0, entries, tag, type, len, save, c;

3653 -

unsigned ver97=0, serial=0, i;

3677 +

unsigned ver97=0, serial=0, i, wb[4]={0,0,0,0};

3654 3678

uchar buf97[324], ci, cj, ck;

3655 3679

short sorder;

3656 3680

char buf[10];

@@ -3660,12 +3684,22 @@ void CLASS parse_makernote (int base)

3660 3684

*/

3661 3685

sorder = order;

3662 3686

fread (buf, 1, 10, ifp);

3663 -

if (!strncmp (buf,"KC" ,2) || /* these aren't TIFF format */

3664 -

!strncmp (buf,"KDK" ,3) ||

3665 -

!strncmp (buf,"MLY" ,3) ||

3687 +

if (!strncmp (buf,"KDK" ,3) || /* these aren't TIFF tables */

3666 3688

!strncmp (buf,"VER" ,3) ||

3667 3689

!strncmp (buf,"IIII",4) ||

3668 3690

!strncmp (buf,"MMMM",4)) return;

3691 +

if (!strncmp (buf,"KC" ,2) || /* Konica KD-400Z, KD-510Z */

3692 +

!strncmp (buf,"MLY" ,3)) { /* Minolta DiMAGE G series */

3693 +

order = 0x4d4d;

3694 +

while ((i=ftell(ifp)) < data_offset && i < 16384) {

3695 +

wb[0] = wb[2]; wb[2] = wb[1]; wb[1] = wb[3];

3696 +

wb[3] = get2();

3697 +

if (wb[1] == 256 && wb[3] == 256 &&

3698 +

wb[0] > 256 && wb[0] < 640 && wb[2] > 256 && wb[2] < 640)

3699 +

FORC4 cam_mul[c] = wb[c];

3700 +

}

3701 +

goto quit;

3702 +

}

3669 3703

if (!strcmp (buf,"Nikon")) {

3670 3704

base = ftell(ifp);

3671 3705

order = get2();

@@ -3960,6 +3994,8 @@ void CLASS linear_table (unsigned len)

3960 3994

maximum = curve[0xfff];

3961 3995

}

3962 3996 3997 +

void CLASS parse_minolta (int base);

3998 + 3963 3999

int CLASS parse_tiff_ifd (int base, int level)

3964 4000

{

3965 4001

unsigned entries, tag, type, len, plen=16, save;

@@ -4055,6 +4091,10 @@ int CLASS parse_tiff_ifd (int base, int level)

4055 4091

tiff_ifd[ifd].offset = level ? ftell(ifp) : get4();

4056 4092

break;

4057 4093

case 330: /* SubIFDs */

4094 +

if (!strcmp(model,"DSLR-A100") && tiff_ifd[ifd].width == 3872) {

4095 +

data_offset = get4()+base;

4096 +

ifd++; break;

4097 +

}

4058 4098

while (len--) {

4059 4099

i = ftell(ifp);

4060 4100

fseek (ifp, get4()+base, SEEK_SET);

@@ -4212,7 +4252,10 @@ int CLASS parse_tiff_ifd (int base, int level)

4212 4252

break;

4213 4253

case 50740: /* DNGPrivateData */

4214 4254

if (dng_version) break;

4215 -

fseek (ifp, get4()+base, SEEK_SET);

4255 +

i = order;

4256 +

parse_minolta (j = get4()+base);

4257 +

order = i;

4258 +

fseek (ifp, j, SEEK_SET);

4216 4259

parse_tiff_ifd (base, level+1);

4217 4260

break;

4218 4261

case 50752:

@@ -4265,27 +4308,20 @@ int CLASS parse_tiff_ifd (int base, int level)

4265 4308

void CLASS parse_kodak_ifd (int base)

4266 4309

{

4267 4310

unsigned entries, tag, type, len, save;

4268 -

int i, c, wbi=-2, wbtemp;

4269 -

char line[128];

4270 -

static const char *wbs[] =

4271 -

{ "Auto","Daylight","Tungsten","Fluorescent","Flash" };

4311 +

int i, c, wbi=-2, wbtemp=6500;

4272 4312

float mul[3], num;

4273 4313 4274 4314

entries = get2();

4275 4315

if (entries > 1024) return;

4276 4316

while (entries--) {

4277 4317

tiff_get (base, &tag, &type, &len, &save);

4278 -

if (tag == 1009)

4279 -

while ((int) len > 0) {

4280 -

fgets (line, 128, ifp);

4281 -

len -= strlen(line) + 1;

4282 -

if (!strncmp (line, "White bal", 9)) {

4283 -

wbtemp = atoi (line + strlen(line) - 5);

4284 -

if (wbtemp < 1000) wbtemp = 6500;

4285 -

for (i=0; i < 5; i++)

4286 -

if (strstr (line, wbs[i])) wbi = i-1;

4287 -

}

4288 -

}

4318 +

if (tag == 1020) wbi = getint(type);

4319 +

if (tag == 1021 && len == 72) { /* WB set in software */

4320 +

fseek (ifp, 40, SEEK_CUR);

4321 +

FORC3 cam_mul[c] = 2048.0 / get2();

4322 +

wbi = -2;

4323 +

}

4324 +

if (tag == 2118) wbtemp = getint(type);

4289 4325

if (tag == 2130 + wbi)

4290 4326

FORC3 mul[c] = getreal(type);

4291 4327

if (tag == 2140 + wbi && wbi >= 0)

@@ -4298,7 +4334,6 @@ void CLASS parse_kodak_ifd (int base)

4298 4334

if (tag == 6020) iso_speed = getint(type);

4299 4335

fseek (ifp, save, SEEK_SET);

4300 4336

}

4301 -

if (wbi == -1) cam_mul[0] = -1;

4302 4337

}

4303 4338 4304 4339

void CLASS parse_tiff (int base)

@@ -4393,14 +4428,17 @@ void CLASS parse_tiff (int base)

4393 4428

}

4394 4429

}

4395 4430 4396 -

void CLASS parse_minolta()

4431 +

void CLASS parse_minolta (int base)

4397 4432

{

4398 4433

int save, tag, len, offset, high=0, wide=0, i, c;

4399 4434 4400 -

fseek (ifp, 4, SEEK_SET);

4401 -

offset = get4() + 8;

4435 +

fseek (ifp, base, SEEK_SET);

4436 +

if (fgetc(ifp) || fgetc(ifp)-'M' || fgetc(ifp)-'R') return;

4437 +

order = fgetc(ifp) * 0x101;

4438 +

offset = base + get4() + 8;

4402 4439

while ((save=ftell(ifp)) < offset) {

4403 -

tag = get4();

4440 +

for (tag=i=0; i < 4; i++)

4441 +

tag = tag << 8 | fgetc(ifp);

4404 4442

len = get4();

4405 4443

switch (tag) {

4406 4444

case 0x505244: /* PRD */

@@ -4415,12 +4453,12 @@ void CLASS parse_minolta()

4415 4453

break;

4416 4454

case 0x545457: /* TTW */

4417 4455

parse_tiff (ftell(ifp));

4456 +

data_offset = offset;

4418 4457

}

4419 4458

fseek (ifp, save+len+8, SEEK_SET);

4420 4459

}

4421 4460

raw_height = high;

4422 4461

raw_width = wide;

4423 -

data_offset = offset;

4424 4462

}

4425 4463 4426 4464

/*

@@ -4922,6 +4960,8 @@ void CLASS adobe_coeff (char *make, char *model)

4922 4960

{ 14155,-5065,-1382,-6550,14633,2039,-1623,1824,6561 } },

4923 4961

{ "Canon EOS 20D", 0,

4924 4962

{ 6599,-537,-891,-8071,15783,2424,-1983,2234,7462 } },

4963 +

{ "Canon EOS 30D", 0,

4964 +

{ 6257,-303,-1000,-7880,15621,2396,-1714,1904,7046 } },

4925 4965

{ "Canon EOS 350D", 0,

4926 4966

{ 6018,-617,-965,-8645,15881,2975,-1530,1719,7642 } },

4927 4967

{ "Canon EOS-1Ds Mark II", 0,

@@ -5002,7 +5042,7 @@ void CLASS adobe_coeff (char *make, char *model)

5002 5042

{ 10491,-3423,-1145,-7385,15027,2538,-1809,2275,8692 } },

5003 5043

{ "Imacon Ixpress", 0, /* DJC */

5004 5044

{ 7025,-1415,-704,-5188,13765,1424,-1248,2742,6038 } },

5005 -

{ "KODAK NC2000F", 0, /* DJC */

5045 +

{ "KODAK NC2000", 0, /* DJC */

5006 5046

{ 16475,-6903,-1218,-851,10375,477,2505,-7,1020 } },

5007 5047

{ "Kodak DCS315C", 8,

5008 5048

{ 17523,-4827,-2510,756,8546,-137,6113,1649,2250 } },

@@ -5050,6 +5090,10 @@ void CLASS adobe_coeff (char *make, char *model)

5050 5090

{ 10704,-4187,-1230,-8314,15952,2501,-920,945,8927 } },

5051 5091

{ "Leaf Valeo 6", 0,

5052 5092

{ 3952,2189,449,-6701,14585,2275,-4536,7349,6536 } },

5093 +

{ "Leaf Aptus 65", 0,

5094 +

{ 7914,1414,-1190,-8777,16582,2280,-2811,4605,5562 } },

5095 +

{ "Leaf Aptus 75", 0,

5096 +

{ 7914,1414,-1190,-8777,16582,2280,-2811,4605,5562 } },

5053 5097

{ "Leaf", 0,

5054 5098

{ 8236,1746,-1314,-8251,15953,2428,-3673,5786,5771 } },

5055 5099

{ "Micron 2010", 110, /* DJC */

@@ -5130,12 +5174,18 @@ void CLASS adobe_coeff (char *make, char *model)

5130 5174

{ 13173,-4732,-1499,-5807,14036,1895,-2045,2452,7142 } },

5131 5175

{ "OLYMPUS E-300", 0,

5132 5176

{ 7828,-1761,-348,-5788,14071,1830,-2853,4518,6557 } },

5177 +

{ "OLYMPUS E-330", 0,

5178 +

{ 8961,-2473,-1084,-7979,15990,2067,-2319,3035,8249 } },

5133 5179

{ "OLYMPUS E-500", 0,

5134 5180

{ 8136,-1968,-299,-5481,13742,1871,-2556,4205,6630 } },

5135 5181

{ "OLYMPUS SP350", 0,

5136 5182

{ 12078,-4836,-1069,-6671,14306,2578,-786,939,7418 } },

5183 +

{ "OLYMPUS SP3", 0,

5184 +

{ 11766,-4445,-1067,-6901,14421,2707,-1029,1217,7572 } },

5137 5185

{ "OLYMPUS SP500UZ", 0,

5138 5186

{ 9493,-3415,-666,-5211,12334,3260,-1548,2262,6482 } },

5187 +

{ "PENTAX *ist DL2", 0,

5188 +

{ 10504,-2438,-1189,-8603,16207,2531,-1022,863,12242 } },

5139 5189

{ "PENTAX *ist DL", 0,

5140 5190

{ 10829,-2838,-1115,-8339,15817,2696,-837,680,11939 } },

5141 5191

{ "PENTAX *ist DS2", 0,

@@ -5158,6 +5208,8 @@ void CLASS adobe_coeff (char *make, char *model)

5158 5208

{ 8512,-2641,-694,-8042,15670,2526,-1821,2117,7414 } },

5159 5209

{ "SONY DSC-V3", 0,

5160 5210

{ 7511,-2571,-692,-7894,15088,3060,-948,1111,8128 } },

5211 +

{ "SONY DSLR-A100", 0,

5212 +

{ 8367,-2248,-763,-8758,16447,2422,-1527,1550,8053 } },

5161 5213

};

5162 5214

double cam_xyz[4][3];

5163 5215

char name[130];

@@ -5268,7 +5320,8 @@ void CLASS identify()

5268 5320

{ 3178560, "PENTAX", "Optio S" ,1 },

5269 5321

{ 4841984, "PENTAX", "Optio S" ,1 },

5270 5322

{ 6114240, "PENTAX", "Optio S4" ,1 }, /* or S4i */

5271 -

{ 12582980, "Sinar", "" ,0 } };

5323 +

{ 12582980, "Sinar", "" ,0 },

5324 +

{ 33292868, "Sinar", "" ,0 } };

5272 5325

static const char *corp[] =

5273 5326

{ "Canon", "NIKON", "EPSON", "KODAK", "Kodak", "OLYMPUS", "PENTAX",

5274 5327

"MINOLTA", "Minolta", "Konica", "CASIO", "Sinar", "Phase One" };

@@ -5316,7 +5369,8 @@ void CLASS identify()

5316 5369

} else if (!memcmp (head,"\xff\xd8\xff\xe1",4) &&

5317 5370

!memcmp (head+6,"Exif",4)) {

5318 5371

fseek (ifp, 4, SEEK_SET);

5319 -

fseek (ifp, 4 + get2(), SEEK_SET);

5372 +

data_offset = 4 + get2();

5373 +

fseek (ifp, data_offset, SEEK_SET);

5320 5374

if (fgetc(ifp) != 0xff)

5321 5375

parse_tiff(12);

5322 5376

thumb_offset = 0;

@@ -5374,7 +5428,7 @@ void CLASS identify()

5374 5428

} else if (!memcmp (head,"DSC-Image",9))

5375 5429

parse_rollei();

5376 5430

else if (!memcmp (head,"\0MRM",4))

5377 -

parse_minolta();

5431 +

parse_minolta(0);

5378 5432

else if (!memcmp (head,"FOVb",4))

5379 5433

parse_foveon();

5380 5434

else

@@ -5402,6 +5456,8 @@ void CLASS identify()

5402 5456

i = strlen(make); /* Remove make from model */

5403 5457

if (!strncmp (model, make, i) && model[i++] == ' ')

5404 5458

memmove (model, model+i, 64-i);

5459 +

if (!strncmp (model,"Digital Camera ",15))

5460 +

strcpy (model, model+15);

5405 5461

make[63] = model[63] = model2[63] = 0;

5406 5462

if (!is_raw) return;

5407 5463

@@ -5682,18 +5738,12 @@ void CLASS identify()

5682 5738

data_offset = 513;

5683 5739

filters = 0x61616161;

5684 5740

load_raw = minolta_rd175_load_raw;

5685 -

} else if (!strcmp(model,"Digital Camera KD-400Z")) {

5741 +

} else if (!strcmp(model,"KD-400Z")) {

5686 5742

height = 1712;

5687 5743

width = 2312;

5688 5744

raw_width = 2336;

5689 -

data_offset = 4034;

5690 -

fseek (ifp, 2032, SEEK_SET);

5691 5745

goto konica_400z;

5692 -

} else if (!strcmp(model,"Digital Camera KD-510Z")) {

5693 -

data_offset = 4032;

5694 -

pre_mul[0] = 1.297;

5695 -

pre_mul[2] = 1.438;

5696 -

fseek (ifp, 2032, SEEK_SET);

5746 +

} else if (!strcmp(model,"KD-510Z")) {

5697 5747

goto konica_510z;

5698 5748

} else if (!strcasecmp(make,"MINOLTA")) {

5699 5749

load_raw = unpacked_load_raw;

@@ -5706,40 +5756,29 @@ void CLASS identify()

5706 5756

} else if (!strncmp(model,"ALPHA",5) ||

5707 5757

!strncmp(model,"DYNAX",5) ||

5708 5758

!strncmp(model,"MAXXUM",6)) {

5709 -

sprintf (model, "DYNAX %s", model+6 + (model[0]=='M'));

5759 +

sprintf (model+20, "DYNAX %-10s", model+6+(model[0]=='M'));

5760 +

adobe_coeff (make, model+20);

5710 5761

load_raw = packed_12_load_raw;

5711 5762

maximum = 0xffb;

5712 5763

} else if (!strncmp(model,"DiMAGE G",8)) {

5713 5764

if (model[8] == '4') {

5714 -

data_offset = 5056;

5715 -

pre_mul[0] = 1.602;

5716 -

pre_mul[2] = 1.441;

5717 -

fseek (ifp, 2078, SEEK_SET);

5718 5765

height = 1716;

5719 5766

width = 2304;

5720 5767

} else if (model[8] == '5') {

5721 -

data_offset = 4016;

5722 -

fseek (ifp, 1936, SEEK_SET);

5723 5768

konica_510z:

5724 5769

height = 1956;

5725 5770

width = 2607;

5726 5771

raw_width = 2624;

5727 5772

} else if (model[8] == '6') {

5728 -

data_offset = 4032;

5729 -

fseek (ifp, 2030, SEEK_SET);

5730 5773

height = 2136;

5731 5774

width = 2848;

5732 5775

}

5776 +

data_offset += 14;

5733 5777

filters = 0x61616161;

5734 5778

konica_400z:

5735 5779

load_raw = unpacked_load_raw;

5736 5780

maximum = 0x3df;

5737 5781

order = 0x4d4d;

5738 -

FORC4 cam_mul[(c >> 1) | ((c & 1) << 1)] = get2();

5739 -

}

5740 -

if (pre_mul[0] == 1 && pre_mul[2] == 1) {

5741 -

pre_mul[0] = 1.42;

5742 -

pre_mul[2] = 1.25;

5743 5782

}

5744 5783

} else if (!strcmp(model,"*ist DS")) {

5745 5784

height -= 2;

@@ -5944,11 +5983,15 @@ void CLASS identify()

5944 5983

adobe_coeff ("SONY","DSC-R1");

5945 5984

width = 3925;

5946 5985

order = 0x4d4d;

5986 +

} else if (!strcmp(model,"DSLR-A100")) {

5987 +

height--;

5988 +

load_raw = sony_arw_load_raw;

5989 +

maximum = 0xfeb;

5947 5990

} else if (!strncmp(model,"P850",4)) {

5948 5991

maximum = 0xf7c;

5949 5992

} else if (!strcasecmp(make,"KODAK")) {

5950 5993

if (filters == UINT_MAX) filters = 0x61616161;

5951 -

if (!strcmp(model,"NC2000F")) {

5994 +

if (!strncmp(model,"NC2000",6)) {

5952 5995

width -= 4;

5953 5996

left_margin = 2;

5954 5997

} else if (!strcmp(model,"EOSDCS3B")) {

@@ -5997,7 +6040,7 @@ void CLASS identify()

5997 6040

pre_mul[2] = 1.209;

5998 6041

pre_mul[3] = 1.036;

5999 6042

load_raw = kodak_easy_load_raw;

6000 -

} else if (!strcmp(model,"Digital Camera 40")) {

6043 +

} else if (!strcmp(model,"40")) {

6001 6044

strcpy (model, "DC40");

6002 6045

height = 512;

6003 6046

width = 768;

@@ -6447,7 +6490,7 @@ int CLASS main (int argc, char **argv)

6447 6490

if (argc == 1)

6448 6491

{

6449 6492

fprintf (stderr,

6450 -

"\nRaw Photo Decoder \"dcraw\" v8.21"

6493 +

"\nRaw Photo Decoder \"dcraw\" v8.22"

6451 6494

"\nby Dave Coffin, dcoffin a cybercom o net"

6452 6495

"\n\nUsage: %s [options] file1 file2 ...\n"

6453 6496

"\nValid options:"


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4