# ExifTool Version History

Nov. 25/04 - Version 3.94

- Patched problem with reading XMP data on Debian systems (suspected Perl bug)
- Put lib directory first in exiftool include list to take precidence over installed versions
- Continue trying to parse JPEG image after an unrecognized APP1 segment

Nov. 24/04 - Version 3.93

- Final round of ICC_Profile updates
- Increase precision of extracted rational values
- Internal Changes:
  - Build in better support for all data formats
  - Standardize data format names
  - Clean up and streamline data read routine

Nov. 22/04 - Version 3.92

- Fixed problem with -p option when multiple files are specified
- Enhancements to ICC_Profile information, including extracting information from profile header
- Subdivide ICC_Profile group in family 1
- Added Minolta ImageStabilization tag

Nov. 20/04 - Version 3.91

- Fixed problem where some tags were not extracted properly from Canon CR2 files
- Internal Changes:
  - Cleaned up and simplified pointer calculations and dirInfo members

Nov. 20/04 - Version 3.90

- Extract information from ICC Profiles
- Extract undocumented IFD0 Photoshop tags
- Added support for Minolta RAW (MRW) file format
- Added support for Konica-Minolta cameras
- Improved decoding for Minolta maker notes
- Extract (the sometimes misleading) EXIF WhiteBalance tag even if WhiteBalance was extracted from the maker notes if the Duplicates option is set. (Previously it was only extracted as an Unknown tag in this case.)
- API Changes:
  - Return list of all tags in image if GetFoundTags() or GetTagList() are called before ImageInfo() or GetInfo()

Nov. 15/04 - Version 3.85

- Extract a couple more Photoshop tags (including PhotoshopQuality)
- All XMP lists now comma separated (previously, 'alt' lists were separated by '|')
- API Changes:
  - GetValue() now returns reference to array if values form a list and ValueConv is specified

Nov. 12/04 - Version 3.84

- Added test of GetTagID()
- Fixed bug in GetTagID() which was causing special tags to get overwritten

Nov. 12/04 - Version 3.83

- Added -D and -H command line options
- API Changes:
  - Added GetTagID()

Nov. 11/04 - Version 3.82

- Improved diagnostic output for failed tests in installation

Nov. 11/04 - Version 3.81

- Updated Olympus module to also support Epson cameras
- Moved MakerNotes code into separate module
- Added tests for Sony and Unknown maker notes

Nov. 10/04 - Version 3.80

- Added support for Panasonic/Leica cameras
- Updated Pentax module to also support Asahi cameras
- Decode a couple more Minolta camera model types

Nov. 4/04 - Version 3.74

- Properly localize $_ in public Image::ExifTool subroutines

Nov. 3/04 - Version 3.73

- Changes to tests to avoid false failures on MSWin32-x86-multi-thread 4.0

Nov. 1/04 - Version 3.72

- Fixed minor bug in generation of family 1 XMP group names
- Changes to Photoshop family 2 groups

Oct. 30/04 - Version 3.71

- Switched group families 0 and 1 so the general location is now the default
- Fixed bug when sorting by order of group for any family other than 0
- Added test 17 to ExifTool.t

Oct. 29/04 - Version 3.70

- Major improvements to XMP parsing
- Divided XMP group in family 0 based on the XMP namespace prefix
- Changed a few long tables to binary type
- Recognize some new YCbCrSubSampling values
- Display DNG LocalizedCameraModel in plain text
- Patched problem in FileSource reported by Sigma cameras
- Added information about tag format to verbose hex dump

Oct. 22/04 - Version 3.61

- Added support for DNG file format
- Added and updated a number of EXIF tags for FAX and other uncommon images
- Added Photoshop URL tag
- Attempt to extract image from files with unrecognized extensions assuming TIFF format
- Added "Image format error" if the image type is recognized but the format is bad
- Changed "Unknown file type" error to "Unknown image type"
- Moved POD documentation into separate .pod files
- Started referencing sources for tag definitions in the source code

Oct. 1/04 - Version 3.60

- Changed group family 0 to divide EXIF group into individual IFD groups
- Fixed typos in some Casio tag names
- API Changes:
  - Changed name of File::RandomAccessFile to File::RandomAccess
  - Changed default setting of Duplicates to 1

Sept. 21/04 - Version 3.51

- Improvements to interpretation of Nikon D70 ISO settings

Sept. 16/04 - Version 3.50

- Fixed problem with duplicate tags showing up without the -a option
- Changed Nikon DataDump to a binary type
- Added D70Boring shortcut

Sept. 14/04 - Version 3.49

- Changed installation to also install the 'exiftool' script

Sept. 13/04 - Version 3.48

- Changed UserComment to skip first 8 bytes since the comments come after an 8 byte character code

Sept. 10/04 - Version 3.47

- Added support for second type of Casio maker notes (MakerNoteCasio2)

Sept. 1/04 - Version 3.46

- Fixed minor bug in PrintConv of FileNumber for CanonRaw files

June 3/04 - Version 3.45

- Recognize Canon 1D Mk II raw files (.CR2)
  (Note: Not properly decoding maker notes from these files yet)

May 28/04 - Version 3.44

- Improved validity check of Sony maker notes

May 18/04 - Version 3.43

- A couple more changes to the Nikon maker notes

May 17/04 - Version 3.42

- Additions to Nikon maker notes for values derived from D70

Apr. 28/04 - Version 3.41

- Fixed some errors when running on older Perl versions

Apr. 7/04 - Version 3.40

- Try to extract data from unrecognized maker notes (assuming standard EXIF format)
- Added tests for different maker notes

Apr. 6/04 - Version 3.37

- Added support for Sigma maker notes
- Remember to add new files to MANIFEST so they get included in release. Doh.

Apr. 6/04 - Version 3.36

- Added support for Sanyo and Minolta maker notes
- Added skeleton for interpeting Sony maker notes
- Interpret Pentax PrintIM

Apr. 6/04 - Version 3.35

- Added support for Nikon PrintIM
- Changed names of duplicate EXIF tags

Apr. 5/04 - Version 3.34

- Added all missing tag definitions from TIFF 6 standard
- Added a few more EXIF tag definitions
- Interpret PrintIM IFD
- Fix interpretation of Interoperability IFD
- Fixed potential endless loop bug introduced in version 3.33

Apr. 5/04 - Version 3.33

- Parse SubIFD of Nikon NEF file (now extracts raw image size and thumbnail image)

Apr. 2/04 - Version 3.32

- Changes to some Nikon tag names
- Added Nikon Saturation
- Documentation improvements

Mar. 31/04 - Version 3.31

- Now recognizes NEF (Nikon Electronic image Format) files

Mar. 29/04 - Version 3.30

- Removed -w option
- Fixed problem with some XMP tags being put in the EXIF group
- More minor speed improvements
- API Changes:
  - GetDescription() now requires an ExifTool object reference
  - Removed WarnDuplicateDescriptions()

Mar. 26/04 - Version 3.27

- Optimized a few routines to speed things up a bit
- API Changes:
  - Changed GetDescription() documention to indicate it is called with an ExifTool object (this is still optional, but will be manditory with the next version)

Mar. 25/04 - Version 3.26

- Don't generate warning if end of IPTC block is padded with nulls

Mar. 19/04 - Version 3.25

- Fixed problem with 'Input' sort order

Mar. 19/04 - Version 3.24

- Only return PreviewImage if it is a valid JPG (otherwise set 'Warning')

Mar. 16/04 - Version 3.23

- API Changes:
  - Added GetGroups()
  - GetGroup() now returns group names for all families if used in list context and family not specified.

Mar. 12/04 - Version 3.22

- API Changes:
  - Changed GetInfo() to return list of tags like ImageInfo() if list reference provided
  - Fixed bug that caused GetInfo() to ignore specified tags

Mar. 11/04 - Version 3.21

- Fixed problem with Composite group in family 1
- Changed case of Exif to EXIF in family 1
- -group option now lists Composite group as it should
- Internal Changes:
  - Cleaned up handling of function arguments

Mar. 10/04 - Version 3.20

- Added -group option
- Added group families 1 and 2
- Can now specify excluded tags with leading '-' (replaces -x option)
- API Changes:
  - Added ClearOptions(), ExtractInfo(), GetInfo(), CombineInfo(), GetTagList() and GetAllGroups()
  - Removed IsVerbose() function (use Options('Verbose') instead)
  - Allow groups to be excluded by specifying leading '-' on group name
  - ImageInfo() and GetInfo() now use specified group order to set tag precidence if Duplicates option is not set
  - Change default value of Duplicates option back to 0

Mar. 1/04 - Version 3.15

- Changed format of all date and time tags to EXIF standard
- Added some composite date/time tags
- Fixed date formatting so -d option should now work with all combined date/time tags
- Other minor changes to GPS information
- Improvements to TIFF processing
- Set value to "Undefined" if PrintConv evaluates to undefined value
- Added -G option
- API changes:
  - Changed all option names: shortened and changed to mixed case (sorry!)
- Internal changes:
  - Standardized arguments to all processing procedures
  - Made call to processing procedure more automatic
  - Removed TABLE_TYPE tag and added PROCESS_PROC
  - Added ProcessTagTable() member function

Feb. 27/04 - Version 3.14

- Added GPS tag conversions and GPS test
- Values that can't be converted now show up simply as "Unknown (X)"

Feb. 26/04 - Version 3.13

- Print out errors from exiftool script (since Image::ExifTool no longer prints them)
- Added more tests
- Failed tests now leave ".failed" file in "t" directory for post mortem

Feb. 25/04 - Version 3.12

- Moved all image-related warnings to new Warning tag

Feb. 25/04 - Version 3.11

- Added GeoTiff support
- Added -x option
- Improvements to documentation
- Improve XMP parsing for 'Bag' elements
- Capitalize first letter of XMP tag descriptions
- Patch problem with APP13 resource written by older Photoshop versions
- API changes:
  - Added EXCLUDE and GROUP# options
  - Change default value of SAVE_DUPLICATES option to 1

Feb. 20/04 - Version 3.10

- Restructuring only -- the behaviour of the exiftool script was not changed
- Moved html documentation to new html directory
- API changes:
  - Conform to standard Perl module mechanics:
    - Changed ExifTool package name to Image::ExifTool
    - Added Makefile.PL and other standard files
    - Added Perl pod documentation
    - Added standard test files
    - Moved modules into lib directory
    - Changed "TagTables" directory name to "ExifTool"
  - Added extra parameter in new RandomAccessFile

Feb. 20/04 - Version 3.05

- Fixed problem where output files (-o) weren't written if -p option used

Feb. 19/04 - Version 3.04

- Added -U option to allow display of unknown values in Canon binary data blocks
- Made unknown tag names more specific when -u or -U option used
- Added RawData and DecoderTable tags (for Canon RAW file)

Feb. 17/04 - Version 3.03

- Fixed RandomAccessFile package name (should have been File::RandomAccessFile)
- Added IxusAFPoint tag to Canon maker notes
- Avoid scanning past end of Canon binary data blocks
- API changes:
  - GetFoundTags() and GetRequestedTags() now return list instead of list reference

Feb. 16/04 - Version 3.02

- Improved handling of Pentax maker notes

Feb. 15/04 - Version 3.01

- API changes:
  - Added GetValue() function
  - Completed API documentation

Feb. 13/04 - Version 3.00

- Removed -all option (it is now the default -- specify -common for previous default behaviour)
- Added -a option to allow printout of duplicate tag values
- API changes:
  - I am finally happy with the API, so future major changes are less likely (hence the major version number)
  - No longer return ARRAY reference for list of tags
    (Instead, tag values are joined in a comma separated list if tag 'List' flag is set)
  - Added SAVE_DUPLICATES option
  - Added BuildCompositeTags() to EXPORT_OK list
  - GetFoundTags() now sorts tags in specified order
  - GetDescriptions() longer returns undef if the description doesn't exist

Feb. 12/04 - Version 2.71

- Still more playing with Pentax maker notes
- More API changes:
  - Added RandomAccessFile.pm
  - All image file i/o now done through a RandomAccessFile object
    --> allows proper piping and use of string i/o
  - Allow scalar reference to be passed to ImageInfo() (for string i/o)

Feb. 11/04 - Version 2.70

- More tweaking of Pentax maker notes
- Changed API to be more object oriented:
  - Removed SetVerbose(), ExtractUnknown(), SetDateFormat(), EnablePrintConversion(), EnableCompositeTags()
  - Added Options() to replace above functions
  - Changed WarnDuplicateTags() to WarnDuplicateDescriptions()
  - Added GetFoundTags() and GetRequestedTags()
  - Many functions now take ExifTool object reference as first argument
  - ImageInfo() no longer returns reference to ExifTool object when used in list context (you have to use "new ExifTool" and the OO form of ImageInfo() if you want the object)

Feb. 10/04 - Version 2.62

- Added -u option to allow display of unknown tags
- Major changes to Pentax maker notes (still needs work)

Feb. 09/04 - Version 2.61

- Allow file reference to be passed to ImageInfo()
- Allow file to be read from standard input by specifying "-" as file name
- Add FileType tag

Feb. 07/04 - Version 2.60

- Improve IPTC parsing and add support for more IPTC data types
- Read Photoshop APP13 records properly
- Added -g option
- Move shortcuts into separate module
- Changes to API:
  - Removed LoadAllTables() and added GetAllTags()
  - Removed GetDescriptions() and added GetDescription()
  - Changed GetShortcuts() to return a list
  - Added tag groups and GetGroup() function
  - Return object data from ImageInfo() for use in GetGroup()

Jan. 30/04 - Version 2.51

- Speed up JPG reading code
- API no longer returns references to image-specific static data
- Added ExifToolVersion tag

Jan. 29/04 - Version 2.50

- Changed API to return binary data as SCALAR reference and list of values as ARRAY reference
- Attempt to make case of tag descriptions more consistent

Jan. 28/04 - Version 2.41

- Scan photoshop JPG 0xe1 garbage for possible XMP information

Jan. 27/04 - Version 2.40

- Improved handling of XMP data
- Changed output format and added -l option

Jan. 21/04 - Version 2.36

- Don't output trailing linefeed when -b option used

Jan. 19/04 - Version 2.35

- Changes to verbose output
- Added TagTables::CanonRaw::CleanRaw() as an API utility function

Jan. 16/04 - Version 2.34

- Added 'Validate' check for Canon data fields
- Changed ScaleFactor35efl to use FocalLengthIn35mmFormat if available

Jan. 15/04 - Version 2.33

- Added ScaleFactor35efl, FocalLength35efl, Lens35efl
- Allow Composite tags to Require/Desire each other
- Changed FlashType to use FlashBits instead of CanonFlashMode

Jan. 13/04 - Version 2.32

- Added -d (date format) option
- Added -p (print format file) option

Jan. 9/04 - Version 2.31

- Exif WhiteBalance no longer overrides maker-specific WhiteBalance

Jan. 8/04 - Version 2.30

- Added support for IPTC format information

Jan. 6/04 - Version 2.25

- Fixed problem with ImageInfo() function prototype
- Fixed printout of JpgFromRaw message (doesn't effect JPG extraction)
- Set output files to binmode (including STDOUT) if -b option used

Jan. 1/04 - Version 2.24

- Fixed -list option to show all available tag names

Dec. 18/03 - Version 2.23

- Changed "Disable" routines to "Enable"

Dec. 17/03 - Version 2.22

- Fixed make/model tags which I broke with a recent change
- Removed null terminator from returned strings

Dec. 16/03 - Version 2.21

- Fixed problem with decoding some Nikon maker notes
- General improvements and tweaks to the code

Dec. 14/03 - Version 2.20

- Now extracts preview image from 300D JPG files (PreviewImage)
- Changed ThumbnailData tag name to ThumbnailImage

Dec. 12/03 - Version 2.10

- ExifTool::ImageInfo now returns reference to hash instead of hash

Dec. 10/03 - Version 2.01

- Minor fixes for reading of RAW files

Dec. 09/03 - Version 2.00

- Added support Olympus, Casio and Nikon cameras
- Now recognized GPS information
- Moved config information to TagTables modules
- Restructured API

Dec. 05/03 - Version 1.72

- Changes to composite Aperture and ShutterSpeed decisions

Dec. 05/03 - Version 1.71

- Read 10D Custom functions from CRW file too (thanks dpophyte)

Dec. 05/03 - Version 1.70

- Added custom functions for 10D and 1D

Dec. 04/03 - Version 1.62

- Decode known flash bits

Dec. 04/03 - Version 1.61

- Override ShutterSpeed with BulbDuration if available
- Change -s option to add tab-separated list

Dec. 03/03 - Version 1.60

- Big improvements in reading Canon RAW files

Nov. 29/03 - Version 1.50

- Added ability to extract JPG from RAW
- Added ExifData tag to allow entire EXIF block to be dumped

Nov. 26/03 - Version 1.40

- Split up config files to speed things up
- Added ability to extract binary data
- Added ThumbnailData tag (to allow extracting JPG thumbnails)

Nov. 25/03 - Version 1.30

- Added experimental Canon RAW file support

Nov. 22/03 - Version 1.20

- Now reads TIFF files too

Nov. 20/03 - Version 1.12

- Don't translate PhotoShop Brightness, etc

Nov. 20/03 - Version 1.11

- Attempt to fix problem on hp
- clean up code a bit
- added '-ver' command-line option

Nov. 20/03 - Version 1.10

- Added support for XMP format

Nov. 19/03 - Version 1.00

- Initial release