Hello community,
here is the log from the commit of package dcraw
checked in at Mon Oct 16 23:46:13 CEST 2006.
--------
--- dcraw/dcraw.changes 2006-08-17 17:37:12.000000000 +0200
+++ /mounts/work_src_done/STABLE/dcraw/dcraw.changes 2006-10-16 22:52:04.000000000 +0200
@@ -1,0 +2,10 @@
+Mon Oct 16 22:47:15 CEST 2006 - postadal@suse.cz
+
+- updated to RCS 1.353
+ * added support for Pentax K100D, Nikon D200, D80, E3200,
+ Canon EOS 400D, Panasonic DMC-LX2, DMC-FZ50
+ * correctly display long exposure times for CRW files
+ * added color matrices from Adobe DNG Converter 3.5
+ * display the focal length of Canon CRW images
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ dcraw.spec ++++++
--- /var/tmp/diff_new_pack.yGB1Ny/_old 2006-10-16 23:45:32.000000000 +0200
+++ /var/tmp/diff_new_pack.yGB1Ny/_new 2006-10-16 23:45:32.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package dcraw (Version 1.340)
+# spec file for package dcraw (Version 1.353)
#
# Copyright (c) 2006 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
@@ -12,7 +12,7 @@
Name: dcraw
BuildRequires: libjpeg-devel liblcms-devel
-Version: 1.340
+Version: 1.353
Release: 1
License: distributable, Other License(s), see package
Group: Productivity/Graphics/Convertors
@@ -77,6 +77,13 @@
%doc %_mandir/man*/*
%changelog -n dcraw
+* Mon Oct 16 2006 - postadal@suse.cz
+- updated to RCS 1.353
+ * added support for Pentax K100D, Nikon D200, D80, E3200,
+ Canon EOS 400D, Panasonic DMC-LX2, DMC-FZ50
+ * correctly display long exposure times for CRW files
+ * added color matrices from Adobe DNG Converter 3.5
+ * display the focal length of Canon CRW images
* Thu Aug 17 2006 - postadal@suse.cz
- updated to RCS 1.340
* improved support for the Olympus E-330
++++++ README ++++++
++++ 1004 lines (skipped)
++++ between README
++++ and /mounts/work_src_done/STABLE/dcraw/README
++++++ dcraw.c ++++++
--- dcraw/dcraw.c 2006-08-08 17:10:01.000000000 +0200
+++ /mounts/work_src_done/STABLE/dcraw/dcraw.c 2006-10-10 06:46:22.000000000 +0200
@@ -19,11 +19,11 @@
copy them from an earlier, non-GPL Revision of dcraw.c, or (c)
purchase a license from the author.
- $Revision: 1.340 $
- $Date: 2006/08/08 15:06:13 $
+ $Revision: 1.353 $
+ $Date: 2006/10/10 04:46:02 $
*/
-#define VERSION "8.29"
+#define VERSION "8.40"
#define _GNU_SOURCE
#define _USE_MATH_DEFINES
@@ -1070,12 +1070,7 @@
return 1;
}
-/*
- Returns 0 for a Pentax Optio 33WR,
- 1 for a Nikon E3700,
- 2 for an Olympus C740UZ.
- */
-int CLASS nikon_3700()
+void CLASS nikon_3700()
{
int i, sum[] = { 0, 0 };
uchar tail[952];
@@ -1084,8 +1079,20 @@
fread (tail, 1, sizeof tail, ifp);
for (i=0; i < sizeof tail; i++)
sum[(i>>2) & 1] += tail[i];
- if (sum[1] > 4*sum[0]) return 2;
- return sum[0] > 4*sum[1];
+ if (sum[0] > 4*sum[1]) return;
+ if (sum[1] > 4*sum[0]) {
+ strcpy (make, "OLYMPUS");
+ strcpy (model, "C740UZ");
+ return;
+ }
+ sum[0] = sum[1] = 0;
+ for (i=0; i < sizeof tail; i++)
+ sum[i & 1] += tail[i];
+ if (sum[1] > 4*sum[0] || sum[0]+sum[1] > 216000) {
+ strcpy (make, "PENTAX");
+ strcpy (model,"Optio 33WR");
+ } else
+ strcpy (model, "E3200");
}
/*
@@ -3310,7 +3317,7 @@
"Interpolation using a Threshold-based variable number of gradients"
- described in http://www-ise.stanford.edu/~tingchen/algodep/vargra.html
+ described in http://scien.stanford.edu/class/psych221/projects/99/tingchen/algodep/vargra...
I've extended the basic idea to work with non-Bayer filter arrays.
Gradients are numbered clockwise from NW=0 to W=7.
@@ -3731,15 +3738,15 @@
fseek (ifp, get4()+base, SEEK_SET);
}
-void CLASS parse_olympus_note (int base)
+void CLASS parse_thumb_note (int base, unsigned toff, unsigned tlen)
{
unsigned entries, tag, type, len, save;
entries = get2();
while (entries--) {
tiff_get (base, &tag, &type, &len, &save);
- if (tag == 257) thumb_offset = get4();
- if (tag == 258) thumb_length = get4();
+ if (tag == toff) thumb_offset = get4();
+ if (tag == tlen) thumb_length = get4();
fseek (ifp, save, SEEK_SET);
}
}
@@ -3956,10 +3963,14 @@
cam_mul[2] = get2() / 256.0;
}
if (tag == 0x2020)
- parse_olympus_note (base);
+ parse_thumb_note (base, 257, 258);
+ if (tag == 0xb028) {
+ fseek (ifp, get4(), SEEK_SET);
+ parse_thumb_note (base, 136, 137);
+ }
if (tag == 0x4001) {
i = len == 582 ? 50 : len == 653 ? 68 : len == 796 ? 126 : 0;
- fseek (ifp, i ,SEEK_CUR);
+ fseek (ifp, i, SEEK_CUR);
get2_rggb:
FORC4 cam_mul[c ^ (c >> 1)] = get2();
}
@@ -4145,7 +4156,7 @@
int ifd, use_cm=0, cfa, i, j, c, ima_len=0;
char software[64], *cbuf, *cp;
uchar cfa_pat[16], cfa_pc[] = { 0,1,2,3 }, tab[256];
- double dblack, cc[4][4], cm[4][3], cam_xyz[4][3], num;
+ double dblack, cc[4][4], cm[4][3], cam_xyz[4][3], num, sx, sy;
double ab[]={ 1,1,1,1 }, asn[] = { 0,0,0,0 }, xyz[] = { 1,1,1 };
unsigned *buf, sony_offset=0, sony_length=0, sony_key=0;
struct jhead jh;
@@ -4166,6 +4177,9 @@
if (type == 3 && len == 1)
cam_mul[(tag-17)*2] = get2() / 256.0;
break;
+ case 23:
+ if (type == 3) iso_speed = get2();
+ break;
case 36: case 37: case 38:
cam_mul[tag-0x24] = get2();
break;
@@ -4392,11 +4406,10 @@
maximum = getint(type);
break;
case 50718: /* DefaultScale */
- i = get4();
- j = get4() * get4();
- i *= get4();
- if (i > j) xmag = i / j;
- else ymag = j / i;
+ sx = getrat();
+ sy = getrat();
+ if (sx > sy) xmag = sx / sy;
+ else ymag = sy / sx;
break;
case 50721: /* ColorMatrix1 */
case 50722: /* ColorMatrix2 */
@@ -4682,7 +4695,7 @@
*/
void CLASS parse_ciff (int offset, int length)
{
- int tboff, nrecs, i, c, type, len, save, wbi=-1;
+ int tboff, nrecs, c, type, len, save, wbi=-1;
ushort key[] = { 0x410, 0x45f3 };
fseek (ifp, offset+length-4, SEEK_SET);
@@ -4690,7 +4703,7 @@
fseek (ifp, tboff, SEEK_SET);
nrecs = get2();
if (nrecs > 100) return;
- for (i=0; i < nrecs; i++) {
+ while (nrecs--) {
type = get2();
len = get4();
save = ftell(ifp) + 4;
@@ -4719,10 +4732,12 @@
}
if (type == 0x102a) {
iso_speed = pow (2, (get4(),get2())/32.0 - 4) * 50;
- aperture = pow (2, (get2(),get2())/64.0);
+ aperture = pow (2, (get2(),(short)get2())/64.0);
shutter = pow (2,-((short)get2())/32.0);
wbi = (get2(),get2());
if (wbi > 17) wbi = 0;
+ fseek (ifp, 32, SEEK_CUR);
+ if (shutter > 1e6) shutter = get2()/10.0;
}
if (type == 0x102c) {
if (get2() > 512) { /* Pro90, G1 */
@@ -4762,6 +4777,10 @@
raw_width = (get2(),get2());
raw_height = get2();
}
+ if (type == 0x5029) {
+ focal_len = len >> 16;
+ if ((len & 0xffff) == 2) focal_len /= 32;
+ }
if (type == 0x5813) flash_used = int_to_float(len);
if (type == 0x5814) canon_ev = int_to_float(len);
if (type == 0x5817) shot_order = len;
@@ -5224,14 +5243,12 @@
{ 16414,-6060,-1470,-3555,13037,473,2545,122,4948 } },
{ "Kodak ProBack", 0,
{ 21179,-8316,-2918,-915,11019,-165,3477,-180,4210 } },
+ { "KODAK P712", 0,
+ { 9658,-3314,-823,-5163,12695,2768,-1342,1843,6044 } },
{ "KODAK P850", 0,
{ 10511,-3836,-1102,-6946,14587,2558,-1481,1792,6246 } },
{ "KODAK P880", 0,
{ 12805,-4662,-1376,-7480,15267,2360,-1626,2194,7904 } },
- { "LEICA DIGILUX 2", 0,
- { 11340,-4069,-1275,-7555,15266,2448,-2960,3426,7685 } },
- { "LEICA D-LUX2", 0,
- { 10704,-4187,-1230,-8314,15952,2501,-920,945,8927 } },
{ "Leaf CMost", 0,
{ 3952,2189,449,-6701,14585,2275,-4536,7349,6536 } },
{ "Leaf Valeo 6", 0,
@@ -5242,7 +5259,7 @@
{ 7914,1414,-1190,-8777,16582,2280,-2811,4605,5562 } },
{ "Leaf", 0,
{ 8236,1746,-1314,-8251,15953,2428,-3673,5786,5771 } },
- { "Micron 2010", 110,
+ { "Micron 2010", 110, /* DJC */
{ 16695,-3761,-2151,155,9682,163,3433,951,4904 } },
{ "Minolta DiMAGE 5", 0,
{ 8983,-2942,-963,-6556,14476,2237,-2426,2887,8014 } },
@@ -5278,6 +5295,8 @@
{ 7732,-2422,-789,-8238,15884,2498,-859,783,7330 } },
{ "NIKON D70", 0,
{ 7732,-2422,-789,-8238,15884,2498,-859,783,7330 } },
+ { "NIKON D80", 0, /* copied from above */
+ { 7732,-2422,-789,-8238,15884,2498,-859,783,7330 } },
{ "NIKON D200", 0,
{ 8367,-2248,-763,-8758,16447,2422,-1527,1550,8053 } },
{ "NIKON E950", 0, /* DJC */
@@ -5340,12 +5359,18 @@
{ 10371,-2333,-1206,-8688,16231,2602,-1230,1116,11282 } },
{ "PENTAX *ist D", 0,
{ 9651,-2059,-1189,-8881,16512,2487,-1460,1345,10687 } },
+ { "PENTAX K100D", 0,
+ { 10504,-2438,-1189,-8603,16207,2531,-1022,863,12242 } },
{ "Panasonic DMC-FZ30", 0,
{ 10976,-4029,-1141,-7918,15491,2600,-1670,2071,8246 } },
+ { "Panasonic DMC-FZ50", 0,
+ { 7906,-2709,-594,-6231,13351,3220,-1922,2631,6537 } },
{ "Panasonic DMC-LC1", 0,
{ 11340,-4069,-1275,-7555,15266,2448,-2960,3426,7685 } },
{ "Panasonic DMC-LX1", 0,
{ 10704,-4187,-1230,-8314,15952,2501,-920,945,8927 } },
+ { "Panasonic DMC-LX2", 0,
+ { 7970,-2904,-583,-6252,13395,3191,-1641,2282,6864 } },
{ "SAMSUNG GX-1S", 0,
{ 10504,-2438,-1189,-8603,16207,2531,-1022,863,12242 } },
{ "Sinar", 0, /* DJC */
@@ -5357,7 +5382,7 @@
{ "SONY DSC-V3", 0,
{ 7511,-2571,-692,-7894,15088,3060,-948,1111,8128 } },
{ "SONY DSLR-A100", 0,
- { 8367,-2248,-763,-8758,16447,2422,-1527,1550,8053 } }
+ { 9437,-2811,-774,-8405,16215,2290,-710,596,7181 } }
};
double cam_xyz[4][3];
char name[130];
@@ -5715,6 +5740,8 @@
width = 3088;
top_margin = 12;
left_margin = 64;
+ if (unique_id == 0x80000170)
+ adobe_coeff ("Canon","EOS 300D");
maximum = 0xfa0;
} else if (is_canon && raw_width == 3160) {
height = 2328;
@@ -5739,17 +5766,25 @@
top_margin = 12;
left_margin = 74;
goto canon_cr2;
+ } else if (is_canon && raw_width == 3948) {
+ top_margin = 18;
+ left_margin = 42;
+ height -= 2;
+ if (unique_id == 0x80000236)
+ adobe_coeff ("Canon","EOS 400D");
+ goto canon_cr2;
} else if (is_canon && raw_width == 4476) {
top_margin = 34;
left_margin = 90;
+ maximum = 0xe6c;
goto canon_cr2;
} else if (is_canon && raw_width == 5108) {
top_margin = 13;
left_margin = 98;
maximum = 0xe80;
canon_cr2:
- height = raw_height - top_margin;
- width = raw_width - left_margin;
+ height -= top_margin;
+ width -= left_margin;
} else if (!strcmp(model,"D1")) {
cam_mul[0] *= 256/527.0;
cam_mul[2] *= 256/317.0;
@@ -5759,10 +5794,18 @@
} else if (!strncmp(model,"D50",3) || !strncmp(model,"D70",3)) {
width--;
maximum = 0xf53;
+ } else if (!strcmp(model,"D80")) {
+ height -= 3;
+ width -= 4;
} else if (!strcmp(model,"D100")) {
if (tiff_compress == 34713 && load_raw == &CLASS nikon_load_raw)
raw_width = (width += 3) + 3;
maximum = 0xf44;
+ } else if (!strcmp(model,"D200")) {
+ left_margin = 1;
+ width -= 4;
+ maximum = 0xfbc;
+ filters = 0x94949494;
} else if (!strncmp(model,"D2H",3)) {
left_margin = 6;
width -= 14;
@@ -5824,12 +5867,10 @@
load_raw = &CLASS nikon_e2100_load_raw;
pre_mul[0] = 1.818;
pre_mul[2] = 1.618;
- if ((i = nikon_3700()) == 2) {
- strcpy (make, "OLYMPUS");
- strcpy (model, "C740UZ");
- } else if (i == 0) {
- strcpy (make, "PENTAX");
- strcpy (model,"Optio 33WR");
+ if (!timestamp) nikon_3700();
+ if (model[0] == 'E' && atoi(model+1) < 3700)
+ filters = 0x49494949;
+ if (!strcmp(model,"Optio 33WR")) {
flip = 1;
filters = 0x16161616;
pre_mul[0] = 1.331;
@@ -6093,14 +6134,44 @@
filters = 0x16161616;
}
} else if (!strcmp(make,"LEICA") || !strcmp(make,"Panasonic")) {
- if (width == 3880) {
- left_margin = 6;
- maximum = 0xf7f0;
- width -= 22;
- } else if (width == 3304) {
+ maximum = 0xfff0;
+ if (width == 2568)
+ adobe_coeff ("Panasonic","DMC-LC1");
+ else if (width == 3304) {
maximum = 0xf94c;
width -= 16;
- } else maximum = 0xfff0;
+ adobe_coeff ("Panasonic","DMC-FZ30");
+ } else if (width == 3690) {
+ maximum = 0xf7f0;
+ height -= 3;
+ width = 3672;
+ left_margin = 3;
+ filters = 0x49494949;
+ adobe_coeff ("Panasonic","DMC-FZ50");
+ } else if (width == 3770) {
+ height = 2760;
+ width = 3672;
+ top_margin = 15;
+ left_margin = 17;
+ adobe_coeff ("Panasonic","DMC-FZ50");
+ } else if (width == 3880) {
+ maximum = 0xf7f0;
+ width -= 22;
+ left_margin = 6;
+ adobe_coeff ("Panasonic","DMC-LX1");
+ } else if (width == 4290) {
+ height--;
+ width = 4248;
+ left_margin = 3;
+ filters = 0x49494949;
+ adobe_coeff ("Panasonic","DMC-LX2");
+ } else if (width == 4330) {
+ height = 2400;
+ width = 4248;
+ top_margin = 15;
+ left_margin = 17;
+ adobe_coeff ("Panasonic","DMC-LX2");
+ }
load_raw = &CLASS unpacked_load_raw;
} else if (!strcmp(model,"E-1")) {
filters = 0x61616161;
@@ -6913,7 +6984,7 @@
shutter = (printf ("1/"), 1 / shutter);
printf ("%0.1f sec\n", shutter);
printf ("Aperture: f/%0.1f\n", aperture);
- printf ("Focal Length: %d mm\n", (int) focal_len);
+ printf ("Focal Length: %0.1f mm\n", focal_len);
printf ("Secondary pixels: %s\n", fuji_secondary ? "yes":"no");
printf ("Embedded ICC profile: %s\n", profile_length ? "yes":"no");
printf ("Decodable with dcraw: %s\n", is_raw ? "yes":"no");
++++++ parse.c ++++++
--- dcraw/parse.c 2006-07-19 08:20:09.000000000 +0200
+++ /mounts/work_src_done/STABLE/dcraw/parse.c 2006-08-18 04:57:14.000000000 +0200
@@ -5,8 +5,8 @@
This program displays raw metadata for all raw photo formats.
It is free for all uses.
- $Revision: 1.61 $
- $Date: 2006/07/19 06:14:53 $
+ $Revision: 1.62 $
+ $Date: 2006/08/18 02:51:53 $
*/
#include
participants (1)
-
root@suse.de