source: main/trunk/greenstone2/perllib/cpan/Image/ExifTool/Motorola.pm@ 34921

Last change on this file since 34921 was 34921, checked in by anupama, 3 years ago

Committing the improvements to EmbeddedMetaPlugin's processing of Keywords vs other metadata fields. Keywords were literally stored as arrays of words rather than phrases in PDFs (at least in Diego's sample PDF), whereas other meta fields like Subjects and Creators stored them as arrays of phrases. To get both to work, Kathy updated EXIF to a newer version, to retrieve the actual EXIF values stored in the PDF. And Kathy and Dr Bainbridge came up with a new option that I added called apply_join_before_split_to_metafields that's a regex which can list the metadata fields to apply the join_before_split to and whcih previously always got applied to all metadata fields. Now it's applied to any *Keywords metafields by default, as that's the metafield we have experience of that behaves differently to the others, as it stores by word instead of phrases. Tested on Diego's sample PDF. Diego has double-checked it to works on his sample PDF too, setting the split char to ; and turning on the join_before_split and leaving apply_join_before_split_to_metafields at its default of .*Keywords. File changes are strings.properties for the tooltip, the plugin introducing the option and working with it and Kathy's EXIF updates affecting cpan/File and cpan/Image.

File size: 5.3 KB
Line 
1#------------------------------------------------------------------------------
2# File: Motorola.pm
3#
4# Description: Read Motorola meta information
5#
6# Revisions: 2015/10/29 - P. Harvey Created
7#
8# References: 1) Neal Krawetz private communication
9#------------------------------------------------------------------------------
10
11package Image::ExifTool::Motorola;
12
13use strict;
14use vars qw($VERSION);
15use Image::ExifTool::Exif;
16
17$VERSION = '1.01';
18
19# Motorola makernotes tags (ref PH)
20%Image::ExifTool::Motorola::Main = (
21 WRITE_PROC => \&Image::ExifTool::Exif::WriteExif,
22 CHECK_PROC => \&Image::ExifTool::Exif::CheckExif,
23 GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
24 WRITABLE => 1,
25 # 0x54e0 - int8u: 1
26 # 0x54f0 - float
27 0x5500 => { Name => 'BuildNumber', Writable => 'string' }, #1 (eg. 'MPJ24.139-23.4')
28 0x5501 => { Name => 'SerialNumber', Writable => 'string' }, #1 (eg. 'ZY2238TJ4V')
29 # 0x5502 - int8u
30 # 0x5503 - int8u
31 # 0x5510 - int8u: 0,1
32 # 0x5511 - int32u (3 of these tags for some cameras)
33 # 0x5512 - int32u
34 # 0x5520 - int16s
35 # 0x5530 - string: 'continuous-picture','auto','continuous-video'
36 # 0x5540 - int8u: 95
37 # 0x5550 - int8u: 85,90
38 # 0x5560 - string: 'auto'
39 # 0x5570 - string: 'auto','auto-hdr'
40 # 0x5580 - int32s: 9000,14949,15000,24000
41 # 0x5590 - int32s: 30000
42 # 0x55a0 - int32s: 960,1280,1440
43 # 0x55b0 - int32s: 720,960,1080
44 # 0x55c0 - int32s: 30
45 # 0x55d0 - string: 'yuv420sp'
46 # 0x55e0-0x55e9 - int16u
47 # 0x55f0 - int8u: 10
48 # 0x55f1 - int8u: 13
49 # 0x55f2-0x55f5 - int16u[130]
50 # 0x5600 - int8u: 0,16
51 # 0x5601 - int16u[16]
52 # 0x5602 - int32u[3,50]
53 # 0x5603 - int32u: 0
54 # 0x6400 - string: 'AUTO','ON','OFF'
55 # 0x6401 - string: 'HDR'
56 # 0x6410 - string: 'NO','YES'
57 # 0x6420 - int32s: 0 (only exists in HDR images?)
58 # 0x6430 - float
59 # 0x6431 - int8u: 0,1
60 # 0x6432 - int8u: 0,79,100
61 # 0x6433 - int8u: 0,1
62 # 0x6434 - int8u: 0,65,100
63 # 0x6435 - int8u: 1,6,24
64 # 0x6436 - int8u: 55,60
65 # 0x6437 - int8u: 30,35,40
66 # 0x6438 - int8u: 24,40
67 # 0x6439 - int8u: 15,50
68 # 0x643a - int8u: 0,20
69 # 0x643b - string: '2,8,-4','2,10,-4',''
70 # 0x643c - int32s
71 # 0x643d - float
72 # 0x6440 - int8u[N]: 0's and 1's
73 # 0x6441 - int8u[N]
74 # 0x6442,0x6443 - int8u[N]: 0's and 1's
75 # 0x644d - string: 'YES'
76 # 0x644f - float
77 # 0x6450 - float
78 # 0x6451 - float: 0.699999988079071
79 # 0x6452 - int8u: 1
80 # 0x6470 - string: 'AUTO'
81 # 0x6471 - int8u: 1
82 # 0x6473 - int8u: 24
83 # 0x6474 - int8u: 10
84 # 0x6475 - int32u[24]
85 # 0x6476 - int32u: 2
86 # 0x6490 - int8u: 0
87 # 0x64c0 - int32s: 0,2
88 # 0x64c1 - int32u: 1,4,64
89 # 0x64c2,0x64c3 - int32s
90 # 0x64c4 - int32s
91 # 0x64c5 - int32u
92 # 0x6500 - int8u: 1
93 # 0x6501 - string: 'Luma-Chroma Plane','Chroma only' or int8u: 0
94 # 0x6502 - string: 'Luma-Chroma Plane','Chroma only','' or int8u: 1,255
95 # 0x6504 - int32s
96 # 0x6530-0x6535 - int32s
97 # 0x6600-0x6605 - int8u
98 # 0x6606 - string: 'D50','TL84','5000' - illuminant? color temperature?
99 # 0x6607 - string: 'D50g','D65','3000' - illuminant? color temperature?
100 # 0x6608 - string: 'A'
101 # 0x6609-0x660e - float
102 # 0x660f - int12u
103 # 0x6612-0x661b - int16u
104 # 0x661d - int16u
105 # 0x661e-0x6635 - float
106 # 0x6637 - int8u[212]
107 # 0x6640,0x6641 - int8u
108 # 0x6642-0x6649 - int16u
109 # 0x664e - in8u
110 # 0x664f-0x6652 - int16u
111 # 0x6653 - string: 'QC','AL'
112 # 0x6654-0x6656 - int16u
113 # 0x665d - int8u: 0
114 0x665e => { Name => 'Sensor', Writable => 'string' }, # (eg. 'BACK,IMX230')
115 # 0x6700 - string: eg. 'eac040d0','333e1721','001b7b3a','000000000005040f'
116 # 0x6701 - string: eg. '14048001',940140230','940140190'
117 # 0x6702 - string: '0L','1L','0S','3S','32','33,'42'
118 # 0x6703 - string: 'PR','SEG','LIG','LI','SHV','SH','SO'
119 # 0x6704 - string: 'DO','GX1','GZ0','GZ1','GX2','VI','VI1','VI2','GU',''
120 0x6705 => { Name => 'ManufactureDate', Writable => 'string' }, # (NC, eg. '03Jun2015')
121 # 0x6706 - string: eg. '30454e4e','42%','01%','01','1','904c2ca2'
122 # 0x6707 - string: eg. '1','25a2ca16','002371e1','69'
123 # 0x6708-0x670c - string or int16u (string may be firmware revision)
124 # 0x6800 - int32u: 1,2
125 # 0x6801,0x6802 - float
126 # 0x6803 - int16u
127 # 0x6804,0x6805 - float
128 # 0x6806 - int16u,int32s
129 # 0x6807 - int32s,int32u[3]
130 # 0x6808 - int32u,int32u[3]
131 # 0x6809,0x680a - float[3]
132 # 0x680d - int8u: 0
133 # 0x680e - float: 0
134 # 0x7000 - int8u: 0,2
135 # 0x7001,0x7002 - int16s
136 # 0x7003-0x7005 - int16u
137 # 0x7100 - string: '0-7'
138 # 0x7101 - string: '4-7','0-7'
139 # 0x7102 - string: '0-3',''
140 # 0x7103,0x7104 - string: comma-separated lists of numbers
141);
142
1431; # end
144
145__END__
146
147=head1 NAME
148
149Image::ExifTool::Motorola - Read Motorola meta information
150
151=head1 SYNOPSIS
152
153This module is loaded automatically by Image::ExifTool when required.
154
155=head1 DESCRIPTION
156
157This module contains the definitions to read meta information from Motorola
158cell phone images.
159
160=head1 AUTHOR
161
162Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
163
164This library is free software; you can redistribute it and/or modify it
165under the same terms as Perl itself.
166
167=head1 SEE ALSO
168
169L<Image::ExifTool::TagNames/Motorola Tags>,
170L<Image::ExifTool(3pm)|Image::ExifTool>
171
172=cut
Note: See TracBrowser for help on using the repository browser.