comparison src/format_fuji.c @ 101:847e4bc6b54c

Tue Nov 7 15:35:59 2006 John Ellis <johne@verizon.net> * exif.c: Use new format_raw_exif_offset() function to find Exif in raw files. * filelist.c: Add orf and pef to displayed file types. * format_canon.h, format_fuji.h: Update to new #define format. * format_fuji.c: Use same offset for Exif as the jpeg image as the Exif is always embedded in the jpeg and assuming offset of 12 is just broken. * format_nikon.h: Update to new #define format, and add pentax here as finding the jpeg will be same code. * format_olympus.[ch]: Support Olympus raw files with embedded jpegs, not all raw files will have a jpeg, but all appear to have Exif tags. * format_raw.[ch]: Add new camera types, and add a debugging facility to easily list all tags within tiff files (see format_raw.h to enable).
author gqview
date Tue, 07 Nov 2006 21:00:50 +0000
parents a8c9992320f4
children 9c355d5c8619
comparison
equal deleted inserted replaced
100:deafec7cd99f 101:847e4bc6b54c
46 memcmp(data, "FUJIFILM", 8) != 0) 46 memcmp(data, "FUJIFILM", 8) != 0)
47 { 47 {
48 return FALSE; 48 return FALSE;
49 } 49 }
50 50
51 /* offset to jpeg is embedded at bytes 84-87 */
51 io = GUINT32_FROM_BE(*(guint32*)(data + 84)); 52 io = GUINT32_FROM_BE(*(guint32*)(data + 84));
52 eo = *image_offset + 12; 53 if (io + 4 > len) return FALSE;
53 54
54 /* verify jpeg marker */ 55 /* verify jpeg marker */
55 if (memcmp(data + io, "\xff\xd8\xff\xe1", 4) != 0) 56 if (memcmp(data + io, "\xff\xd8\xff\xe1", 4) != 0)
56 { 57 {
57 return FALSE; 58 return FALSE;
58 } 59 }
59 60
61 /* Exif is stored in the jpeg, so use the same offset */
62 eo=io;
63
60 if (image_offset) *image_offset = io; 64 if (image_offset) *image_offset = io;
61 if (exif_offset) *exif_offset = eo; 65 if (exif_offset) *exif_offset = eo;
62
63 printf("raw Fuji format file\n");
64 66
65 return TRUE; 67 return TRUE;
66 } 68 }
67 69
68 70