[Rawstudio-commit] r3043 - branches/rawstudio-ng-color/plugins/meta-tiff
Anders Kvist
anders at kvistmail.dk
Wed Jan 20 21:38:29 CET 2010
Author: akv
Date: 2010-01-20 21:38:29 +0100 (Wed, 20 Jan 2010)
New Revision: 3043
Modified:
branches/rawstudio-ng-color/plugins/meta-tiff/tiff-meta.c
Log:
Fixed reading of LensSerialNumber from Olympus cameras. Some magic value is used - found by looking through several files and matching addresses - it works for all testfiles.
Modified: branches/rawstudio-ng-color/plugins/meta-tiff/tiff-meta.c
===================================================================
--- branches/rawstudio-ng-color/plugins/meta-tiff/tiff-meta.c 2010-01-20 16:46:06 UTC (rev 3042)
+++ branches/rawstudio-ng-color/plugins/meta-tiff/tiff-meta.c 2010-01-20 20:38:29 UTC (rev 3043)
@@ -805,6 +805,8 @@
struct IFD ifd;
gushort ushort_temp1;
gchar *str = NULL;
+ guint temp;
+ gint total;
if(!raw_get_ushort(rawfile, offset, &number_of_entries))
return FALSE;
@@ -822,8 +824,18 @@
switch(ifd.tag)
{
case 0x0202: /* LensSerialNumber */
- /* FIXME: odd data at this address? */
- str = raw_strdup(rawfile, offset, 32);
+ /* magic spot, but this is the address for serial number in all Olympus files where it's present */
+ raw_get_ushort(rawfile, offset-4, &ushort_temp1);
+ temp = offset+ushort_temp1-212;
+
+ str = raw_strdup(rawfile, temp, 32);
+
+ /* Make a number from the string we just got */
+ gint i = 0;
+ while(str[i])
+ total += str[i++];
+
+ meta->lens_id = total;
break;
case 0x0205: /* MinApertureAtMinFocal */
raw_get_ushort(rawfile, offset-4, &ushort_temp1);
More information about the Rawstudio-commit
mailing list