source: gsdl/trunk/perllib/cpan/Image/ExifTool/KyoceraRaw.pm@ 16842

Last change on this file since 16842 was 16842, checked in by davidb, 16 years ago

ExifTool added to cpan area to support metadata extraction from files such as JPEG. Primarily targetted as Image files (hence the Image folder name decided upon by the ExifTool author) it also can handle video such as flash and audio such as Wav

File size: 4.2 KB
Line 
1#------------------------------------------------------------------------------
2# File: KyoceraRaw.pm
3#
4# Description: Read Kyocera RAW meta information
5#
6# Revisions: 02/17/2006 - P. Harvey Created
7#
8# References: 1) http://www.cybercom.net/~dcoffin/dcraw/
9#------------------------------------------------------------------------------
10
11package Image::ExifTool::KyoceraRaw;
12
13use strict;
14use vars qw($VERSION);
15use Image::ExifTool qw(:DataAccess);
16
17$VERSION = '1.00';
18
19sub ProcessRAW($$);
20
21# utility to reverse order of characters in a string
22sub ReverseString($) { pack('C*',reverse unpack('C*',shift)) }
23
24# Contax N Digital tags (ref PH)
25%Image::ExifTool::KyoceraRaw::Main = (
26 PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
27 GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
28 NOTES => 'Tags for Kyocera Contax N Digital RAW images.',
29 0x01 => {
30 Name => 'FirmwareVersion',
31 Format => 'string[10]',
32 ValueConv => \&ReverseString,
33 },
34 0x0c => {
35 Name => 'Model',
36 Format => 'string[12]',
37 ValueConv => \&ReverseString,
38 },
39 0x19 => { #1
40 Name => 'Make',
41 Format => 'string[7]',
42 ValueConv => \&ReverseString,
43 },
44 0x21 => { #1
45 Name => 'DateTimeOriginal',
46 Groups => { 2 => 'Time' },
47 Format => 'string[20]',
48 ValueConv => \&ReverseString,
49 },
50 0x34 => {
51 Name => 'ISO',
52 Groups => { 2 => 'Image' },
53 Format => 'int32u',
54 PrintConv => {
55 7 => 25,
56 8 => 32,
57 9 => 40,
58 10 => 50,
59 11 => 64,
60 12 => 80,
61 13 => 100,
62 14 => 125,
63 15 => 160,
64 16 => 200,
65 17 => 250,
66 18 => 320,
67 19 => 400,
68 },
69 },
70 0x38 => {
71 Name => 'ExposureTime',
72 Groups => { 2 => 'Image' },
73 Format => 'int32u',
74 ValueConv => '2**($val / 8) / 16000',
75 PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
76 },
77 0x3c => { #1
78 Name => 'WB_RGGBLevels',
79 Groups => { 2 => 'Image' },
80 Format => 'int32u[4]',
81 },
82 0x58 => {
83 Name => 'FNumber',
84 Groups => { 2 => 'Image' },
85 Format => 'int32u',
86 ValueConv => '2**($val/16)',
87 PrintConv => 'sprintf("%.2g",$val)',
88 },
89 0x68 => {
90 Name => 'MaxAperture',
91 Format => 'int32u',
92 ValueConv => '2**($val/16)',
93 PrintConv => 'sprintf("%.2g",$val)',
94 },
95 0x70 => {
96 Name => 'FocalLength',
97 Format => 'int32u',
98 PrintConv => '"${val}mm"',
99 },
100 0x7c => {
101 Name => 'Lens',
102 Format => 'string[32]',
103 },
104);
105
106#------------------------------------------------------------------------------
107# Extract information from Kyocera RAW image
108# Inputs: 0) ExifTool object reference, 1) dirInfo reference
109# Returns: 1 if this was a valid Kyocera RAW image
110sub ProcessRAW($$)
111{
112 my ($exifTool, $dirInfo) = @_;
113 my $raf = $$dirInfo{RAF};
114 my $size = 156; # size of header
115 my $buff;
116
117 $raf->Read($buff, $size) == $size or return 0;
118 # validate Make string ('KYOCERA' reversed)
119 substr($buff, 0x19, 7) eq 'ARECOYK' or return 0;
120 $exifTool->SetFileType();
121 SetByteOrder('MM');
122 my %dirInfo = (
123 DataPt => \$buff,
124 DataPos => 0,
125 DataLen => $size,
126 DirStart => 0,
127 DirLen => $size,
128 );
129 my $tagTablePtr = Image::ExifTool::GetTagTable('Image::ExifTool::KyoceraRaw::Main');
130 $exifTool->ProcessDirectory(\%dirInfo, $tagTablePtr);
131 return 1;
132}
133
1341; # end
135
136__END__
137
138=head1 NAME
139
140Image::ExifTool::KyoceraRaw - Read Kyocera RAW meta information
141
142=head1 SYNOPSIS
143
144This module is loaded automatically by Image::ExifTool when required.
145
146=head1 DESCRIPTION
147
148This module contains definitions required by Image::ExifTool to read
149meta information from Kyocera Contax N Digital RAW images.
150
151=head1 AUTHOR
152
153Copyright 2003-2007, Phil Harvey (phil at owl.phy.queensu.ca)
154
155This library is free software; you can redistribute it and/or modify it
156under the same terms as Perl itself.
157
158=head1 REFERENCES
159
160=over 4
161
162=item L<http://www.cybercom.net/~dcoffin/dcraw/>
163
164=back
165
166=head1 SEE ALSO
167
168L<Image::ExifTool::TagNames/KyoceraRaw Tags>,
169L<Image::ExifTool(3pm)|Image::ExifTool>
170
171=cut
Note: See TracBrowser for help on using the repository browser.