|
Git commit 85f351b812bd66d73432e46f9a940bf7a5a01978 by Gilles Caulier.
Committed on 22/05/2011 at 11:46. Pushed by cgilles into branch 'master'. update internal Libraw to 0.13.5 : - New color data for Canon 600D and 1100D, Fuji S200EXR - New cameras supported: Fuji HS20EXR and F550EXR, Kodak Z990, Nikon D5100, Olympus E-PL1s and XZ-1, Samsung NX11, Sony A230 and 290 CCMAIL: [hidden email] M +8 -0 libraw/Changelog.txt M +70 -56 libraw/internal/dcraw_common.cpp M +1 -1 libraw/internal/defines.h M +1 -1 libraw/libraw/libraw_datastream.h M +1 -1 libraw/libraw/libraw_types.h M +2 -2 libraw/libraw/libraw_version.h M +17 -8 libraw/src/libraw_cxx.cpp http://commits.kde.org/libkdcraw/85f351b812bd66d73432e46f9a940bf7a5a01978 diff --git a/libraw/Changelog.txt b/libraw/Changelog.txt index 62b782e..71419fa 100644 --- a/libraw/Changelog.txt +++ b/libraw/Changelog.txt @@ -1,3 +1,11 @@ +2011-05-18 Alex Tutubalin <[hidden email]> + * Imported new dcraw 9.08/1.443: + + New color data for Canon 600D and 1100D, Fuji S200EXR + + New camera supported: Fuji HS20EXR and F550EXR, Kodak Z990, + Nikon D5100, Olympus E-PL1s and XZ-1, + Samsung NX11, Sony A230 and 290. + * LibRaw 0.13.5-Release + 2011-04-02 Alex Tutubalin <[hidden email]> * Imported new dcraw 9.07/1.442: + Support for Canon 600D and 1100D, Hasselblad H4D-60, diff --git a/libraw/internal/dcraw_common.cpp b/libraw/internal/dcraw_common.cpp index f57f44c..3640994 100644 --- a/libraw/internal/dcraw_common.cpp +++ b/libraw/internal/dcraw_common.cpp @@ -850,6 +850,8 @@ void CLASS lossless_jpeg_load_raw() #else rp = ljpeg_row (jrow, &jh); #endif + if (load_flags & 1) + row = jrow & 1 ? height-1-jrow/2 : jrow/2; for (jcol=0; jcol < jwide; jcol++) { val = *rp++; if (jh.bits <= 12) @@ -4762,10 +4764,12 @@ void CLASS parse_makernote (int base, int uptag) base = ftell(ifp)-10; fseek (ifp, -2, SEEK_CUR); order = get2(); get2(); - } else if (!strncmp (buf,"FUJIFILM",8) || - !strncmp (buf,"SONY",4) || + } else if (!strncmp (buf,"SONY",4) || !strcmp (buf,"Panasonic")) { - order = 0x4949; + goto nf; + } else if (!strncmp (buf,"FUJIFILM",8)) { + base = ftell(ifp)-10; +nf: order = 0x4949; fseek (ifp, 2, SEEK_CUR); } else if (!strcmp (buf,"OLYMP") || !strcmp (buf,"LEICA") || @@ -4785,7 +4789,7 @@ void CLASS parse_makernote (int base, int uptag) while (entries--) { tiff_get (base, &tag, &type, &len, &save); tag |= uptag << 16; - if (tag == 2 && strstr(make,"NIKON")) + if (tag == 2 && strstr(make,"NIKON") && !iso_speed) iso_speed = (get2(),get2()); if (tag == 4 && len > 26 && len < 35) { if ((i=(get4(),get2())) != 0x7fff && !iso_speed) @@ -5141,9 +5145,9 @@ void CLASS parse_mos (int offset) static const char *mod[] = { "","DCB2","Volare","Cantare","CMost","Valeo 6","Valeo 11","Valeo 22", "Valeo 11p","Valeo 17","","Aptus 17","Aptus 22","Aptus 75","Aptus 65", - "Aptus 54S","Aptus 65S","Aptus 75S","AFi 5","AFi 6","AFi 7","Aptus-II 7", - "","","Aptus-II 6","","","Aptus-II 10","Aptus-II 5" - "","","","","","Aptus-II 10R","Aptus-II 8","","Aptus-II 12"}; + "Aptus 54S","Aptus 65S","Aptus 75S","AFi 5","AFi 6","AFi 7", + "AFi-II 7","","","AFi-II 6","","","AFi-II 10","AFi-II 5" + "","","","","","AFi-II 10R","AFi-II 8","","AFi-II 12"}; float romm_cam[3][3]; @@ -5197,6 +5201,8 @@ void CLASS parse_mos (int offset) color_flags.cam_mul_state = LIBRAW_COLORSTATE_LOADED; #endif } + if (!strcmp(data,"Rows_data")) + load_flags = get4(); parse_mos (from); fseek (ifp, skip+from, SEEK_SET); } @@ -5336,6 +5342,11 @@ int CLASS parse_tiff_ifd (int base) tiff_ifd[ifd].samples = len & 7; tiff_ifd[ifd].bps = getint(type); break; + case 61446: + raw_height = 0; + load_raw = &CLASS packed_load_raw; + load_flags = 16 | (get4() && (filters=0x16161616)) << 3; + break; case 259: /* Compression */ tiff_ifd[ifd].comp = get2(); break; @@ -6352,32 +6363,20 @@ void CLASS parse_fuji (int offset) fuji_layout = fgetc(ifp) >> 7; load_raw = fgetc(ifp) & 8 ? &CLASS unpacked_load_raw : &CLASS fuji_load_raw; - } - if (tag == 0x2ff0) - { + } else if (tag == 0x2ff0) { FORC4 cam_mul[c ^ 1] = get2(); #ifdef LIBRAW_LIBRARY_BUILD color_flags.cam_mul_state = LIBRAW_COLORSTATE_LOADED; #endif - } - else if (tag == 0xc000) - { - raw_height = order; - order = 0x4949; - width = get4(); - height = get4(); - order = raw_height; - raw_height = 1; - load_raw = &CLASS packed_load_raw; - load_flags = 16; - } + } else if (tag == 0xc000) { + c = order; + order = 0x4949; + width = get4(); + height = get4(); + order = c; + } fseek (ifp, save+len, SEEK_SET); } - if (!raw_height) { - filters = 0x16161616; - load_raw = &CLASS packed_load_raw; - load_flags = 24; - } height <<= fuji_layout; width >>= fuji_layout; } @@ -6572,12 +6571,12 @@ void CLASS adobe_coeff (const char *p_make, const char *p_model) { 4763,712,-646,-6821,14399,2640,-1921,3276,6561 } }, { "Canon EOS 550D", 0, 0x3dd7, { 6941,-1164,-857,-3825,11597,2534,-416,1540,6039 } }, - { "Canon EOS 600D", 0, 0x3510, /* DJC */ - { 5589,-1476,-292,-3401,9372,4030,-706,2038,6350 } }, + { "Canon EOS 600D", 0, 0x3510, + { 6461,-907,-882,-4300,12184,2378,-819,1944,5931 } }, { "Canon EOS 1000D", 0, 0xe43, { 6771,-1139,-977,-7818,15123,2928,-1244,1437,7533 } }, - { "Canon EOS 1100D", 0, 0x3510, /* DJC */ - { 5193,-1423,-226,-3414,9273,4142,-679,2103,6808 } }, + { "Canon EOS 1100D", 0, 0x3510, + { 6444,-904,-893,-4563,12308,2535,-903,2016,6728 } }, { "Canon EOS-1Ds Mark III", 0, 0x3bb0, { 5859,-211,-930,-8255,16017,2353,-1732,1887,7448 } }, { "Canon EOS-1Ds Mark II", 0, 0xe80, @@ -6691,7 +6690,7 @@ void CLASS adobe_coeff (const char *p_make, const char *p_model) { "FUJIFILM FinePix S100FS", 514, 0, { 11521,-4355,-1065,-6524,13767,3058,-1466,1984,6045 } }, { "FUJIFILM FinePix S200EXR", 512, 0x3fff, - { 0 } }, + { 11401,-4498,-1312,-5088,12751,2613,-838,1568,5941 } }, { "FUJIFILM FinePix S20Pro", 0, 0, { 10004,-3219,-1201,-7036,15047,2107,-1863,2565,7736 } }, { "FUJIFILM FinePix S2Pro", 128, 0, @@ -6728,6 +6727,12 @@ void CLASS adobe_coeff (const char *p_make, const char *p_model) { 12300,-5110,-1304,-9117,17143,1998,-1947,2448,8100 } }, { "FUJIFILM FinePix HS10 HS11", 0, 0xf68, { 12440,-3954,-1183,-1123,9674,1708,-83,1614,4086 } }, + { "FUJIFILM FinePix HS20EXR", 0, 0, + { 13690,-5358,-1474,-3369,11600,1998,-132,1554,4395 } }, + { "FUJIFILM FinePix F550EXR", 0, 0, + { 13690,-5358,-1474,-3369,11600,1998,-132,1554,4395 } }, + { "FUJIFILM FinePix X100", 0, 0, + { 12161,-4457,-1069,-5034,12874,2400,-795,1724,6904 } }, { "Imacon Ixpress", 0, 0, /* DJC */ { 7025,-1415,-704,-5188,13765,1424,-1248,2742,6038 } }, { "KODAK NC2000", 0, 0, @@ -6778,6 +6783,8 @@ void CLASS adobe_coeff (const char *p_make, const char *p_model) { 11313,-3559,-1101,-3893,11891,2257,-1214,2398,4908 } }, { "KODAK EasyShare Z981", 0, 0, { 12729,-4717,-1188,-1367,9187,2582,274,860,4411 } }, + { "KODAK EasyShare Z990", 0, 0xfed, + { 11749,-4048,-1309,-1867,10572,1489,-138,1449,4522 } }, { "KODAK EASYSHARE Z1015", 0, 0xef1, { 11265,-4286,-992,-4694,12343,2647,-1090,1523,5447 } }, { "Leaf CMost", 0, 0, @@ -6790,8 +6797,10 @@ void CLASS adobe_coeff (const char *p_make, const char *p_model) { 7914,1414,-1190,-8777,16582,2280,-2811,4605,5562 } }, { "Leaf Aptus 75", 0, 0, { 7914,1414,-1190,-8777,16582,2280,-2811,4605,5562 } }, +#if 0 { "Leaf Aptus 22", 0, 0, { 8236, 1746, -1314, -8251, 15953, 2428, -3673, 5786, 5770, } }, +#endif { "Leaf Aptus-II 5", 0, 0, // Mamiya 645 AFD { 8236, 1746, -1314, -8251, 15953, 2428, -3673, 5786, 5770, } }, { "Leaf Aptus-II 6", 0, 0, @@ -6864,6 +6873,8 @@ void CLASS adobe_coeff (const char *p_make, const char *p_model) { 6992,-1668,-806,-8138,15748,2543,-874,850,7897 } }, { "NIKON D5000", 0, 0xf00, { 7309,-1403,-519,-8474,16008,2622,-2433,2826,8064 } }, + { "NIKON D5100", 0, 0x3de6, + { 8198,-2239,-724,-4871,12389,2798,-1043,2050,7181 } }, { "NIKON D50", 0, 0, { 7732,-2422,-789,-8238,15884,2498,-859,783,7330 } }, { "NIKON D60", 0, 0, @@ -6956,8 +6967,12 @@ void CLASS adobe_coeff (const char *p_make, const char *p_model) { 8343,-2050,-1021,-7715,15705,2103,-1831,2380,8235 } }, { "OLYMPUS E-P2", 0, 0xffd, { 8343,-2050,-1021,-7715,15705,2103,-1831,2380,8235 } }, + { "OLYMPUS E-PL1s", 0, 0, + { 11409,-3872,-1393,-4572,12757,2003,-709,1810,7415 } }, { "OLYMPUS E-PL1", 0, 0, { 11408,-4289,-1215,-4286,12385,2118,-387,1467,7787 } }, + { "OLYMPUS E-PL2", 0, 0, + { 15030,-5552,-1806,-3987,12387,1767,-592,1670,7023 } }, { "OLYMPUS SP350", 0, 0, { 12078,-4836,-1069,-6671,14306,2578,-786,939,7418 } }, { "OLYMPUS SP3", 0, 0, @@ -6972,6 +6987,8 @@ void CLASS adobe_coeff (const char *p_make, const char *p_model) { 10915,-3677,-982,-5587,12986,2911,-1168,1968,6223 } }, { "OLYMPUS SP570UZ", 0, 0, { 11522,-4044,-1146,-4736,12172,2904,-988,1829,6039 } }, + { "OLYMPUS XZ-1", 0, 0, + { 10901,-4095,-1074,-1141,9208,2293,-62,1417,5158 } }, { "PENTAX *ist DL2", 0, 0, { 10504,-2438,-1189,-8603,16207,2531,-1022,863,12242 } }, { "PENTAX *ist DL", 0, 0, @@ -7074,7 +7091,7 @@ void CLASS adobe_coeff (const char *p_make, const char *p_model) { 7914,1414,-1190,-8777,16582,2280,-2811,4605,5562 } }, { "SAMSUNG EX1", 0, 0x3e00, { 8898,-2498,-994,-3144,11328,2066,-760,1381,4576 } }, - { "SAMSUNG NX10", 0, 0, + { "SAMSUNG NX1", 0, 0, { 10332,-3234,-1168,-6111,14639,1520,-1352,2647,8331 } }, { "SAMSUNG WB2000", 0, 0xfff, { 12093,-3557,-1155,-1000,9534,1733,-22,1787,4576 } }, @@ -7092,6 +7109,8 @@ void CLASS adobe_coeff (const char *p_make, const char *p_model) { 7511,-2571,-692,-7894,15088,3060,-948,1111,8128 } }, { "SONY DSLR-A100", 0, 0xfeb, { 9437,-2811,-774,-8405,16215,2290,-710,596,7181 } }, + { "SONY DSLR-A290", 0, 0, + { 6038,-1484,-579,-9145,16746,2512,-875,746,7218 } }, { "SONY DSLR-A2", 0, 0, { 9847,-3091,-928,-8485,16345,2225,-715,595,7103 } }, { "SONY DSLR-A300", 0, 0, @@ -7424,9 +7443,11 @@ void CLASS identify() } else if (!strcmp (head, "qktk")) { strcpy (make, "Apple"); strcpy (model,"QuickTake 100"); + load_raw = &CLASS quicktake_100_load_raw; } else if (!strcmp (head, "qktn")) { strcpy (make, "Apple"); strcpy (model,"QuickTake 150"); + load_raw = &CLASS kodak_radc_load_raw; } else if (!memcmp (head,"FUJIFILM",8)) { fseek (ifp, 84, SEEK_SET); thumb_offset = get4(); @@ -7439,7 +7460,7 @@ void CLASS identify() if (is_raw == 2 && shot_select) parse_fuji (i); } - fseek (ifp, 100, SEEK_SET); + fseek (ifp, 100+28*(shot_select > 0), SEEK_SET); parse_tiff (data_offset = get4()); parse_tiff (thumb_offset+12); apply_tiff(); @@ -7907,7 +7928,8 @@ canon_cr2: left_margin = 2; } else if (!strcmp(model,"D5000")) { width -= 42; - } else if (!strcmp(model,"D7000")) { + } else if (!strcmp(model,"D5100") || + !strcmp(model,"D7000")) { width -= 44; } else if (!strcmp(model,"D3100")) { width -= 28; @@ -7939,9 +7961,8 @@ canon_cr2: } else if (!strncmp(model,"COOLPIX P",9)) { load_flags = 24; filters = 0x94949494; - // Coolpix P7000 temp patch - if(!strcmp(model,"COOLPIX P7000") && iso_speed >= 400) - black = 256; + if (model[9] == '7' && iso_speed >= 400) + black = 255; } else if (fsize == 1581060) { height = 963; width = 1287; @@ -8053,14 +8074,14 @@ cp_e2500: width = 2880; flip = 6; } else if (load_raw != &CLASS packed_load_raw) - maximum = 0x3e00; - if (is_raw == 2 && shot_select) - maximum = 0x2f00; + maximum = (is_raw == 2 && shot_select) ? 0x2f00 : 0x3e00; top_margin = (raw_height - height) >> 2 << 1; left_margin = (raw_width - width ) >> 2 << 1; - if (is_raw == 2) - data_offset += (shot_select > 0) * ( fuji_layout ? - (raw_width *= 2) : raw_height*raw_width*2 ); + if (width == 3328) { + width = 3262; + left_margin = 34; + } + if (fuji_layout) raw_width *= is_raw; if (load_raw == &CLASS fuji_load_raw) { fuji_width = width >> !fuji_layout; width = (height >> fuji_layout) + fuji_width; @@ -8157,8 +8178,8 @@ konica_400z: raw_width = fsize/height/2; order = 0x4d4d; load_raw = &CLASS unpacked_load_raw; - } else if (!strcmp(model,"NX10")) { - height -= top_margin = 4; + } else if (!strncmp(model,"NX1",3)) { + height -= top_margin = 8; width -= 2 * (left_margin = 8); load_flags = 32; } else if (!strcmp(model,"EX1")) { @@ -8518,7 +8539,7 @@ notraw: void CLASS identify2(unsigned fsize, unsigned flen, char *head) { if (!strncasecmp(model,"EasyShare",9)) { - data_offset = 0x15000; + data_offset = data_offset < 0x15000 ? 0x15000 : 0x17000; load_raw = &CLASS packed_load_raw; } else if (!strcasecmp(make,"KODAK")) { if (filters == UINT_MAX) filters = 0x61616161; @@ -8615,7 +8636,8 @@ void CLASS identify2(unsigned fsize, unsigned flen, char *head) load_raw = &CLASS kodak_radc_load_raw; filters = 0x61616161; simple_coeff(2); - } else if (!strcmp(model,"QuickTake 100")) { + } else if (!strncmp(model,"QuickTake",9)) { + if (head[5]) strcpy (model+10, "200"); fseek (ifp, 544, SEEK_SET); height = get2(); width = get2(); @@ -8625,14 +8647,6 @@ void CLASS identify2(unsigned fsize, unsigned flen, char *head) fseek (ifp, data_offset-6, SEEK_SET); flip = ~get2() & 3 ? 5:6; } - load_raw = &CLASS quicktake_100_load_raw; - filters = 0x61616161; - } else if (!strcmp(model,"QuickTake 150")) { - data_offset = 738 - head[5]; - if (head[5]) strcpy (model+10, "200"); - load_raw = &CLASS kodak_radc_load_raw; - height = 480; - width = 640; filters = 0x61616161; } else if (!strcmp(make,"Rollei") && !load_raw) { switch (raw_width) { diff --git a/libraw/internal/defines.h b/libraw/internal/defines.h index 8181950..6b8320a 100644 --- a/libraw/internal/defines.h +++ b/libraw/internal/defines.h @@ -22,7 +22,7 @@ it under the terms of the one of three licenses as you choose: */ #define NO_JPEG -#define VERSION "9.07" +#define VERSION "9.08" #ifndef _GNU_SOURCE #define _GNU_SOURCE diff --git a/libraw/libraw/libraw_datastream.h b/libraw/libraw/libraw_datastream.h index df578f1..cd3cfc4 100644 --- a/libraw/libraw/libraw_datastream.h +++ b/libraw/libraw/libraw_datastream.h @@ -195,7 +195,7 @@ class LibRaw_abstract_datastream virtual char* gets(char *, int) = 0; virtual int scanf_one(const char *, void *) = 0; virtual int eof() = 0; - // Make buffer from current offset + /* Make buffer from current offset */ virtual LibRaw_byte_buffer *make_byte_buffer(unsigned int sz) { LibRaw_byte_buffer *ret = new LibRaw_byte_buffer(sz); diff --git a/libraw/libraw/libraw_types.h b/libraw/libraw/libraw_types.h index 2bb7258..de08648 100644 --- a/libraw/libraw/libraw_types.h +++ b/libraw/libraw/libraw_types.h @@ -41,7 +41,7 @@ it under the terms of the one of three licenses as you choose: #else # undef LIBRAW_USE_OPENMP #endif -// Not Win32 +/* Not Win32 */ # elif (defined(__APPLE__) || defined(__MACOSX__)) && defined(_REENTRANT) # undef LIBRAW_USE_OPENMP # else diff --git a/libraw/libraw/libraw_version.h b/libraw/libraw/libraw_version.h index 46227f7..9e78307 100644 --- a/libraw/libraw/libraw_version.h +++ b/libraw/libraw/libraw_version.h @@ -25,11 +25,11 @@ it under the terms of the one of three licenses as you choose: #define LIBRAW_MAJOR_VERSION 0 #define LIBRAW_MINOR_VERSION 13 -#define LIBRAW_PATCH_VERSION 4 +#define LIBRAW_PATCH_VERSION 5 #define LIBRAW_VERSION_TAIL Release #define LIBRAW_SHLIB_CURRENT 2 -#define LIBRAW_SHLIB_REVISION 3 +#define LIBRAW_SHLIB_REVISION 4 #define LIBRAW_SHLIB_AGE 0 #define _LIBRAW_VERSION_MAKE(a,b,c,d) #a"."#b"."#c"-"#d diff --git a/libraw/src/libraw_cxx.cpp b/libraw/src/libraw_cxx.cpp index ef792d9..995aa5e 100644 --- a/libraw/src/libraw_cxx.cpp +++ b/libraw/src/libraw_cxx.cpp @@ -1968,6 +1968,8 @@ static const char *static_camera_list[] = "Fuji FinePix S9100/S9600", "Fuji FinePix S200EXR", "Fuji FinePix HS10/HS11", +"Fuji FinePix HS20EXR", +"Fuji FinePix F550EXR", "Fuji FinePix X100", "Fuji IS-1", "Hasselblad CFV", @@ -2015,25 +2017,26 @@ static const char *static_camera_list[] = "Kodak P880", "Kodak Z980", "Kodak Z981", +"Kodak Z990", "Kodak Z1015", "Kodak KAI-0340", "Konica KD-400Z", "Konica KD-510Z", "Leaf AFi 7", +"Leaf AFi-II 5", +"Leaf AFi-II 6", +"Leaf AFi-II 7", +"Leaf AFi-II 8", +"Leaf AFi-II 10", +"Leaf AFi-II 10R", +"Leaf AFi-II 12", +"Leaf AFi-II 12R", "Leaf Aptus 17", "Leaf Aptus 22", "Leaf Aptus 54S", "Leaf Aptus 65", "Leaf Aptus 75", "Leaf Aptus 75S", -"Leaf Aptus II 5", -"Leaf Aptus II 6", -"Leaf Aptus II 7", -"Leaf Aptus II 8", -"Leaf Aptus II 10", -"Leaf Aptus II 10R", -"Leaf Aptus II 12", -"Leaf Aptus II 12R", "Leaf Cantare", "Leaf CatchLight", "Leaf CMost", @@ -2094,6 +2097,7 @@ static const char *static_camera_list[] = "Nikon D3000", "Nikon D3100", "Nikon D5000", +"Nikon D5100", "Nikon D7000", "Nikon E700 (\"DIAG RAW\" hack)", "Nikon E800 (\"DIAG RAW\" hack)", @@ -2146,6 +2150,7 @@ static const char *static_camera_list[] = "Olympus E-P1", "Olympus E-P2", "Olympus E-PL1", +"Olympus E-PL1s", "Olympus E-PL2", "Olympus SP310", "Olympus SP320", @@ -2155,6 +2160,7 @@ static const char *static_camera_list[] = "Olympus SP550UZ", "Olympus SP560UZ", "Olympus SP570UZ", +"Olympus XZ-1", "Panasonic DMC-FZ8", "Panasonic DMC-FZ18", "Panasonic DMC-FZ28", @@ -2219,6 +2225,7 @@ static const char *static_camera_list[] = "Samsung GX10", "Samsung GX20", "Samsung NX10", +"Samsung NX11", "Samsung NX100", "Samsung WB550", "Samsung WB2000", @@ -2242,6 +2249,8 @@ static const char *static_camera_list[] = "Sony DSC-V3", "Sony DSLR-A100", "Sony DSLR-A200", +"Sony DSLR-A230", +"Sony DSLR-A290", "Sony DSLR-A300", "Sony DSLR-A330", "Sony DSLR-A350", _______________________________________________ Digikam-devel mailing list [hidden email] https://mail.kde.org/mailman/listinfo/digikam-devel |
| Free forum by Nabble | Edit this page |
