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@opensuse.org + +- add the right configure flags + +------------------------------------------------------------------- +Tue Nov 16 20:35:55 UTC 2010 - mrdocs@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@lexa.ru> +2010-11-11 Alex Tutubalin <lexa@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@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@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@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@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org