source: gsdl/trunk/perllib/cpan/Image/ExifTool/README@ 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: 32.9 KB
Line 
1--------------------------------------------------------------------------------
2File: Image/ExifTool/README
3
4Description: ExifTool support modules documentation
5
6The ExifTool support modules are loaded by ExifTool to interpret various formats
7of meta information.
8
9The tables in these files are used as lookups based on the tag ID values. The
10hash keys are the tag IDs (in decimal or hexadecimal if the ID is numerical as
11with EXIF tables, or the tag name if the ID is ASCII as with XMP tables). In
12the case of a BinaryData table, the IDs are numerical and specify offsets into
13the binary data block. The corresponding hash value provides information about
14the tag (explained later).
15
16Twenty-one special keys (PROCESS_PROC, WRITE_PROC, CHECK_PROC, GROUPS, FORMAT,
17FIRST_ENTRY, TAG_PREFIX, PRINT_CONV, DID_TAG_ID, WRITABLE, NOTES, IS_OFFSET,
18EXTRACT_UNKNOWN, NAMESPACE, PREFERRED, PARENT, PRIORITY, WRITE_GROUP, LANG_INFO,
19VARS and DATAMEMBER) are used to provide additional information about a table.
20The special keys have names that are all capitalized to avoid possible conflicts
21with tag keys. Below is an explanation of the meaning of each special key:
22
23 PROCESS_PROC : Reference to a function used to process the directory for this
24 table. If PROCESS_PROC is not given, \&Image::ExifTool::Exif::ProcessExif is
25 assumed. If PROCESS_PROC is set to 0, the tags are not added to the lookup.
26 The process proc returns 1 on success or 0 on failure, and takes 3 arguments:
27 0) reference to the ExifTool object, 1) reference to a directory information
28 hash (with the following entries:), 2) reference to the tag table hash.
29
30 Name - Tag name for this SubDirectory entry (for verbose messages)
31 Base - Base offset for pointers from start of file
32 DataPt - Reference to data block containing directory (may be undef)
33 DataPos - Position of data block within file (relative to Base)
34 DataLen - Length of data block in bytes
35 DirStart - Offset to start of directory from start of data block
36 DirLen - Length of directory data within block
37 DirName - Name of this directory
38 OutFile - Output file or scalar reference
39 Parent - Name of parent directory
40 RAF - Reference to File::RandomAccess object if available
41 NewDataPos - File position of new data (write proc only)
42 Fixup - Reference to hash of offset fixups (used in EXIF writing only)
43 FixBase - Flag set to attempt to fix base offsets
44 FixOffsets - Evaluated for each value pointer to patch maker note offsets
45 LastIFD - Used by WriteExif() to return offset of last IFD written
46 ImageData - Used by WriteExif() to avoid buffering large image data blocks
47
48 WRITE_PROC : Reference to a function to write all new tags for this directory.
49 The write proc returns the new directory data or undefined on error. It takes
50 the same arguments as the process proc above except that the second argument
51 (reference to directory information hash) is optional, and if specified gives
52 information about the source directory for tags to be copied to the output.
53
54 CHECK_PROC : Reference to a function which validates Raw values for writing.
55 The function takes three arguments: 0) ExifTool object reference, 1) tagInfo
56 reference, 2) value reference, and returns undefined (and possibly modifies
57 the input value) if successful, or an error message if there was a format
58 problem.
59
60 GROUPS : A hash lookup for the default group names for all entries in this
61 table. If not specified, the Group 0 and 1 names will be set automatically
62 according to the name of the module.
63
64 FORMAT : Specifies the default tag Format and corresponding pointer increment
65 for entries in a BinaryData table, and defaults to 'int8u' if not specified.
66 The possible values of FORMAT are:
67
68 int8s - Signed 8-bit integer (EXIF 'SBYTE')
69 int8u - Unsigned 8-bit integer (EXIF 'BYTE')
70 int16s - Signed 16-bit integer (EXIF 'SSHORT')
71 int16u - Unsigned 16-bit integer (EXIF 'SHORT')
72 int32s - Signed 32-bit integer (EXIF 'SLONG')
73 int32u - Unsigned 32-bit integer (EXIF 'LONG')
74 int64s - Signed 64-bit integer (BigTIFF 'SLONG8')
75 int64u - Unsigned 64-bit integer (BigTIFF 'LONG8')
76 rational32s - Rational consisting of 2 int16s values
77 rational32u - Rational consisting of 2 int16u values
78 rational64s - Rational consisting of 2 int32s values (EXIF 'SRATIONAL')
79 rational64u - Rational consisting of 2 int32u values (EXIF 'RATIONAL')
80 fixed16s - Signed 16-bit fixed point value
81 fixed16u - Unsigned 16-bit fixed point value
82 fixed32s - Signed 32-bit fixed point value
83 fixed32u - Unsigned 32-bit fixed point value
84 float - 32-bit IEEE floating point value (EXIF 'FLOAT')
85 double - 64-bit IEEE floating point value (EXIF 'DOUBLE')
86 extended - 80-bit extended floating float
87 ifd - Unsigned 32-bit integer sub-IFD pointer (EXIF 'IFD')
88 ifd8 - Unsigned 64-bit integer sub-IFD pointer (BigTIFF 'IFD8')
89 string - Series of 8-bit ASCII characters (EXIF 'ASCII')
90 undef - Undefined-format binary data (EXIF 'UNDEFINED')
91 binary - Binary data
92
93 FIRST_ENTRY : Specifies the index for the first tag entry in a binary table.
94 This value is only used if the Unknown option is set to 2 or higher, and
95 allows the binary data to be scanned for unknown tag entries.
96
97 TAG_PREFIX : Prefix for names of unknown tags.
98
99 PRINT_CONV : Default print conversion tags where PrintConv isn't specified.
100
101 DID_TAG_ID : Used by GetTagID() as a flag to indicate that TagID's have been
102 defined for all tags in this table. This may be set in the table definition
103 to prevent GetTagID() from assigning TagID's.
104
105 WRITABLE : Indicates that all tags in this table are writable. This is the
106 same as setting the Writable flag for each individual tag in the table, except
107 for SubDirectory tags which are not made Writable.
108
109 NOTES : Notes to introduce the table in the TagNames documentation. Pod
110 formatting codes B<> and C<> may be used in this text.
111
112 IS_OFFSET : Reference to list of TagID's representing offsets for binary
113 data tables only. Not used for EXIF tables.
114
115 EXTRACT_UNKNOWN : Used in PDF tables to specify a directory where all unknown
116 tags should be extracted.
117
118 NAMESPACE : Namespace prefix for tags in the XMP table. If this isn't a
119 standard (pre-defined) namespace, then the URI must be defined as well. To do
120 this, the NAMESPACE value is a reference to either a list or a hash, where the
121 first element (or hash key) is the namespace prefix and and the second element
122 (or hash value) is the URI.
123
124 PREFERRED : Set to true if the tags in this table should always be added when
125 writing information. Overrides the order specified by SetNewGroups(). When
126 this feature is used, it may also be desireable to specify a preferred group
127 when calling InitWriteDirs() to write these tags; this avoids creating other
128 directories for tags which are already being creating in the preferred group.
129
130 PARENT : Used internally to store the parent table name of a user-defined tag
131 table so the appropriate module can be loaded as required.
132
133 PRIORITY : Default Priority for all tags in this table.
134
135 WRITE_GROUP : Default WriteGroup for all tags in the table.
136
137 LANG_INFO : Code reference to a routine which returns a reference to a
138 language-specific tag information hash. The routine takes two arguments: a
139 reference to the non-specific tagInfo hash, and the language code. Used only
140 in tables which support tag name language extensions (ie. MIE and XMP).
141
142 VARS : Hash used to store additional parameters. Individual modules may use
143 this to store any parameters they want. The following additional parameters
144 have been defined, and may be used by any module:
145
146 INDEX - Use "Index" instead of "Tag ID" for column heading in tag name docs.
147
148 NO_ID - Avoid printing "Tag ID" column in tag name documentation.
149
150 DATAMEMBER : BinaryData tables only. A reference to a list of tag ID's which
151 must be extracted as data members when writing.
152
153The remaining entries in a tag table are the tag IDs with their associated
154information. The information may exist in one of three forms: 1) A simple
155scalar which is the name of the tag, 2) A reference to a hash of information
156describing this tag, or 3) a reference to a list of hashes which contain
157Condition expressions allowing the appropriate hash to be selected to suit the
158conditions. The following is a description of possible hash entries. All
159entries are optional, except for the tag Name which is required if the tag ID is
160numerical.
161
162 Name : The tag name. Tag names need not be unique. If they aren't
163 unique, duplicate tags overwrite values of previous tags
164 unless the Duplicates option is set or the new tag has lower
165 Priority. With Duplicates set, to allow multiple tags with
166 the same name to exist in the tag information hash, the key of
167 the previous tag is changed to the form "TagName (N)", where N
168 starts at 1 and increments for subsequent duplicate tags. A
169 tag name should start with an uppercase letter, and contain
170 only the charcters in the set [A-Za-z0-9_-].
171
172 Description : A more readable description of tag name. If a tag doesn't
173 specify a Description, then the tag Name is used instead, with
174 spaces inserted between the words.
175
176 Notes : Notes for this tag in the HTML TagNames documentation.
177
178 Groups : Hash lookup for group names for this tag.
179
180 Format : Only valid for BinaryData, EXIF and IPTC tables. For a Binary
181 or EXIF table, this gives the format that is used to convert
182 the binary data, and is one of the FORMAT types specified
183 above. For BinaryData tables, the format may have a size in
184 trailing brackets which is a perl expression to be evaluated.
185 The expression may access any of the previous table entries
186 through a %val hash, or the data size via $size. For example,
187 'string[$val{3}]' defines a string with length given by the
188 table entry with tag index '3'. If not specified, the format
189 of an EXIF entry is taken from the EXIF information, and the
190 format of a BinaryData entry is taken from the FORMAT
191 specified for the table (or int8u if FORMAT is not specified).
192
193 Count : Used when writing EXIF information to specify the number
194 values to write, or the number of characters in a fixed-length
195 string. A value of -1 indicates that the count is variable
196 and should be determined by the number of values provided.
197 Note that this count that corresponds to the specified Format,
198 so if a different-sized Writable format is defined, the actual
199 count written to the file will be different.
200
201 Flags : Flags to specify characteristics for this tag. May be a
202 simple scalar flag name, a reference to a list of flag names,
203 or a reference to a hash of flag/value pairs. If not a hash
204 reference, the flag value is set to 1. Flags are expanded for
205 faster access at run time into members of the tagInfo hash,
206 and may be written directly as members if desired. The
207 available flag names are:
208
209 'Avoid' - avoid creating this tag if possible.
210
211 'Binary' - set to 1 for binary data. This has the same effect
212 as setting ValueConv to '\$val', but it it a bit cleaner and
213 avoids dummy ValueConvInv entries for writable tags. Has no
214 effect if ValueConv is defined for the tag.
215
216 'DataMember' - name of exiftool data member associated with
217 this tag if it should be stored as a special data member when
218 writing information. Necessary only if the value of the tag
219 affects other written information. Currently only used for
220 tags in EXIF tables.
221
222 'DataTag' - associated tag name containing data for offset or
223 byte count tags.
224
225 'Drop' - set to 1 for tags that should be excluded when
226 rebuilding maker notes when copying all tags.
227
228 'EntryBased' - set to 1 if the offset for this value is based
229 on the IFD entry position. This allows individual values to
230 be entry-based even though some others aren't (as with the
231 Casio PrintIM information).
232
233 'IsOffset' - flag set if the tag represents an offset to some
234 data, and causes value will be adjusted to an absolute file
235 offset. If set to 2, the offset base of the parent directory
236 is used even if the base changes for the current directory
237 (only some maker notes are this messed up).
238
239 'List' - indicates that duplicate entries of this tag are
240 allowed, and will be accumulated in a list. Note that for XMP
241 information, 3 different types of lists are supported and the
242 List value specifies the type: 'Bag', 'Seq' or 'Alt'.
243
244 'MakerNotes' - set if this tag is maker note data.
245
246 'NotIFD' - set for 'MakerNotes' tags only if the data is not
247 in standard EXIF IFD format.
248
249 'OffsetPair' - set if the tag represents half of an offset/
250 byte count pair. Data for these tags must be handled
251 separately. Value is the tagID for the paired tag.
252
253 'Permanent' - flag indicates that a tag is permanent, and
254 can't be added or deleted from the file. By default, all
255 MakerNotes tags are permanent unless otherwise specified.
256
257 'PrintHex' - specifies that unknown PrintConv values should
258 be printed in hex (ie. 'Unknown (0x0)')
259
260 'Priority' - gives the priority of this tag while reading. If
261 set to zero, this tag will not override the value of previous
262 tags with the same name. If the priority is greater than
263 zero, this tag won't be overridden by subsequent tags unless
264 their priority is equal to or greater than this priority. A
265 special feature is that Priority 0 tags are automatically
266 incremented to Priority 1 if they exist in the IFD of the full
267 resolution image (as determined by SubFileType).
268
269 'Protected' - bit mask to protect tags from writing:
270 Bit 0x01 indicates an 'unsafe' tag, which is not set via
271 SetNewValuesFromFile() unless specified explicitly.
272 Bit 0x02 indicates a 'protected' tag, which should not be set
273 directly by the user.
274
275 'SeparateTable' - set to list PrintConv values in a separate
276 table in the HTML documentation. Value is 1 for a table name
277 of 'Module TagName', or 'TAG' for 'Module TAG', or 'MODULE
278 TAG' to fully specify the table name.
279
280 'SetResourceName' - [Photoshop tags only] set to 1 to append
281 resource name to the extracted value (ie. 'VALUE/#NAME#/').
282 Also allows resource name to be appended when writing new
283 values. May be set to any value other than 1 for a default
284 resource name to use when writing if an appended name is not
285 provided.
286
287 'SubIFD' - used in writing to determine that the tag specifies
288 an offset to a sub-IFD. When this flag is set, the Group1
289 name gives the name of the IFD.
290
291 'Unknown' - this is an unknown tag (only extracted when the
292 Unknown option is set).
293
294 RawConv : Used to convert the Raw value at extraction time (while the
295 image file is still open, unlike ValueConv and PrintConv below
296 which are done later only if the value is requested). May be
297 a scalar expression using $val (the Raw tag value), $self (the
298 current ExifTool object) and $tag (the tag name), or a code
299 reference with $val and $self as arguments. For Composite
300 tags, $val is a reference to a hash of component tag names,
301 and @val may be used to access the Raw values of these tags.
302 The returned value may be a scalar which is used as the new
303 Raw value, a scalar reference to a binary data value, a hash
304 reference for Composite tags, an ARRAY reference for a list of
305 values, or undefined to indicate that the tag should be
306 ignored. Also, RawConv may generate Warning or Error tags,
307 while ValueConv and PrintConv may not. Note: RawConv should
308 only be used if necessary (in general, only if the tag may be
309 ignored). It is preferable to use ValueConv instead of
310 RawConv because ValueConv is only executed if the tag value is
311 requested, while RawConv is executed for all extracted tags.
312
313 ValueConv : Used to convert the Raw value to a useable form. May be a hash
314 reference to act as a lookup table, a scalar which is
315 evaluated as a Perl expression, or a code reference to a
316 subroutine. May also be a list reference, in which case the
317 value is split at whitespace into a list of values and each
318 value is converted by the associated entry in the ValueConv
319 list. If a hash reference is used and the Raw value doesn't
320 appear as one of the keys, then the converted value is set to
321 "Unknown (X)", where X is the Raw value (unless a special
322 'BITMASK' key exists, in which case the hash referenced by
323 'BITMASK' is used to decode individual value bits). In an
324 expression, $self is a reference to the current ExifTool
325 object, $val is the Raw value, and $tag is the tag name. The
326 subroutine takes 2 arguments: the Raw value and a reference to
327 the current ExifTool object. The expression or subroutine is
328 evaluated when and if the tag value is requested (ie. only
329 after all extraction is complete), so if necessary at this
330 time the values of all other tags are available via calls to
331 $self->GetValue("Tag","Raw"). (Note: In theory, types other
332 than "Raw" may be accessed, but they are slower and may lead
333 to cyclical dependencies so they should be avoided). When
334 evaluated, the expression or subroutine returns a scalar for
335 the converted value, or a scalar reference to a binary data
336 value (see the 'Binary' flag). The return value should always
337 be defined -- use RawConv instead to return undef if it is
338 necessary to test the value for validity, otherwise an undef
339 tag may hide a previously defined value when the Duplicates
340 option is not enabled. Composite tags which Require or Desire
341 other tags may access the ValueConv, PrintConv and Raw values
342 of these tags through the elements of the @val, @prt and @raw
343 lists respectively (only if there was no RawConv or returned a
344 hash reference). For these tags, $val may be used in an
345 expression to represent $val[0], and the first argument passed
346 for a code reference is a reference to @val. If ValueConv is
347 not specified, the Raw value is not converted.
348
349 PrintConv : This entry is similar to ValueConv above, except that it is
350 used to further convert the tag value to a human readable
351 form. It can be either a hash lookup, a scalar Perl
352 expression, a code reference or a list reference. In this
353 expression, $self, $val and $tag may be used as with
354 ValueConv, but if ValueConv was defined then $val is the
355 ValueConv value instead of the Raw value. The returned value
356 should always be defined. Note that the print conversion is
357 only done if the PrintConv option is enabled (which it is by
358 default), and if the result of the ValueConv is not a scalar
359 reference. If it is a list reference, then the converted
360 values are joined by '; ' in the output string.
361
362 RawConvInv : The inverse of RawConv. This should only be used in very rare
363 situations when the raw value can not be predetermined.
364 Unlike the other inverse conversions which are applied in
365 SetNewValue(), this conversion is applied in WriteInfo() as
366 the file is being written. This is important because it means
367 that FILE_TYPE and any DataMember tags ocurring before this
368 tag in the file are available. Beware that if the return
369 value is not defined, the tag will be deleted unless there is
370 specific logic to avoid this (currently, only EXIF and Binary
371 data directories handle this case).
372
373 ValueConvInv : The inverse of ValueConv. Only necessary for Writable tags
374 when ValueConv is specified (except WriteAlso tags). Note
375 that DataMember tags may NOT be used in the inverse
376 conversions because these conversions are done before the
377 input file is parsed. Instead, a Condition or RawConvInv must
378 be used.
379
380 PrintConvInv : The inverse of PrintConv. Only necessary if for Writable tags
381 when PrintConv is specified (unless WriteAlso is used).
382
383 Condition : If given, specifies scalar which is evaluated as a Perl
384 expression at extraction time to decide whether the tag is
385 valid. If used in a list of alternate tag definitions, the
386 first list entry with a true condition is taken. If no
387 condition exists, then a 'true' condition is assumed. The
388 expression may use $self to access the ExifTool object, and
389 $oldVal to access the previous Raw value of the tag (if it
390 exists). The first 48 bytes of the raw data value are
391 accessible through the reference $valPt for EXIF and Jpeg2000
392 tags only. EXIF tags may also reference the format string and
393 value count through $format and $count. Note that if the
394 value is writable and $valPt is used, the tag must have a
395 Format (unless 'undef' or 'string'), and a Count (unless 1 or
396 length of the 'undef' or 'string'), so the raw data may be
397 generated for evaluating the Condition.
398
399 Require : [Composite tags only] A hash reference specifying the tags
400 required to calculate the composite tag value. The hash
401 values are the names of the required tags, and the keys
402 specify the indices where the tag values are stored in the
403 @val list used in the ValueConv and/or PrintConv expression.
404 The composite value is only calculated if the values for all
405 Require'd tags are defined. Require and Desire tag names may
406 be prefixed by an optional group family 0 or 1 name followed
407 by a colon. Case IS significant. A special feature allows
408 a scalar tag name to be used instead of the hash reference
409 when only the 0th tag is defined. For example, the following
410 two definitions are equivalent:
411
412 Require => { 0 => 'XMP:Title' },
413 Require => 'XMP:Title',
414
415 Desire : [Composite tags only] This is the same as Require except that
416 the value is still calculated even if the specified tags don't
417 exist. Beware that the elements of @val, @prt and @raw may be
418 undefined for Desire'd tags. Both Require and Desire may
419 exist together, however be sure to specify unique keys for
420 each tag since they are used as indices into the @val, @prt
421 and @raw lists common to both Require'd and Desire'd tags.
422
423 Shift : [Writable tags only] Specifies type of shift to apply if this
424 value may be shifted. Set to 'Time' for shifting date/time
425 tags.
426
427 Writable : Indicates this tag can be written (or not written if value is
428 set to zero), and for EXIF-type tables gives format for
429 writing. Writable may be set to 1 for MakerNotes information
430 because the existing format is always used, however providing
431 a format is desireable because it is used in validating the
432 value. For EXIF tables, the Writable flag may be different
433 than the Format flag, in which case Format is used for
434 converting the binary value and Writable specifies the format
435 code written to the EXIF IFD. For SubDirectories in EXIF
436 information, this flag is only defined if the SubDirectory is
437 writable as a block, or if the SubDirectory can not be edited
438 (in which case Writable is set to 0).
439
440 WriteAlso : Used for writable tag to specify other tags to write when this
441 tag is written. The value is a hash reference. The hash keys
442 are the names of the tags to write, and the values are
443 evaluated to obtain the ValueConv values of each tag (or undef
444 to delete the tag). In the eval, $val may be used as the Raw
445 value of the parent tag. This will write Protected tags that
446 aren't directly writable (Protected bit 0x02 set).
447
448 WriteCheck : If given, specifies a scalar which is evaluated as a Perl
449 expression for a one-time validatation the value being
450 written. The expression has access to 3 variables: $val is
451 the value to be written, $self is the ExifTool object, and
452 $tagInfo is the tag information hash reference. It returns an
453 error string or undef if the value is good.
454
455 WriteCondition: [Writable EXIF tags only] Specifies a condition to be
456 evaluated before the tag can be written to a specific file.
457 The condition may use $self to reference the ExifTool object,
458 and returns true if it is OK for writing. Unlike WriteCheck
459 which is done only once when the new value is set, this
460 condition is evaluated before the information is written in
461 each file.
462
463 WriteGroup : [Required for writable EXIF tags] Specifies the IFD where the
464 information gets written by default.
465
466 OffsetPair : Used in EXIF table to specify the tagID for the corresponding
467 offset or length tag.
468
469 DataTag : Used in EXIF table to specify the tag name of the data
470 associated with offset/length tags.
471
472 Struct : [XMP tags only] Used by XMP writer code to specify name of XMP
473 structure so the PropertyPath can be determined.
474
475 Units : [MIE tags only] Reference to a list of valid units strings.
476 The default units are the first item in the list.
477
478 TagID : [reserved] This entry is used internally by GetTagID() to
479 cache tag ID numbers for speed.
480
481 Table : [reserved] Reference to parent tag table.
482
483 PropertyPath : [reserved] Used internally by XMP writer to save property path
484 name.
485
486 Module : [reserved] Used internally to store module name for writable
487 Composite tags.
488
489 LangCode : [reserved] Used internally to indicate language code for
490 alternate language tags (MIE and XMP only)
491
492 SubDirectory { If it exists, this specifies the start of a new subdirectory.
493 It contains a collection of variables which specify the type
494 and location of the subdirectory. These variables are
495 described below:
496
497 TagTable : Specifies the name of the tag table lookup for the new
498 subdirectory. If not specified, the parent tag table is used.
499
500 Start : The offset to the start of the subdirectory relative to the
501 current Base. This is a Perl expression which may use
502 $valuePtr to represent the location of the tag value in the
503 file, or $val for the value itself. If not specified, a Start
504 of '$valuePtr' is assumed.
505
506 OffsetPt : If specified, this is a Perl expression that gives the
507 position of a 32-bit word in the current directory that is
508 added to the Start position to get the position of the new
509 subdirectory. The expression should use the position of the
510 current tag ($valuePtr).
511
512 Base : This specifies the base offset for all pointers in the
513 subdirectory. This need not be specified if the offset is the
514 same as the current directory, which is normally the case.
515 May use $start to represent the subdirectory start location
516 relative to the current base. If this is defined, the
517 automatic validation of base offsets is disabled for maker
518 notes directories.
519
520 EntryBased : Flag indicating that the offsets are based on the indidual
521 directory entry position, so offsets are incremented by 12
522 times the corresponding entry index.
523
524 MaxSubdirs : Maximum number of subdirectories specified by the current tag
525 (if the tag specifies multiple values). If not specified, the
526 tag value ($val) is used as-is. If MaxSubdirs is specified,
527 then one subdirectory is parsed for each value found up to the
528 maximum number specified.
529
530 ByteOrder : Specifies byte ordering if different than than the rest of the
531 file. Must be either BigEndian, LittleEndian or Unknown. If
532 Unknown is specified, the byte order will be determined from
533 the directory count (however, this can not be done if OffsetPt
534 is specified).
535
536 Validate : If given, specifies Perl expression which is used to validate
537 the subdirectory data. The following variables may be used in
538 the expression: $val (value of the tag), $dirData (reference
539 to directory data), $subdirStart (offset to subdirectory
540 start) and $size (size of subdirectory).
541
542 ProcessProc: If given, specifies processing procedure used to decode this
543 subdirectory data. This overrides the default procedure
544 specified by PROCESS_PROC in the tag table.
545
546 DirName : Name of this subdirectory. If not specified, the name is
547 taken from the tag name. DirName is important because it is
548 used when writing to compare against names in the directory
549 map to determine which directories need to be edited.
550
551 FixBase : Flag set if base offsets should be fixed. Used to add a
552 constant to maker notes offsets to fix damage done by some
553 image editing utilities. (maker notes only)
554
555 FixOffsets : Expression to evaluate for each value pointer to patch
556 problems with some EXIF maker note offsets. May access the
557 following variables: $valuePtr, $valEnd, $size, $tagID and
558 $wFlag. May return undef when writing to ignore the entry.
559 }
560
561--------------------------------------------------------------------------------
Note: See TracBrowser for help on using the repository browser.