Hello community,
here is the log from the commit of package libraw for openSUSE:Factory
checked in at Sat Nov 20 12:23:59 CET 2010.
--------
--- GNOME/libraw/libraw.changes 2010-11-10 14:41:57.000000000 +0100
+++ /mounts/work_src_done/STABLE/libraw/libraw.changes 2010-11-16 22:19:02.000000000 +0100
@@ -1,0 +2,20 @@
+Tue Nov 16 21:18:09 UTC 2010 - mrdocs(a)opensuse.org
+
+- add the right configure flags
+
+-------------------------------------------------------------------
+Tue Nov 16 20:35:55 UTC 2010 - mrdocs(a)opensuse.org
+
+-Update to version 0.11.2:
+ +Imported dcraw 9.05 (1.439)
+ + Support for many cameras added:
+ Canon: G12, SX120, 60D
+ Hasselblad H4D, Nokia X2, Olympus E-5
+ Nikon: D3100, D7000, P7000
+ Panasonic: FZ40, FZ100, LX5
+ Pentax: K-r, K-5, 645D
+ Samsung GX20, WB2000
+- added LCMS support so libRaw is color management capable
+- added openMP threading support for multi-core machines
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
LibRaw-0.11.1.tar.bz2
New:
----
LibRaw-0.11.2.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libraw.spec ++++++
--- /var/tmp/diff_new_pack.IPIdEZ/_old 2010-11-20 12:23:42.000000000 +0100
+++ /var/tmp/diff_new_pack.IPIdEZ/_new 2010-11-20 12:23:42.000000000 +0100
@@ -1,5 +1,5 @@
#
-# spec file for package libraw (Version 0.11.1)
+# spec file for package libraw (Version 0.11.2)
#
# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -19,7 +19,7 @@
%define fake_name LibRaw
Name: libraw
-Version: 0.11.1
+Version: 0.11.2
Release: 1
License: CDDLv1.0 | LGPLv2.1
Summary: Library for reading RAW files obtained from digital photo cameras
@@ -30,6 +30,8 @@
Patch2: %{name}-0.9.1-configure-default-cflags.patch
BuildRequires: gcc-c++
BuildRequires: make
+BuildRequires: liblcms-devel
+BuildRequires: openmpi-devel
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
@@ -85,7 +87,7 @@
%build
# This is not the autotools generated configure script
-CFLAGS="%{optflags}" sh configure -P %{_prefix}
+CFLAGS="%{optflags}" sh configure -P %{_prefix} -o -l -I %{_includedir} -L %{libdir}
%__make %{?_smp_mflags}
%install
++++++ LibRaw-0.11.1.tar.bz2 -> LibRaw-0.11.2.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LibRaw-0.11.1/Changelog.rus new/LibRaw-0.11.2/Changelog.rus
--- old/LibRaw-0.11.1/Changelog.rus 2010-11-10 09:20:40.000000000 +0100
+++ new/LibRaw-0.11.2/Changelog.rus 2010-11-11 18:42:44.000000000 +0100
@@ -1,4 +1,15 @@
-2010-11-10 Alex Tutubalin <lexa(a)lexa.ru>
+2010-11-11 Alex Tutubalin <lexa(a)lexa.ru>
+ * OpenMP выключен на MacOS X если библиотека собирается с -pthread
+ * Импортирована dcraw 9.05 (1.439), поддержка новых камер:
+ Canon: G12, SX120, 60D,
+ Hasselblad H4D, Nokia X2, Olympus E-5,
+ Nikon: D3100, D7000, P7000,
+ Panasonic: FZ40, FZ100, LX5,
+ Pentax: K-r, K-5, 645D,
+ Samsung GX20, WB2000
+ * LibRaw 0.11.2
+
+2010-11-10 Alex Tutubalin <lexa(a)lexa.ru>
* Исправление в обработке параметров командной строки в примере
dcraw_emu
* LibRaw 0.11.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LibRaw-0.11.1/Changelog.txt new/LibRaw-0.11.2/Changelog.txt
--- old/LibRaw-0.11.1/Changelog.txt 2010-11-10 09:20:40.000000000 +0100
+++ new/LibRaw-0.11.2/Changelog.txt 2010-11-11 18:42:44.000000000 +0100
@@ -1,3 +1,15 @@
+2010-11-11 Alex Tutubalin <lexa(a)lexa.ru>
+ * OpenMP is completely disabled on MacOS X if compiled with -pthread
+ due to well-known MacOS problem.
+ * dcraw 9.05 (1.439) imported, many new cameras supported:
+ Canon: G12, SX120, 60D,
+ Hasselblad H4D, Nokia X2, Olympus E-5,
+ Nikon: D3100, D7000, P7000,
+ Panasonic: FZ40, FZ100, LX5,
+ Pentax: K-r, K-5, 645D,
+ Samsung GX20, WB2000
+ * LibRaw 0.11.2
+
2010-11-10 Alex Tutubalin <lexa(a)lexa.ru>
* Fixes in dcraw_emu sample command line options processing
* LibRaw 0.11.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LibRaw-0.11.1/dcraw/dcraw.c new/LibRaw-0.11.2/dcraw/dcraw.c
--- old/LibRaw-0.11.1/dcraw/dcraw.c 2010-07-28 23:18:20.000000000 +0200
+++ new/LibRaw-0.11.2/dcraw/dcraw.c 2010-11-11 13:43:11.000000000 +0100
@@ -19,11 +19,11 @@
*If you have not modified dcraw.c in any way, a link to my
homepage qualifies as "full source code".
- $Revision: 1.438 $
- $Date: 2010/07/28 21:18:20 $
+ $Revision: 1.439 $
+ $Date: 2010/11/11 12:43:11 $
*/
-#define VERSION "9.04"
+#define VERSION "9.05"
#ifndef _GNU_SOURCE
#define _GNU_SOURCE
@@ -1073,14 +1073,16 @@
void CLASS pentax_load_raw()
{
- ushort bit[2][13], huff[4097];
- int row, col, diff, c, i;
+ ushort bit[2][15], huff[4097];
+ int dep, row, col, diff, c, i;
ushort vpred[2][2] = {{0,0},{0,0}}, hpred[2];
fseek (ifp, meta_offset, SEEK_SET);
- FORC(13) bit[0][c] = get2();
- FORC(13) bit[1][c] = fgetc(ifp);
- FORC(13)
+ dep = (get2() + 12) & 15;
+ fseek (ifp, 12, SEEK_CUR);
+ FORC(dep) bit[0][c] = get2();
+ FORC(dep) bit[1][c] = fgetc(ifp);
+ FORC(dep)
for (i=bit[0][c]; i <= ((bit[0][c]+(4096 >> bit[1][c])-1) & 4095); )
huff[++i] = bit[1][c] << 8 | c;
huff[0] = 12;
@@ -1091,9 +1093,10 @@
diff = ljpeg_diff (huff);
if (col < 2) hpred[col] = vpred[row & 1][col] += diff;
else hpred[col & 1] += diff;
- if ((unsigned) (row-top_margin) < height && col < width)
- BAYER(row-top_margin,col) = hpred[col & 1];
- if (hpred[col & 1] >> 12) derror();
+ if ((unsigned) (row-top_margin) < height &&
+ (unsigned) (col-left_margin) < width)
+ BAYER(row-top_margin,col-left_margin) = hpred[col & 1];
+ if (hpred[col & 1] >> tiff_bps) derror();
}
}
@@ -1801,14 +1804,16 @@
{
uchar *data, *dp;
ushort *pixel, *pix;
- int dwide, row, c;
+ int rev, dwide, row, c;
+ rev = 3 * (order == 0x4949);
dwide = raw_width * 5 / 4;
data = (uchar *) malloc (dwide + raw_width*2);
merror (data, "nokia_load_raw()");
pixel = (ushort *) (data + dwide);
for (row=0; row < raw_height; row++) {
- if (fread (data, 1, dwide, ifp) < dwide) derror();
+ if (fread (data+dwide, 1, dwide, ifp) < dwide) derror();
+ FORC(dwide) data[c] = data[dwide+(c ^ rev)];
for (dp=data, pix=pixel; pix < pixel+raw_width; dp+=5, pix+=4)
FORC4 pix[c] = (dp[c] << 2) | (dp[4] >> (c << 1) & 3);
if (row < top_margin)
@@ -4514,6 +4519,13 @@
fread (buf97, 324, 1, ifp);
}
}
+ if (tag == 0xa1 && type == 7) {
+ type = order;
+ order = 0x4949;
+ fseek (ifp, 140, SEEK_CUR);
+ FORC3 cam_mul[c] = get4();
+ order = type;
+ }
if (tag == 0xa4 && type == 3) {
fseek (ifp, wbi*48, SEEK_CUR);
FORC3 cam_mul[c] = get2();
@@ -4534,8 +4546,8 @@
FORC4 cblack[c ^ c >> 1] = get2();
if (tag == 0x201 && len == 4)
goto get2_rggb;
- if (tag == 0x220 && len == 53)
- meta_offset = ftell(ifp) + 14;
+ if (tag == 0x220 && type == 7)
+ meta_offset = ftell(ifp);
if (tag == 0x401 && type == 4 && len == 4)
FORC4 cblack[c ^ c >> 1] = get4();
if (tag == 0xe01) { /* Nikon Capture Note */
@@ -4837,6 +4849,10 @@
while (entries--) {
tiff_get (base, &tag, &type, &len, &save);
switch (tag) {
+ case 5: width = get2(); break;
+ case 6: height = get2(); break;
+ case 7: width += get2(); break;
+ case 9: filters = get2(); break;
case 17: case 18:
if (type == 3 && len == 1)
cam_mul[(tag-17)*2] = get2() / 256.0;
@@ -6055,6 +6071,8 @@
{ 6071,-747,-856,-7653,15365,2441,-2025,2553,7315 } },
{ "Canon EOS 50D", 0, 0x3d93,
{ 4920,616,-593,-6493,13964,2784,-1774,3178,7005 } },
+ { "Canon EOS 60D", 0, 0x2ff7,
+ { 6719,-994,-925,-4408,12426,2211,-887,2129,6051 } },
{ "Canon EOS 300D", 0, 0xfa0,
{ 8197,-2000,-1118,-6714,14335,2592,-2536,3178,8266 } },
{ "Canon EOS 350D", 0, 0xfff,
@@ -6088,7 +6106,7 @@
{ "Canon EOS", 0, 0,
{ 8197,-2000,-1118,-6714,14335,2592,-2536,3178,8266 } },
{ "Canon PowerShot A530", 0, 0,
- { 0 } }, /* don't want the A5 matrix */
+ { 0 } }, /* don't want the A5 matrix */
{ "Canon PowerShot A50", 0, 0,
{ -5300,9846,1776,3436,684,3939,-5540,9879,6200,-1404,11175,217 } },
{ "Canon PowerShot A5", 0, 0,
@@ -6097,6 +6115,8 @@
{ 11093,-3906,-1028,-5047,12492,2879,-1003,1750,5561 } },
{ "Canon PowerShot G11", 0, 0,
{ 12177,-4817,-1069,-1612,9864,2049,-98,850,4471 } },
+ { "Canon PowerShot G12", 0, 0,
+ { 0 } },
{ "Canon PowerShot G1", 0, 0,
{ -4778,9467,2172,4743,-1141,4344,-5146,9908,6077,-1566,11051,557 } },
{ "Canon PowerShot G2", 0, 0,
@@ -6209,8 +6229,8 @@
{ 21461,-10807,-1441,-2332,10599,1999,289,875,7703 } },
{ "FUJIFILM IS Pro", 0, 0,
{ 12300,-5110,-1304,-9117,17143,1998,-1947,2448,8100 } },
- { "FUJIFILM FinePix HS10 HS11", 0, 0xf68, /* DJC */
- { 12164,-3169,-1662,-1020,10358,662,-224,2108,3106 } },
+ { "FUJIFILM FinePix HS10 HS11", 0, 0xf68,
+ { 12440,-3954,-1183,-1123,9674,1708,-83,1614,4086 } },
{ "Imacon Ixpress", 0, 0, /* DJC */
{ 7025,-1415,-704,-5188,13765,1424,-1248,2742,6038 } },
{ "KODAK NC2000", 0, 0,
@@ -6333,6 +6353,8 @@
{ 7732,-2422,-789,-8238,15884,2498,-859,783,7330 } },
{ "NIKON D60", 0, 0,
{ 8736,-2458,-935,-9075,16894,2251,-1354,1242,8263 } },
+ { "NIKON D7000", 0, 0, /* DJC */
+ { 6629,-2254,-2,-3468,9387,4081,-760,2102,7574 } },
{ "NIKON D700", 0, 0,
{ 8139,-2171,-663,-8747,16541,2295,-1925,2008,8093 } },
{ "NIKON D70", 0, 0,
@@ -6349,6 +6371,8 @@
{ 13142,-4152,-1596,-4655,12374,2282,-1769,2696,6711} },
{ "NIKON E2500", 0, 0,
{ -5547,11762,2189,5814,-558,3342,-4924,9840,5949,688,9083,96 } },
+ { "NIKON E3200", 0, 0, /* DJC */
+ { 9846,-2085,-1019,-3278,11109,2170,-774,2134,5745 } },
{ "NIKON E4300", 0, 0, /* copied from Minolta DiMAGE Z2 */
{ 11280,-3564,-1370,-4655,12374,2282,-1423,2168,5396 } },
{ "NIKON E4500", 0, 0,
@@ -6405,6 +6429,8 @@
{ 8785,-2529,-1033,-7639,15624,2112,-1783,2300,7817 } },
{ "OLYMPUS E-520", 0, 0xfd2,
{ 8344,-2322,-1020,-7596,15635,2048,-1748,2269,7287 } },
+ { "OLYMPUS E-5", 0, 0, /* DJC */
+ { 10033,-4067,-600,-3784,10494,3291,-923,2594,7744 } },
{ "OLYMPUS E-600", 0, 0xfaf,
{ 8453,-2198,-1092,-7609,15681,2008,-1725,2337,7824 } },
{ "OLYMPUS E-620", 0, 0xfaf,
@@ -6453,37 +6479,61 @@
{ 11057,-3604,-1155,-5152,13046,2329,-282,375,8104 } },
{ "PENTAX K-x", 0, 0,
{ 8843,-2837,-625,-5025,12644,2668,-411,1234,7410 } },
+ { "PENTAX K-r", 0, 0, /* Pentax DNG */
+ { 21746,-6684,-1521,-10014,26601,6573,-1920,3062,19415 } },
+ { "PENTAX K-5", 0, 0, /* Pentax DNG */
+ { 19331,-5842,-2589,-9103,28027,4285,-2216,3884,14767 } },
{ "PENTAX K-7", 0, 0,
{ 9142,-2947,-678,-8648,16967,1663,-2224,2898,8615 } },
+ { "PENTAX 645D", 0, 0x3e00,
+ { 10646,-3593,-1158,-3329,11699,1831,-667,2874,6287 } },
{ "Panasonic DMC-FZ8", 0, 0xf7f,
{ 8986,-2755,-802,-6341,13575,3077,-1476,2144,6379 } },
{ "Panasonic DMC-FZ18", 0, 0,
{ 9932,-3060,-935,-5809,13331,2753,-1267,2155,5575 } },
- { "Panasonic DMC-FZ28", 15, 0xfff,
+ { "Panasonic DMC-FZ28", 15, 0xf96,
{ 10109,-3488,-993,-5412,12812,2916,-1305,2140,5543 } },
{ "Panasonic DMC-FZ30", 0, 0xf94,
{ 10976,-4029,-1141,-7918,15491,2600,-1670,2071,8246 } },
- { "Panasonic DMC-FZ35", 147, 0xfff,
+ { "Panasonic DMC-FZ3", 143, 0,
{ 9938,-2780,-890,-4604,12393,2480,-1117,2304,4620 } },
- { "Panasonic DMC-FZ50", 0, 0xfff, /* aka "LEICA V-LUX1" */
+ { "Panasonic DMC-FZ40", 143, 0,
+ { 13639,-5535,-1371,-1698,9633,2430,316,1152,4108 } },
+ { "Panasonic DMC-FZ50", 0, 0,
+ { 7906,-2709,-594,-6231,13351,3220,-1922,2631,6537 } },
+ { "LEICA V-LUX1", 0, 0,
{ 7906,-2709,-594,-6231,13351,3220,-1922,2631,6537 } },
{ "Panasonic DMC-L10", 15, 0xf96,
{ 8025,-1942,-1050,-7920,15904,2100,-2456,3005,7039 } },
- { "Panasonic DMC-L1", 0, 0x3dff, /* aka "LEICA DIGILUX 3" */
+ { "Panasonic DMC-L1", 0, 0xf7f,
{ 8054,-1885,-1025,-8349,16367,2040,-2805,3542,7629 } },
- { "Panasonic DMC-LC1", 0, 0, /* aka "LEICA DIGILUX 2" */
+ { "LEICA DIGILUX 3", 0, 0xf7f,
+ { 8054,-1885,-1025,-8349,16367,2040,-2805,3542,7629 } },
+ { "Panasonic DMC-LC1", 0, 0,
+ { 11340,-4069,-1275,-7555,15266,2448,-2960,3426,7685 } },
+ { "LEICA DIGILUX 2", 0, 0,
{ 11340,-4069,-1275,-7555,15266,2448,-2960,3426,7685 } },
- { "Panasonic DMC-LX1", 0, 0x3dfc, /* aka "LEICA D-LUX2" */
+ { "Panasonic DMC-LX1", 0, 0xf7f,
+ { 10704,-4187,-1230,-8314,15952,2501,-920,945,8927 } },
+ { "LEICA D-LUX2", 0, 0xf7f,
{ 10704,-4187,-1230,-8314,15952,2501,-920,945,8927 } },
- { "Panasonic DMC-LX2", 0, 0, /* aka "LEICA D-LUX3" */
+ { "Panasonic DMC-LX2", 0, 0,
{ 8048,-2810,-623,-6450,13519,3272,-1700,2146,7049 } },
- { "Panasonic DMC-LX3", 15, 0xfff, /* aka "LEICA D-LUX4" */
+ { "LEICA D-LUX3", 0, 0,
+ { 8048,-2810,-623,-6450,13519,3272,-1700,2146,7049 } },
+ { "Panasonic DMC-LX3", 15, 0,
+ { 8128,-2668,-655,-6134,13307,3161,-1782,2568,6083 } },
+ { "LEICA D-LUX4", 15, 0,
{ 8128,-2668,-655,-6134,13307,3161,-1782,2568,6083 } },
+ { "Panasonic DMC-LX5", 143, 0,
+ { 10909,-4295,-948,-1333,9306,2399,22,1738,4582 } },
+ { "Panasonic DMC-FZ100", 143, 0xfff,
+ { 16197,-6146,-1761,-2393,10765,1869,366,2238,5248 } },
{ "Panasonic DMC-FX150", 15, 0xfff,
{ 9082,-2907,-925,-6119,13377,3058,-1797,2641,5609 } },
{ "Panasonic DMC-G10", 0, 0,
{ 10113,-3400,-1114,-4765,12683,2317,-377,1437,6710 } },
- { "Panasonic DMC-G1", 15, 0xfff,
+ { "Panasonic DMC-G1", 15, 0xf94,
{ 8199,-2065,-1056,-8124,16156,2033,-2458,3022,7220 } },
{ "Panasonic DMC-G2", 15, 0xf3c,
{ 10113,-3400,-1114,-4765,12683,2317,-377,1437,6710 } },
@@ -6501,9 +6551,15 @@
{ 5053,-24,-117,-5684,14076,1702,-2619,4492,5849 } },
{ "Phase One P65", 0, 0,
{ 7914,1414,-1190,-8777,16582,2280,-2811,4605,5562 } },
+ { "SAMSUNG EX1", 0, 0x3e00,
+ { 8898,-2498,-994,-3144,11328,2066,-760,1381,4576 } },
+ { "SAMSUNG NX10", 20, 0xea6,
+ { 10332,-3234,-1168,-6111,14639,1520,-1352,2647,8331 } },
+ { "SAMSUNG WB2000", 0, 0xfff,
+ { 0 } },
{ "SAMSUNG GX-1", 0, 0,
{ 10504,-2438,-1189,-8603,16207,2531,-1022,863,12242 } },
- { "SAMSUNG S85", 0, 0, /* DJC */
+ { "SAMSUNG S85", 0, 0xffff, /* DJC */
{ 11885,-3968,-1473,-4214,12299,1916,-835,1655,5549 } },
{ "Sinar", 0, 0, /* DJC */
{ 16442,-2956,-2422,-2877,12128,750,-1136,6066,4559 } },
@@ -6538,7 +6594,13 @@
{ "SONY NEX-3", 138, 0, /* DJC */
{ 6907,-1256,-645,-4940,12621,2320,-1710,2581,6230 } },
{ "SONY NEX-5", 116, 0, /* DJC */
- { 6807,-1350,-342,-4216,11649,2567,-1089,2001,6420 } }
+ { 6807,-1350,-342,-4216,11649,2567,-1089,2001,6420 } },
+ { "SONY NEX", 128, 0, /* Adobe's matrix */
+ { 6549,-1550,-436,-4880,12435,2753,-854,1868,6976 } },
+ { "SONY SLT-A33", 128, 0,
+ { 6069,-1221,-366,-5221,12779,2734,-1024,2066,6834 } },
+ { "SONY SLT-A55", 128, 0,
+ { 5932,-1492,-411,-4813,12285,2856,-741,1524,6739 } }
};
double cam_xyz[4][3];
char name[130];
@@ -6631,6 +6693,30 @@
char head[32], *cp;
int hlen, flen, fsize, zero_fsize=1, i, c, is_canon;
struct jhead jh;
+ short pana[][6] = {
+ { 3130, 1743, 4, 0, -6, 0 },
+ { 3130, 2055, 4, 0, -6, 0 },
+ { 3130, 2319, 4, 0, -6, 0 },
+ { 3170, 2103, 18, 0,-42, 20 },
+ { 3170, 2367, 18, 13,-42,-21 },
+ { 3177, 2367, 0, 0, -1, 0 },
+ { 3304, 2458, 0, 0, -1, 0 },
+ { 3330, 2463, 9, 0, -5, 0 },
+ { 3330, 2479, 9, 0,-17, 4 },
+ { 3370, 1899, 15, 0,-44, 20 },
+ { 3370, 2235, 15, 0,-44, 20 },
+ { 3370, 2511, 15, 10,-44,-21 },
+ { 3690, 2751, 3, 0, -8, -3 },
+ { 3710, 2751, 0, 0, -3, 0 },
+ { 3724, 2450, 0, 0, 0, -2 },
+ { 3770, 2487, 17, 0,-44, 19 },
+ { 3770, 2799, 17, 15,-44,-19 },
+ { 3880, 2170, 6, 0, -6, 0 },
+ { 4060, 3018, 0, 0, 0, -2 },
+ { 4290, 2391, 3, 0, -8, -1 },
+ { 4330, 2439, 17, 15,-44,-19 },
+ { 4508, 2962, 0, 0, -3, -4 },
+ { 4508, 3330, 0, 0, -3, -6 } };
static const struct {
int fsize;
char make[12], model[19], withjpeg;
@@ -6675,6 +6761,7 @@
{ 5298000, "Canon", "PowerShot SD300" ,0 },
{ 7710960, "Canon", "PowerShot S3 IS" ,0 },
{ 15467760, "Canon", "PowerShot SX110 IS",0 },
+ { 15534576, "Canon", "PowerShot SX120 IS",0 },
{ 18653760, "Canon", "PowerShot SX20 IS",0 },
{ 5939200, "OLYMPUS", "C770UZ" ,0 },
{ 1581060, "NIKON", "E900" ,1 }, /* or E900s,E910 */
@@ -6818,6 +6905,18 @@
raw_height = get2();
load_raw = &CLASS nokia_load_raw;
filters = 0x61616161;
+ } else if (!memcmp (head,"NOKIARAW",8)) {
+ strcpy (make, "NOKIA");
+ strcpy (model, "X2");
+ order = 0x4949;
+ fseek (ifp, 300, SEEK_SET);
+ data_offset = get4();
+ i = get4();
+ width = get2();
+ height = get2();
+ data_offset += i - width * 5 / 4 * height;
+ load_raw = &CLASS nokia_load_raw;
+ filters = 0x61616161;
} else if (!memcmp (head,"DSC-Image",9))
parse_rollei();
else if (!memcmp (head,"PWAD",4))
@@ -6870,11 +6969,17 @@
}
if (height == 2624 && width == 3936) /* Pentax K10D and Samsung GX10 */
{ height = 2616; width = 3896; }
- if (height == 3136 && width == 4864) /* Pentax K20D */
- { height = 3124; width = 4688; }
- if (height == 3136 && width == 4736) /* Pentax K-7 */
- { height = 3122; width = 4684;
- top_margin = 2; filters = 0x16161616; }
+ if (height == 3136 && width == 4864) /* Pentax K20D and Samsung GX20 */
+ { height = 3124; width = 4688; filters = 0x16161616; }
+ if (!strcmp(model,"K-r") || !strcmp(model,"K-x"))
+ { width = 4309; filters = 0x16161616; }
+ if (!strcmp(model,"K-5"))
+ { left_margin = 10; width = 4950; filters = 0x16161616; }
+ if (!strcmp(model,"K-7"))
+ { height = 3122; width = 4684; filters = 0x16161616; top_margin = 2; }
+ if (!strcmp(model,"645D"))
+ { height = 5502; width = 7328; filters = 0x61616161; top_margin = 29;
+ left_margin = 48; }
if (height == 3014 && width == 4096) /* Ricoh GX200 */
width = 4014;
if (dng_version) {
@@ -7049,6 +7154,17 @@
load_raw = &CLASS packed_load_raw;
load_flags = 40;
zero_is_bad = 1;
+ } else if (!strcmp(model,"PowerShot SX120 IS")) {
+ height = 2742;
+ width = 3664;
+ raw_height = 2778;
+ raw_width = 3728;
+ top_margin = 18;
+ left_margin = 16;
+ filters = 0x49494949;
+ load_raw = &CLASS packed_load_raw;
+ load_flags = 40;
+ zero_is_bad = 1;
} else if (!strcmp(model,"PowerShot SX20 IS")) {
height = 3024;
width = 4032;
@@ -7122,6 +7238,10 @@
width = 3684;
top_margin = 16;
left_margin = 8;
+ if (unique_id > 0x2720000) {
+ top_margin = 12;
+ left_margin = 52;
+ }
} else if (is_canon && raw_width == 3944) {
height = 2602;
width = 3908;
@@ -7221,6 +7341,11 @@
left_margin = 2;
} else if (!strcmp(model,"D5000")) {
width -= 42;
+ } else if (!strcmp(model,"D7000")) {
+ width -= 44;
+ } else if (!strcmp(model,"D3100")) {
+ width -= 28;
+ left_margin = 6;
} else if (!strncmp(model,"D40",3) ||
!strncmp(model,"D50",3) ||
!strncmp(model,"D70",3)) {
@@ -7245,7 +7370,7 @@
else width -= 8;
} else if (!strncmp(model,"D300",4)) {
width -= 32;
- } else if (!strcmp(model,"COOLPIX P6000")) {
+ } else if (!strncmp(model,"COOLPIX P",9)) {
load_flags = 24;
filters = 0x94949494;
} else if (fsize == 1581060) {
@@ -7419,11 +7544,6 @@
data_error = -1;
} else if (!strcmp(model,"*ist DS")) {
height -= 2;
- } else if (!strcmp(model,"K20D")) {
- filters = 0x16161616;
- } else if (!strcmp(model,"K-x")) {
- width = 4309;
- filters = 0x16161616;
} else if (!strcmp(model,"Optio S")) {
if (fsize == 3178560) {
height = 1540;
@@ -7462,7 +7582,6 @@
raw_width = fsize/height/2;
order = 0x4d4d;
load_raw = &CLASS unpacked_load_raw;
- maximum = 0xffff;
} else if (!strcmp(model,"NX10")) {
height -= top_margin = 4;
width -= 2 * (left_margin = 8);
@@ -7475,7 +7594,11 @@
width = 3668;
top_margin = 8;
}
- maximum = 0x3e00;
+ } else if (!strcmp(model,"WB2000")) {
+ order = 0x4949;
+ height -= 3;
+ width -= 10;
+ top_margin = 2;
} else if (fsize == 20487168) {
height = 2808;
width = 3648;
@@ -7573,6 +7696,12 @@
top_margin = 4;
left_margin = 7;
filters = 0x61616161;
+ } else if (raw_width == 7410) {
+ height = 5502;
+ width = 7328;
+ top_margin = 4;
+ left_margin = 41;
+ filters = 0x61616161;
} else if (raw_width == 4090) {
strcpy (model, "V96C");
height -= (top_margin = 6);
@@ -7630,109 +7759,23 @@
filters = 0x16161616;
}
} else if (!strcmp(make,"LEICA") || !strcmp(make,"Panasonic")) {
- if ((flen - data_offset) / (width*8/7) == height)
+ if ((flen - data_offset) / (raw_width*8/7) == raw_height)
load_raw = &CLASS panasonic_load_raw;
if (!load_raw) {
load_raw = &CLASS unpacked_load_raw;
load_flags = 4;
}
zero_is_bad = 1;
- switch (width) {
- case 2568:
- adobe_coeff ("Panasonic","DMC-LC1"); break;
- case 3130:
- left_margin = -14;
- case 3170:
- left_margin += 18;
- width = 3096;
- if (height > 2326) {
- height = 2326;
- top_margin = 13;
- filters = 0x49494949;
- }
- adobe_coeff ("Panasonic","DMC-FZ8"); break;
- case 3213:
- width -= 27;
- case 3177:
- width -= 10;
- load_flags = 2;
- filters = 0x49494949;
- adobe_coeff ("Panasonic","DMC-L1"); break;
- case 3304:
- width -= 17;
- adobe_coeff ("Panasonic","DMC-FZ30"); break;
- case 3330:
- width += 43;
- left_margin = -6;
- maximum = 0xf7f;
- case 3370:
- width -= 82;
- left_margin += 15;
- if (height > 2480)
- height = 2480 - (top_margin = 10);
- filters = 0x49494949;
- adobe_coeff ("Panasonic","DMC-FZ18"); break;
- case 3690:
- height -= 2;
- left_margin = -14;
- maximum = 0xf7f0;
- case 3770:
- width = 3672;
- if (--height == 2798 && (height = 2760))
- top_margin = 15;
- else filters = 0x49494949;
- left_margin += 17;
- adobe_coeff ("Panasonic","DMC-FZ50"); break;
- case 3710:
- width = 3682;
- filters = 0x49494949;
- adobe_coeff ("Panasonic","DMC-L10"); break;
- case 3724:
- width -= 14;
- if (height == 2450) height -= 2;
- case 3836:
- width -= 42;
-lx3: filters = 0x16161616;
- if (make[0] != 'P')
- adobe_coeff ("Panasonic","DMC-LX3");
- break;
- case 3880:
- width -= 22;
- left_margin = 6;
- load_flags = 2;
- adobe_coeff ("Panasonic","DMC-LX1"); break;
- case 4060:
- width = 3982;
- if (height == 2250) goto lx3;
- width = 4018;
- filters = 0x16161616;
- if (!strncmp(model,"DMC-FZ3",7)) {
- height -= 2;
- adobe_coeff ("Panasonic","DMC-FZ35"); break;
- }
- filters = 0x49494949;
- break;
- case 4172:
- case 4396:
- width -= 28;
- filters = 0x49494949;
- adobe_coeff ("Panasonic","DMC-GH1"); break;
- case 4290:
- height += 38;
- left_margin = -14;
- filters = 0x49494949;
- case 4330:
- width = 4248;
- if ((height -= 39) == 2400)
- top_margin = 15;
- left_margin += 17;
- adobe_coeff ("Panasonic","DMC-LX2"); break;
- case 4508:
- height -= 6;
- width = 4429;
- filters = 0x16161616;
- adobe_coeff ("Panasonic","DMC-FX150"); break;
- }
+ if ((height += 12) > raw_height) height = raw_height;
+ for (i=0; i < sizeof pana / sizeof *pana; i++)
+ if (raw_width == pana[i][0] && raw_height == pana[i][1]) {
+ left_margin = pana[i][2];
+ top_margin = pana[i][3];
+ width += pana[i][4];
+ height += pana[i][5];
+ }
+ filters = 0x01010101 * (uchar) "\x94\x61\x49\x16"
+ [((filters-1) ^ (left_margin & 1) ^ (top_margin << 1)) & 3];
} else if (!strcmp(model,"C770UZ")) {
height = 1718;
width = 2304;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LibRaw-0.11.1/internal/dcraw_common.cpp new/LibRaw-0.11.2/internal/dcraw_common.cpp
--- old/LibRaw-0.11.1/internal/dcraw_common.cpp 2010-11-10 09:29:29.000000000 +0100
+++ new/LibRaw-0.11.2/internal/dcraw_common.cpp 2010-11-11 19:11:43.000000000 +0100
@@ -923,14 +923,16 @@
void CLASS pentax_load_raw()
{
- ushort bit[2][13], huff[4097];
- int row, col, diff, c, i;
+ ushort bit[2][15], huff[4097];
+ int dep, row, col, diff, c, i;
ushort vpred[2][2] = {{0,0},{0,0}}, hpred[2];
fseek (ifp, meta_offset, SEEK_SET);
- FORC(13) bit[0][c] = get2();
- FORC(13) bit[1][c] = fgetc(ifp);
- FORC(13)
+ dep = (get2() + 12) & 15;
+ fseek (ifp, 12, SEEK_CUR);
+ FORC(dep) bit[0][c] = get2();
+ FORC(dep) bit[1][c] = fgetc(ifp);
+ FORC(dep)
for (i=bit[0][c]; i <= ((bit[0][c]+(4096 >> bit[1][c])-1) & 4095); )
huff[++i] = bit[1][c] << 8 | c;
huff[0] = 12;
@@ -945,24 +947,26 @@
diff = ljpeg_diff (huff);
if (col < 2) hpred[col] = vpred[row & 1][col] += diff;
else hpred[col & 1] += diff;
- if ((unsigned) (row-top_margin) < height && col < width)
+
+ unsigned val = hpred[col & 1];
+
+ if ((unsigned) (row-top_margin) < height && (unsigned)(col-left_margin) < width)
{
#ifdef LIBRAW_LIBRARY_BUILD
- ushort color = FC(row-top_margin,col);
- if(channel_maximum[color] < hpred[col & 1]) channel_maximum[color] = hpred[col & 1];
+ ushort color = FC(row-top_margin,col-left_margin);
+ if(channel_maximum[color] < val) channel_maximum[color] = val;
#endif
- BAYER(row-top_margin,col) = hpred[col & 1];
+ BAYER(row-top_margin,col-left_margin) = val;
}
#ifdef LIBRAW_LIBRARY_BUILD
else
{
ushort *dfp = get_masked_pointer(row,col);
- if(dfp) *dfp = hpred[col & 1];
+ if(dfp) *dfp = val;
}
- if (col < width && row < height)
#endif
- if (hpred[col & 1] >> 12) derror();
+ if (val >> tiff_bps) derror();
}
}
}
@@ -1895,14 +1899,16 @@
{
uchar *data, *dp;
ushort *pixel, *pix;
- int dwide, row, c;
+ int rev, dwide, row, c;
+ rev = 3 * (order == 0x4949);
dwide = raw_width * 5 / 4;
data = (uchar *) malloc (dwide + raw_width*2);
merror (data, "nokia_load_raw()");
pixel = (ushort *) (data + dwide);
for (row=0; row < raw_height; row++) {
- if (fread (data, 1, dwide, ifp) < dwide) derror();
+ if (fread (data+dwide, 1, dwide, ifp) < dwide) derror();
+ FORC(dwide) data[c] = data[dwide+(c ^ rev)];
for (dp=data, pix=pixel; pix < pixel+raw_width; dp+=5, pix+=4)
FORC4 pix[c] = (dp[c] << 2) | (dp[4] >> (c << 1) & 3);
if (row < top_margin)
@@ -1914,8 +1920,8 @@
ushort *dfp = get_masked_pointer(row,col);
if(dfp)
*dfp = pixel[col];
+ black += pixel[c];
}
- FORC(width) black += pixel[c];
}
#else
FORC(width) black += pixel[c];
@@ -3201,7 +3207,7 @@
temp[i] = 2*base[st*i] + base[st*(i-sc)] + base[st*(2*size-2-(i+sc))];
}
-#if !defined(_OPENMP) || defined(__APPLE__) || defined(__MACOSX__)
+#if !defined(LIBRAW_USE_OPENMP)
void CLASS wavelet_denoise()
{
float *fimg=0, *temp, thold, mul[2], avg, diff;
@@ -3281,7 +3287,7 @@
}
free (fimg);
}
-#else
+#else /* LIBRAW_USE_OPENMP */
void CLASS wavelet_denoise()
{
float *fimg=0, *temp, thold, mul[2], avg, diff;
@@ -3847,7 +3853,7 @@
/* Fill in the green layer with gradients and pattern recognition: */
#ifdef LIBRAW_LIBRARY_BUILD
RUN_CALLBACK(LIBRAW_PROGRESS_INTERPOLATE,0,3);
-#ifdef _OPENMP
+#ifdef LIBRAW_USE_OPENMP
#pragma omp parallel for default(shared) private(guess, diff, row, col, d, c, i, pix) schedule(static)
#endif
#endif
@@ -3869,7 +3875,7 @@
/* Calculate red and blue for each green pixel: */
#ifdef LIBRAW_LIBRARY_BUILD
RUN_CALLBACK(LIBRAW_PROGRESS_INTERPOLATE,1,3);
-#ifdef _OPENMP
+#ifdef LIBRAW_USE_OPENMP
#pragma omp parallel for default(shared) private(guess, diff, row, col, d, c, i, pix) schedule(static)
#endif
#endif
@@ -3883,7 +3889,7 @@
/* Calculate blue for red pixels and vice versa: */
#ifdef LIBRAW_LIBRARY_BUILD
RUN_CALLBACK(LIBRAW_PROGRESS_INTERPOLATE,2,3);
-#ifdef _OPENMP
+#ifdef LIBRAW_USE_OPENMP
#pragma omp parallel for default(shared) private(guess, diff, row, col, d, c, i, pix) schedule(static)
#endif
#endif
@@ -4155,7 +4161,7 @@
border_interpolate(5);
#ifdef LIBRAW_LIBRARY_BUILD
-#ifdef _OPENMP
+#ifdef LIBRAW_USE_OPENMP
#pragma omp parallel private(buffer,rgb,lab,homo,top,left,i,j,k) shared(xyz_cam,terminate_flag)
#endif
#endif
@@ -4166,12 +4172,14 @@
lab = (short (*)[TS][TS][3])(buffer + 12*TS*TS);
homo = (char (*)[TS][2]) (buffer + 24*TS*TS);
-#ifdef _OPENMP
+#ifdef LIBRAW_LIBRARY_BUILD
+#ifdef LIBRAW_USE_OPENMP
#pragma omp for schedule(dynamic)
#endif
+#endif
for (top=2; top < height-5; top += TS-6){
#ifdef LIBRAW_LIBRARY_BUILD
-#ifdef _OPENMP
+#ifdef LIBRAW_USE_OPENMP
if(0== omp_get_thread_num())
#endif
if(callbacks.progress_cb) {
@@ -4590,6 +4598,13 @@
fread (buf97, 324, 1, ifp);
}
}
+ if (tag == 0xa1 && type == 7) {
+ type = order;
+ order = 0x4949;
+ fseek (ifp, 140, SEEK_CUR);
+ FORC3 cam_mul[c] = get4();
+ order = type;
+ }
if (tag == 0xa4 && type == 3) {
fseek (ifp, wbi*48, SEEK_CUR);
FORC3 cam_mul[c] = get2();
@@ -4616,8 +4631,8 @@
FORC4 cblack[c ^ c >> 1] = get2();
if (tag == 0x201 && len == 4)
goto get2_rggb;
- if (tag == 0x220 && len == 53)
- meta_offset = ftell(ifp) + 14;
+ if (tag == 0x220 && type == 7)
+ meta_offset = ftell(ifp);
if (tag == 0x401 && type == 4 && len == 4)
FORC4 cblack[c ^ c >> 1] = get4();
if (tag == 0xe01) { /* Nikon Capture Note */
@@ -4959,6 +4974,10 @@
while (entries--) {
tiff_get (base, &tag, &type, &len, &save);
switch (tag) {
+ case 5: width = get2(); break;
+ case 6: height = get2(); break;
+ case 7: width += get2(); break;
+ case 9: filters = get2(); break;
case 17: case 18:
if (type == 3 && len == 1)
{
@@ -6199,6 +6218,8 @@
{ 6071,-747,-856,-7653,15365,2441,-2025,2553,7315 } },
{ "Canon EOS 50D", 0, 0x3d93,
{ 4920,616,-593,-6493,13964,2784,-1774,3178,7005 } },
+ { "Canon EOS 60D", 0, 0x2ff7,
+ { 6719,-994,-925,-4408,12426,2211,-887,2129,6051 } },
{ "Canon EOS 300D", 0, 0xfa0,
{ 8197,-2000,-1118,-6714,14335,2592,-2536,3178,8266 } },
{ "Canon EOS 350D", 0, 0xfff,
@@ -6232,7 +6253,7 @@
{ "Canon EOS", 0, 0,
{ 8197,-2000,-1118,-6714,14335,2592,-2536,3178,8266 } },
{ "Canon PowerShot A530", 0, 0,
- { 0 } }, /* don't want the A5 matrix */
+ { 0 } }, /* don't want the A5 matrix */
{ "Canon PowerShot A50", 0, 0,
{ -5300,9846,1776,3436,684,3939,-5540,9879,6200,-1404,11175,217 } },
{ "Canon PowerShot A5", 0, 0,
@@ -6241,6 +6262,8 @@
{ 11093,-3906,-1028,-5047,12492,2879,-1003,1750,5561 } },
{ "Canon PowerShot G11", 0, 0,
{ 12177,-4817,-1069,-1612,9864,2049,-98,850,4471 } },
+ { "Canon PowerShot G12", 0, 0,
+ { 0 } },
{ "Canon PowerShot G1", 0, 0,
{ -4778,9467,2172,4743,-1141,4344,-5146,9908,6077,-1566,11051,557 } },
{ "Canon PowerShot G2", 0, 0,
@@ -6353,8 +6376,8 @@
{ 21461,-10807,-1441,-2332,10599,1999,289,875,7703 } },
{ "FUJIFILM IS Pro", 0, 0,
{ 12300,-5110,-1304,-9117,17143,1998,-1947,2448,8100 } },
- { "FUJIFILM FinePix HS10 HS11", 0, 0xf68, /* DJC */
- { 12164,-3169,-1662,-1020,10358,662,-224,2108,3106 } },
+ { "FUJIFILM FinePix HS10 HS11", 0, 0xf68,
+ { 12440,-3954,-1183,-1123,9674,1708,-83,1614,4086 } },
{ "Imacon Ixpress", 0, 0, /* DJC */
{ 7025,-1415,-704,-5188,13765,1424,-1248,2742,6038 } },
{ "KODAK NC2000", 0, 0,
@@ -6477,6 +6500,8 @@
{ 7732,-2422,-789,-8238,15884,2498,-859,783,7330 } },
{ "NIKON D60", 0, 0,
{ 8736,-2458,-935,-9075,16894,2251,-1354,1242,8263 } },
+ { "NIKON D7000", 0, 0, /* DJC */
+ { 6629,-2254,-2,-3468,9387,4081,-760,2102,7574 } },
{ "NIKON D700", 0, 0,
{ 8139,-2171,-663,-8747,16541,2295,-1925,2008,8093 } },
{ "NIKON D70", 0, 0,
@@ -6493,6 +6518,8 @@
{ 13142,-4152,-1596,-4655,12374,2282,-1769,2696,6711} },
{ "NIKON E2500", 0, 0,
{ -5547,11762,2189,5814,-558,3342,-4924,9840,5949,688,9083,96 } },
+ { "NIKON E3200", 0, 0, /* DJC */
+ { 9846,-2085,-1019,-3278,11109,2170,-774,2134,5745 } },
{ "NIKON E4300", 0, 0, /* copied from Minolta DiMAGE Z2 */
{ 11280,-3564,-1370,-4655,12374,2282,-1423,2168,5396 } },
{ "NIKON E4500", 0, 0,
@@ -6549,6 +6576,8 @@
{ 8785,-2529,-1033,-7639,15624,2112,-1783,2300,7817 } },
{ "OLYMPUS E-520", 0, 0xfd2,
{ 8344,-2322,-1020,-7596,15635,2048,-1748,2269,7287 } },
+ { "OLYMPUS E-5", 0, 0, /* DJC */
+ { 10033,-4067,-600,-3784,10494,3291,-923,2594,7744 } },
{ "OLYMPUS E-600", 0, 0xfaf,
{ 8453,-2198,-1092,-7609,15681,2008,-1725,2337,7824 } },
{ "OLYMPUS E-620", 0, 0xfaf,
@@ -6597,37 +6626,61 @@
{ 11057,-3604,-1155,-5152,13046,2329,-282,375,8104 } },
{ "PENTAX K-x", 0, 0,
{ 8843,-2837,-625,-5025,12644,2668,-411,1234,7410 } },
+ { "PENTAX K-r", 0, 0, /* Pentax DNG */
+ { 21746,-6684,-1521,-10014,26601,6573,-1920,3062,19415 } },
+ { "PENTAX K-5", 0, 0, /* Pentax DNG */
+ { 19331,-5842,-2589,-9103,28027,4285,-2216,3884,14767 } },
{ "PENTAX K-7", 0, 0,
{ 9142,-2947,-678,-8648,16967,1663,-2224,2898,8615 } },
+ { "PENTAX 645D", 0, 0x3e00,
+ { 10646,-3593,-1158,-3329,11699,1831,-667,2874,6287 } },
{ "Panasonic DMC-FZ8", 0, 0xf7f,
{ 8986,-2755,-802,-6341,13575,3077,-1476,2144,6379 } },
{ "Panasonic DMC-FZ18", 0, 0,
{ 9932,-3060,-935,-5809,13331,2753,-1267,2155,5575 } },
- { "Panasonic DMC-FZ28", 15, 0xfff,
+ { "Panasonic DMC-FZ28", 15, 0xf96,
{ 10109,-3488,-993,-5412,12812,2916,-1305,2140,5543 } },
{ "Panasonic DMC-FZ30", 0, 0xf94,
{ 10976,-4029,-1141,-7918,15491,2600,-1670,2071,8246 } },
- { "Panasonic DMC-FZ35", 147, 0xfff,
+ { "Panasonic DMC-FZ3", 143, 0,
{ 9938,-2780,-890,-4604,12393,2480,-1117,2304,4620 } },
- { "Panasonic DMC-FZ50", 0, 0xfff, /* aka "LEICA V-LUX1" */
+ { "Panasonic DMC-FZ40", 143, 0,
+ { 13639,-5535,-1371,-1698,9633,2430,316,1152,4108 } },
+ { "Panasonic DMC-FZ50", 0, 0,
+ { 7906,-2709,-594,-6231,13351,3220,-1922,2631,6537 } },
+ { "LEICA V-LUX1", 0, 0,
{ 7906,-2709,-594,-6231,13351,3220,-1922,2631,6537 } },
{ "Panasonic DMC-L10", 15, 0xf96,
{ 8025,-1942,-1050,-7920,15904,2100,-2456,3005,7039 } },
- { "Panasonic DMC-L1", 0, 0x3dff, /* aka "LEICA DIGILUX 3" */
+ { "Panasonic DMC-L1", 0, 0xf7f,
+ { 8054,-1885,-1025,-8349,16367,2040,-2805,3542,7629 } },
+ { "LEICA DIGILUX 3", 0, 0xf7f,
{ 8054,-1885,-1025,-8349,16367,2040,-2805,3542,7629 } },
- { "Panasonic DMC-LC1", 0, 0, /* aka "LEICA DIGILUX 2" */
+ { "Panasonic DMC-LC1", 0, 0,
{ 11340,-4069,-1275,-7555,15266,2448,-2960,3426,7685 } },
- { "Panasonic DMC-LX1", 0, 0x3dfc, /* aka "LEICA D-LUX2" */
+ { "LEICA DIGILUX 2", 0, 0,
+ { 11340,-4069,-1275,-7555,15266,2448,-2960,3426,7685 } },
+ { "Panasonic DMC-LX1", 0, 0xf7f,
+ { 10704,-4187,-1230,-8314,15952,2501,-920,945,8927 } },
+ { "LEICA D-LUX2", 0, 0xf7f,
{ 10704,-4187,-1230,-8314,15952,2501,-920,945,8927 } },
- { "Panasonic DMC-LX2", 0, 0, /* aka "LEICA D-LUX3" */
+ { "Panasonic DMC-LX2", 0, 0,
{ 8048,-2810,-623,-6450,13519,3272,-1700,2146,7049 } },
- { "Panasonic DMC-LX3", 15, 0xfff, /* aka "LEICA D-LUX4" */
+ { "LEICA D-LUX3", 0, 0,
+ { 8048,-2810,-623,-6450,13519,3272,-1700,2146,7049 } },
+ { "Panasonic DMC-LX3", 15, 0,
+ { 8128,-2668,-655,-6134,13307,3161,-1782,2568,6083 } },
+ { "LEICA D-LUX4", 15, 0,
{ 8128,-2668,-655,-6134,13307,3161,-1782,2568,6083 } },
+ { "Panasonic DMC-LX5", 143, 0,
+ { 10909,-4295,-948,-1333,9306,2399,22,1738,4582 } },
+ { "Panasonic DMC-FZ100", 143, 0xfff,
+ { 16197,-6146,-1761,-2393,10765,1869,366,2238,5248 } },
{ "Panasonic DMC-FX150", 15, 0xfff,
{ 9082,-2907,-925,-6119,13377,3058,-1797,2641,5609 } },
{ "Panasonic DMC-G10", 0, 0,
{ 10113,-3400,-1114,-4765,12683,2317,-377,1437,6710 } },
- { "Panasonic DMC-G1", 15, 0xfff,
+ { "Panasonic DMC-G1", 15, 0xf94,
{ 8199,-2065,-1056,-8124,16156,2033,-2458,3022,7220 } },
{ "Panasonic DMC-G2", 15, 0xf3c,
{ 10113,-3400,-1114,-4765,12683,2317,-377,1437,6710 } },
@@ -6645,9 +6698,15 @@
{ 5053,-24,-117,-5684,14076,1702,-2619,4492,5849 } },
{ "Phase One P65", 0, 0,
{ 7914,1414,-1190,-8777,16582,2280,-2811,4605,5562 } },
+ { "SAMSUNG EX1", 0, 0x3e00,
+ { 8898,-2498,-994,-3144,11328,2066,-760,1381,4576 } },
+ { "SAMSUNG NX10", 20, 0xea6,
+ { 10332,-3234,-1168,-6111,14639,1520,-1352,2647,8331 } },
+ { "SAMSUNG WB2000", 0, 0xfff,
+ { 0 } },
{ "SAMSUNG GX-1", 0, 0,
{ 10504,-2438,-1189,-8603,16207,2531,-1022,863,12242 } },
- { "SAMSUNG S85", 0, 0, /* DJC */
+ { "SAMSUNG S85", 0, 0xffff, /* DJC */
{ 11885,-3968,-1473,-4214,12299,1916,-835,1655,5549 } },
{ "Sinar", 0, 0, /* DJC */
{ 16442,-2956,-2422,-2877,12128,750,-1136,6066,4559 } },
@@ -6682,7 +6741,13 @@
{ "SONY NEX-3", 138, 0, /* DJC */
{ 6907,-1256,-645,-4940,12621,2320,-1710,2581,6230 } },
{ "SONY NEX-5", 116, 0, /* DJC */
- { 6807,-1350,-342,-4216,11649,2567,-1089,2001,6420 } }
+ { 6807,-1350,-342,-4216,11649,2567,-1089,2001,6420 } },
+ { "SONY NEX", 128, 0, /* Adobe's matrix */
+ { 6549,-1550,-436,-4880,12435,2753,-854,1868,6976 } },
+ { "SONY SLT-A33", 128, 0,
+ { 6069,-1221,-366,-5221,12779,2734,-1024,2066,6834 } },
+ { "SONY SLT-A55", 128, 0,
+ { 5932,-1492,-411,-4813,12285,2856,-741,1524,6739 } }
};
double cam_xyz[4][3];
char name[130];
@@ -6782,6 +6847,30 @@
char head[32], *cp;
int hlen, flen, fsize, zero_fsize=1, i, c, is_canon;
struct jhead jh;
+ short pana[][6] = {
+ { 3130, 1743, 4, 0, -6, 0 },
+ { 3130, 2055, 4, 0, -6, 0 },
+ { 3130, 2319, 4, 0, -6, 0 },
+ { 3170, 2103, 18, 0,-42, 20 },
+ { 3170, 2367, 18, 13,-42,-21 },
+ { 3177, 2367, 0, 0, -1, 0 },
+ { 3304, 2458, 0, 0, -1, 0 },
+ { 3330, 2463, 9, 0, -5, 0 },
+ { 3330, 2479, 9, 0,-17, 4 },
+ { 3370, 1899, 15, 0,-44, 20 },
+ { 3370, 2235, 15, 0,-44, 20 },
+ { 3370, 2511, 15, 10,-44,-21 },
+ { 3690, 2751, 3, 0, -8, -3 },
+ { 3710, 2751, 0, 0, -3, 0 },
+ { 3724, 2450, 0, 0, 0, -2 },
+ { 3770, 2487, 17, 0,-44, 19 },
+ { 3770, 2799, 17, 15,-44,-19 },
+ { 3880, 2170, 6, 0, -6, 0 },
+ { 4060, 3018, 0, 0, 0, -2 },
+ { 4290, 2391, 3, 0, -8, -1 },
+ { 4330, 2439, 17, 15,-44,-19 },
+ { 4508, 2962, 0, 0, -3, -4 },
+ { 4508, 3330, 0, 0, -3, -6 } };
static const struct {
int fsize;
char t_make[12], t_model[19], withjpeg;
@@ -6826,6 +6915,7 @@
{ 5298000, "Canon", "PowerShot SD300" ,0 },
{ 7710960, "Canon", "PowerShot S3 IS" ,0 },
{ 15467760, "Canon", "PowerShot SX110 IS",0 },
+ { 15534576, "Canon", "PowerShot SX120 IS",0 },
{ 18653760, "Canon", "PowerShot SX20 IS",0 },
{ 5939200, "OLYMPUS", "C770UZ" ,0 },
{ 1581060, "NIKON", "E900" ,1 }, /* or E900s,E910 */
@@ -6985,6 +7075,18 @@
raw_height = get2();
load_raw = &CLASS nokia_load_raw;
filters = 0x61616161;
+ } else if (!memcmp (head,"NOKIARAW",8)) {
+ strcpy (make, "NOKIA");
+ strcpy (model, "X2");
+ order = 0x4949;
+ fseek (ifp, 300, SEEK_SET);
+ data_offset = get4();
+ i = get4();
+ width = get2();
+ height = get2();
+ data_offset += i - width * 5 / 4 * height;
+ load_raw = &CLASS nokia_load_raw;
+ filters = 0x61616161;
} else if (!memcmp (head,"DSC-Image",9))
parse_rollei();
else if (!memcmp (head,"PWAD",4))
@@ -7035,11 +7137,17 @@
}
if (height == 2624 && width == 3936) /* Pentax K10D and Samsung GX10 */
{ height = 2616; width = 3896; }
- if (height == 3136 && width == 4864) /* Pentax K20D */
- { height = 3124; width = 4688; }
- if (height == 3136 && width == 4736) /* Pentax K-7 */
- { height = 3122; width = 4684;
- top_margin = 2; filters = 0x16161616; }
+ if (height == 3136 && width == 4864) /* Pentax K20D and Samsung GX20 */
+ { height = 3124; width = 4688; filters = 0x16161616; }
+ if (!strcmp(model,"K-r") || !strcmp(model,"K-x"))
+ { width = 4309; filters = 0x16161616; }
+ if (!strcmp(model,"K-5"))
+ { left_margin = 10; width = 4950; filters = 0x16161616; }
+ if (!strcmp(model,"K-7"))
+ { height = 3122; width = 4684; filters = 0x16161616; top_margin = 2; }
+ if (!strcmp(model,"645D"))
+ { height = 5502; width = 7328; filters = 0x61616161; top_margin = 29;
+ left_margin = 48; }
if (height == 3014 && width == 4096) /* Ricoh GX200 */
width = 4014;
if (dng_version) {
@@ -7208,6 +7316,17 @@
load_raw = &CLASS packed_load_raw;
load_flags = 40;
zero_is_bad = 1;
+ } else if (!strcmp(model,"PowerShot SX120 IS")) {
+ height = 2742;
+ width = 3664;
+ raw_height = 2778;
+ raw_width = 3728;
+ top_margin = 18;
+ left_margin = 16;
+ filters = 0x49494949;
+ load_raw = &CLASS packed_load_raw;
+ load_flags = 40;
+ zero_is_bad = 1;
} else if (!strcmp(model,"PowerShot SX20 IS")) {
height = 3024;
width = 4032;
@@ -7281,6 +7400,10 @@
width = 3684;
top_margin = 16;
left_margin = 8;
+ if (unique_id > 0x2720000) {
+ top_margin = 12;
+ left_margin = 52;
+ }
} else if (is_canon && raw_width == 3944) {
height = 2602;
width = 3908;
@@ -7380,6 +7503,11 @@
left_margin = 2;
} else if (!strcmp(model,"D5000")) {
width -= 42;
+ } else if (!strcmp(model,"D7000")) {
+ width -= 44;
+ } else if (!strcmp(model,"D3100")) {
+ width -= 28;
+ left_margin = 6;
} else if (!strncmp(model,"D40",3) ||
!strncmp(model,"D50",3) ||
!strncmp(model,"D70",3)) {
@@ -7404,7 +7532,7 @@
else width -= 8;
} else if (!strncmp(model,"D300",4)) {
width -= 32;
- } else if (!strcmp(model,"COOLPIX P6000")) {
+ } else if (!strncmp(model,"COOLPIX P",9)) {
load_flags = 24;
filters = 0x94949494;
} else if (fsize == 1581060) {
@@ -7584,11 +7712,6 @@
data_error = -1;
} else if (!strcmp(model,"*ist DS")) {
height -= 2;
- } else if (!strcmp(model,"K20D")) {
- filters = 0x16161616;
- } else if (!strcmp(model,"K-x")) {
- width = 4309;
- filters = 0x16161616;
} else if (!strcmp(model,"Optio S")) {
if (fsize == 3178560) {
height = 1540;
@@ -7627,7 +7750,6 @@
raw_width = fsize/height/2;
order = 0x4d4d;
load_raw = &CLASS unpacked_load_raw;
- maximum = 0xffff;
} else if (!strcmp(model,"NX10")) {
height -= top_margin = 4;
width -= 2 * (left_margin = 8);
@@ -7640,7 +7762,11 @@
width = 3668;
top_margin = 8;
}
- maximum = 0x3e00;
+ } else if (!strcmp(model,"WB2000")) {
+ order = 0x4949;
+ height -= 3;
+ width -= 10;
+ top_margin = 2;
} else if (fsize == 20487168) {
height = 2808;
width = 3648;
@@ -7738,6 +7864,12 @@
top_margin = 4;
left_margin = 7;
filters = 0x61616161;
+ } else if (raw_width == 7410) {
+ height = 5502;
+ width = 7328;
+ top_margin = 4;
+ left_margin = 41;
+ filters = 0x61616161;
} else if (raw_width == 4090) {
strcpy (model, "V96C");
height -= (top_margin = 6);
@@ -7795,109 +7927,23 @@
filters = 0x16161616;
}
} else if (!strcmp(make,"LEICA") || !strcmp(make,"Panasonic")) {
- if ((flen - data_offset) / (width*8/7) == height)
+ if ((flen - data_offset) / (raw_width*8/7) == raw_height)
load_raw = &CLASS panasonic_load_raw;
if (!load_raw) {
load_raw = &CLASS unpacked_load_raw;
load_flags = 4;
}
zero_is_bad = 1;
- switch (width) {
- case 2568:
- adobe_coeff ("Panasonic","DMC-LC1"); break;
- case 3130:
- left_margin = -14;
- case 3170:
- left_margin += 18;
- width = 3096;
- if (height > 2326) {
- height = 2326;
- top_margin = 13;
- filters = 0x49494949;
- }
- adobe_coeff ("Panasonic","DMC-FZ8"); break;
- case 3213:
- width -= 27;
- case 3177:
- width -= 10;
- load_flags = 2;
- filters = 0x49494949;
- adobe_coeff ("Panasonic","DMC-L1"); break;
- case 3304:
- width -= 17;
- adobe_coeff ("Panasonic","DMC-FZ30"); break;
- case 3330:
- width += 43;
- left_margin = -6;
- maximum = 0xf7f;
- case 3370:
- width -= 82;
- left_margin += 15;
- if (height > 2480)
- height = 2480 - (top_margin = 10);
- filters = 0x49494949;
- adobe_coeff ("Panasonic","DMC-FZ18"); break;
- case 3690:
- height -= 2;
- left_margin = -14;
- maximum = 0xf7f0;
- case 3770:
- width = 3672;
- if (--height == 2798 && (height = 2760))
- top_margin = 15;
- else filters = 0x49494949;
- left_margin += 17;
- adobe_coeff ("Panasonic","DMC-FZ50"); break;
- case 3710:
- width = 3682;
- filters = 0x49494949;
- adobe_coeff ("Panasonic","DMC-L10"); break;
- case 3724:
- width -= 14;
- if (height == 2450) height -= 2;
- case 3836:
- width -= 42;
-lx3: filters = 0x16161616;
- if (make[0] != 'P')
- adobe_coeff ("Panasonic","DMC-LX3");
- break;
- case 3880:
- width -= 22;
- left_margin = 6;
- load_flags = 2;
- adobe_coeff ("Panasonic","DMC-LX1"); break;
- case 4060:
- width = 3982;
- if (height == 2250) goto lx3;
- width = 4018;
- filters = 0x16161616;
- if (!strncmp(model,"DMC-FZ3",7)) {
- height -= 2;
- adobe_coeff ("Panasonic","DMC-FZ35"); break;
- }
- filters = 0x49494949;
- break;
- case 4172:
- case 4396:
- width -= 28;
- filters = 0x49494949;
- adobe_coeff ("Panasonic","DMC-GH1"); break;
- case 4290:
- height += 38;
- left_margin = -14;
- filters = 0x49494949;
- case 4330:
- width = 4248;
- if ((height -= 39) == 2400)
- top_margin = 15;
- left_margin += 17;
- adobe_coeff ("Panasonic","DMC-LX2"); break;
- case 4508:
- height -= 6;
- width = 4429;
- filters = 0x16161616;
- adobe_coeff ("Panasonic","DMC-FX150"); break;
- }
+ if ((height += 12) > raw_height) height = raw_height;
+ for (i=0; i < sizeof pana / sizeof *pana; i++)
+ if (raw_width == pana[i][0] && raw_height == pana[i][1]) {
+ left_margin = pana[i][2];
+ top_margin = pana[i][3];
+ width += pana[i][4];
+ height += pana[i][5];
+ }
+ filters = 0x01010101 * (uchar) "\x94\x61\x49\x16"
+ [((filters-1) ^ (left_margin & 1) ^ (top_margin << 1)) & 3];
} else if (!strcmp(model,"C770UZ")) {
height = 1718;
width = 2304;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LibRaw-0.11.1/internal/defines.h new/LibRaw-0.11.2/internal/defines.h
--- old/LibRaw-0.11.1/internal/defines.h 2010-11-10 09:29:29.000000000 +0100
+++ new/LibRaw-0.11.2/internal/defines.h 2010-11-11 19:11:43.000000000 +0100
@@ -22,7 +22,7 @@
*/
#define NO_JPEG
-#define VERSION "9.04"
+#define VERSION "9.05"
#ifndef _GNU_SOURCE
#define _GNU_SOURCE
@@ -40,9 +40,7 @@
#include <string.h>
#include <time.h>
#include <sys/types.h>
-#ifdef _OPENMP
-#include <omp.h>
-#endif
+
/*
NO_JPEG disables decoding of compressed Kodak DC120 files.
NO_LCMS disables the "-p" option.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LibRaw-0.11.1/libraw/libraw_types.h new/LibRaw-0.11.2/libraw/libraw_types.h
--- old/LibRaw-0.11.1/libraw/libraw_types.h 2010-09-04 11:47:15.000000000 +0200
+++ new/LibRaw-0.11.2/libraw/libraw_types.h 2010-11-11 08:54:31.000000000 +0100
@@ -28,10 +28,18 @@
#include <sys/time.h>
#endif
#include <stdio.h>
-#ifdef _OPENMP
-#ifdef _MSC_VER
-#error OpenMP is not supported under MS Visual Studio
+
+#if defined (_OPENMP)
+# if defined(_MSC_VER)
+# undef LIBRAW_USE_OPENMP
+# elif (defined(__APPLE__) || defined(__MACOSX__)) && defined(_REENTRANT)
+# undef LIBRAW_USE_OPENMP
+# else /* OpenMP defined but not Mac/pthreads and not Windows */
+# define LIBRAW_USE_OPENMP
+# endif
#endif
+
+#ifdef LIBRAW_USE_OPENMP
#include <omp.h>
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LibRaw-0.11.1/libraw/libraw_version.h new/LibRaw-0.11.2/libraw/libraw_version.h
--- old/LibRaw-0.11.1/libraw/libraw_version.h 2010-11-10 09:20:40.000000000 +0100
+++ new/LibRaw-0.11.2/libraw/libraw_version.h 2010-11-11 18:30:25.000000000 +0100
@@ -25,7 +25,7 @@
#define LIBRAW_MAJOR_VERSION 0
#define LIBRAW_MINOR_VERSION 11
-#define LIBRAW_PATCH_VERSION 1
+#define LIBRAW_PATCH_VERSION 2
#define LIBRAW_VERSION_TAIL Release
#define _LIBRAW_VERSION_MAKE(a,b,c,d) #a"."#b"."#c"-"#d
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LibRaw-0.11.1/samples/dcraw_emu.cpp new/LibRaw-0.11.2/samples/dcraw_emu.cpp
--- old/LibRaw-0.11.1/samples/dcraw_emu.cpp 2010-11-10 09:20:40.000000000 +0100
+++ new/LibRaw-0.11.2/samples/dcraw_emu.cpp 2010-11-11 08:10:31.000000000 +0100
@@ -254,7 +254,7 @@
if(verbosity>1)
RawProcessor.set_progress_handler(my_progress_callback,(void*)"Sample data passed");
-#ifdef _OPENMP
+#ifdef LIBRAW_USE_OPENMP
if(verbosity)
printf ("Using %d threads\n", omp_get_max_threads());
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LibRaw-0.11.1/src/libraw_cxx.cpp new/LibRaw-0.11.2/src/libraw_cxx.cpp
--- old/LibRaw-0.11.1/src/libraw_cxx.cpp 2010-10-12 16:18:04.000000000 +0200
+++ new/LibRaw-0.11.2/src/libraw_cxx.cpp 2010-11-11 18:30:25.000000000 +0100
@@ -1731,6 +1731,7 @@
"Canon PowerShot G9",
"Canon PowerShot G10",
"Canon PowerShot G11",
+"Canon PowerShot G12",
"Canon PowerShot S2 IS (CHDK hack)",
"Canon PowerShot S3 IS (CHDK hack)",
"Canon PowerShot S5 IS (CHDK hack)",
@@ -1744,6 +1745,7 @@
"Canon PowerShot S90",
"Canon PowerShot SX1 IS",
"Canon PowerShot SX110 IS (CHDK hack)",
+"Canon PowerShot SX120 IS (CHDK hack)",
"Canon PowerShot SX20 IS (CHDK hack)",
"Canon EOS D30",
"Canon EOS D60",
@@ -1755,6 +1757,7 @@
"Canon EOS 30D",
"Canon EOS 40D",
"Canon EOS 50D",
+"Canon EOS 60D",
"Canon EOS 300D / Digital Rebel / Kiss Digital",
"Canon EOS 350D / Digital Rebel XT / Kiss Digital N",
"Canon EOS 400D / Digital Rebel XTi / Kiss Digital X",
@@ -1819,6 +1822,7 @@
"Fuji IS-1",
"Hasselblad CFV",
"Hasselblad H3D",
+"Hasselblad H4D",
"Hasselblad V96C",
"Imacon Ixpress 16-megapixel",
"Imacon Ixpress 22-megapixel",
@@ -1930,7 +1934,9 @@
"Nikon D300s",
"Nikon D700",
"Nikon D3000",
+"Nikon D3100",
"Nikon D5000",
+"Nikon D7000",
"Nikon E700 (\"DIAG RAW\" hack)",
"Nikon E800 (\"DIAG RAW\" hack)",
"Nikon E880 (\"DIAG RAW\" hack)",
@@ -1951,8 +1957,10 @@
"Nikon E8700",
"Nikon E8800",
"Nikon Coolpix P6000",
+"Nikon Coolpix P7000",
"Nikon Coolpix S6 (\"DIAG RAW\" hack)",
"Nokia N95",
+"Nokia X2",
"Olympus C3030Z",
"Olympus C5050Z",
"Olympus C5060WZ",
@@ -1964,6 +1972,7 @@
"Olympus X200,D560Z,C350Z",
"Olympus E-1",
"Olympus E-3",
+"Olympus E-5",
"Olympus E-10",
"Olympus E-20",
"Olympus E-30",
@@ -1992,7 +2001,9 @@
"Panasonic DMC-FZ28",
"Panasonic DMC-FZ30",
"Panasonic DMC-FZ35/FZ38",
+"Panasonic DMC-FZ40",
"Panasonic DMC-FZ50",
+"Panasonic DMC-FZ100",
"Panasonic DMC-FX150",
"Panasonic DMC-G1",
"Panasonic DMC-G10",
@@ -2005,6 +2016,7 @@
"Panasonic DMC-LX1",
"Panasonic DMC-LX2",
"Panasonic DMC-LX3",
+"Panasonic DMC-LX5",
"Pentax *ist D",
"Pentax *ist DL",
"Pentax *ist DL2",
@@ -2017,11 +2029,14 @@
"Pentax K200D",
"Pentax K2000/K-m",
"Pentax K-x",
+"Pentax K-r",
+"Pentax K-5",
"Pentax K-7",
"Pentax Optio S",
"Pentax Optio S4",
"Pentax Optio 33WR",
"Pentax Optio 750Z",
+"Pentax 645D",
"Phase One LightPhase",
"Phase One H 10",
"Phase One H 20",
@@ -2037,9 +2052,11 @@
"RoverShot 3320af",
"Samsung EX1",
"Samsung GX-1S",
-"Samsung GX-10",
-"Samsung NX-10",
+"Samsung GX10",
+"Samsung GX20",
+"Samsung NX10",
"Samsung WB550",
+"Samsung WB2000",
"Samsung S85 (hacked)",
"Samsung S850 (hacked)",
"Sarnoff 4096x5440",
@@ -2067,6 +2084,8 @@
"Sony DSLR-A900",
"Sony NEX-3",
"Sony NEX-5",
+"Sony SLT-A33",
+"Sony SLT-A55V",
"Sony XCD-SX910CR",
"STV680 VGA",
NULL
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org