# ExifTool Version History

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