exiftool_vendored 12.08.0 → 12.09.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of exiftool_vendored might be problematic. Click here for more details.

@@ -35,7 +35,7 @@ use Image::ExifTool::Sony;
35
35
  use Image::ExifTool::Validate;
36
36
  use Image::ExifTool::MacOS;
37
37
 
38
- $VERSION = '3.38';
38
+ $VERSION = '3.39';
39
39
  @ISA = qw(Exporter);
40
40
 
41
41
  sub NumbersFirst($$);
@@ -1029,9 +1029,14 @@ TagID: foreach $tagID (@keys) {
1029
1029
  $note =~ s/(^[ \t]+|[ \t]+$)//mg;
1030
1030
  push @values, "($note)";
1031
1031
  }
1032
- if ($isXMP and lc $tagID ne lc $name) {
1033
- # add note about different XMP Tag ID
1034
- my $note = $$tagInfo{RootTagInfo} ? $tagID : "called $tagID by the spec";
1032
+ if ($isXMP and (lc $tagID ne lc $name or $$tagInfo{NotFlat})) {
1033
+ my $note;
1034
+ if ($$tagInfo{NotFlat}) {
1035
+ $note = 'NOT a flattened tag!';
1036
+ } else {
1037
+ # add note about different XMP Tag ID
1038
+ $note = $$tagInfo{RootTagInfo} ? $tagID : "called $tagID by the spec";
1039
+ }
1035
1040
  if ($$tagInfo{Notes}) {
1036
1041
  $values[-1] =~ s/^\(/($note; /;
1037
1042
  } else {
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
88
88
  sub ProcessExifInfo($$$);
89
89
  sub SwapWords($);
90
90
 
91
- $VERSION = '4.39';
91
+ $VERSION = '4.40';
92
92
 
93
93
  # Note: Removed 'USM' from 'L' lenses since it is redundant - PH
94
94
  # (or is it? Ref 32 shows 5 non-USM L-type lenses)
@@ -487,8 +487,9 @@ $VERSION = '4.39';
487
487
  368.7 => 'Sigma 85mm f/1.4 DG HSM | A', #IB (016)
488
488
  368.8 => 'Sigma 105mm f/1.4 DG HSM', #IB (A018)
489
489
  368.9 => 'Sigma 14-24mm f/2.8 DG HSM', #IB (A018)
490
- 368.10 => 'Sigma 35mm f/1.4 DG HSM | A', #PH (012)
491
- '368.10' => 'Sigma 70mm f/2.8 DG Macro', #IB (A018)
490
+ '368.10' => 'Sigma 35mm f/1.4 DG HSM | A', #PH (012)
491
+ '368.11' => 'Sigma 70mm f/2.8 DG Macro', #IB (A018)
492
+ '368.12' => 'Sigma 18-35mm f/1.8 DC HSM | A', #50
492
493
  # Note: LensType 488 (0x1e8) is reported as 232 (0xe8) in 7D CameraSettings
493
494
  488 => 'Canon EF-S 15-85mm f/3.5-5.6 IS USM', #PH
494
495
  489 => 'Canon EF 70-300mm f/4-5.6L IS USM', #Gerald Kapounek
@@ -932,6 +933,7 @@ $VERSION = '4.39';
932
933
  0x80000406 => 'EOS 6D Mark II', #IB/42
933
934
  0x80000408 => 'EOS 77D / 9000D',
934
935
  0x80000417 => 'EOS Rebel SL2 / 200D / Kiss X9', #IB/42
936
+ 0x80000421 => 'EOS R5', #PH
935
937
  0x80000422 => 'EOS Rebel T100 / 4000D / 3000D', #IB (3000D in China; Kiss? - PH)
936
938
  0x80000424 => 'EOS R', #IB
937
939
  0x80000428 => 'EOS-1D X Mark III', #IB
@@ -940,6 +942,7 @@ $VERSION = '4.39';
940
942
  0x80000435 => 'EOS Rebel T8i / 850D / X10i', #JR/PH
941
943
  0x80000436 => 'EOS SL3 / 250D / Kiss X10', #25
942
944
  0x80000437 => 'EOS 90D', #IB
945
+ 0x80000453 => 'EOS R6', #PH
943
946
  0x80000520 => 'EOS D2000C', #IB
944
947
  0x80000560 => 'EOS D6000C', #PH (guess)
945
948
  );
@@ -1896,6 +1899,11 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
1896
1899
  Name => 'ColorData9',
1897
1900
  SubDirectory => { TagTable => 'Image::ExifTool::Canon::ColorData9' },
1898
1901
  },
1902
+ { # (int16u[3656]) - R5/R6 ref PH
1903
+ Condition => '$count == 3656',
1904
+ Name => 'ColorData10',
1905
+ SubDirectory => { TagTable => 'Image::ExifTool::Canon::ColorData10' },
1906
+ },
1899
1907
  {
1900
1908
  Name => 'ColorDataUnknown',
1901
1909
  SubDirectory => { TagTable => 'Image::ExifTool::Canon::ColorDataUnknown' },
@@ -5675,6 +5683,13 @@ my %ciMaxFocal = (
5675
5683
  ValueConv => 'unpack("H*",$val)',
5676
5684
  ValueConvInv => 'length($val) < 10 and $val = 0 x (10-length($val)) . $val; pack("H*",$val)',
5677
5685
  },
5686
+ 0x5c1 => {
5687
+ Name => 'FirmwareVersion',
5688
+ Format => 'string[6]',
5689
+ Writable => 0,
5690
+ Condition => '$$valPt =~ /^\d\.\d\.\d\0/',
5691
+ Notes => 'M50', # (firmware 1.0.0)
5692
+ },
5678
5693
  );
5679
5694
 
5680
5695
  # Picture Style information for various cameras (ref 48)
@@ -8062,7 +8077,6 @@ my %ciMaxFocal = (
8062
8077
  0x149 => { #IB
8063
8078
  Name => 'PerChannelBlackLevel',
8064
8079
  Format => 'int16u[4]',
8065
- Notes => '1300D',
8066
8080
  },
8067
8081
  # 0x318 - PerChannelBlackLevel again (ref IB)
8068
8082
  0x31c => { #IB
@@ -8080,6 +8094,126 @@ my %ciMaxFocal = (
8080
8094
  },
8081
8095
  );
8082
8096
 
8097
+ # Color data (MakerNotes tag 0x4001, count=3656) (same as ColorData9 but shifted up by 0x0e, ref PH)
8098
+ %Image::ExifTool::Canon::ColorData10 = (
8099
+ %binaryDataAttrs,
8100
+ FORMAT => 'int16s',
8101
+ FIRST_ENTRY => 0,
8102
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
8103
+ DATAMEMBER => [ 0 ],
8104
+ IS_SUBDIR => [ 0x118 ],
8105
+ 0x00 => {
8106
+ Name => 'ColorDataVersion',
8107
+ DataMember => 'ColorDataVersion',
8108
+ RawConv => '$$self{ColorDataVersion} = $val',
8109
+ PrintConv => {
8110
+ 33 => '33 (R5/R6)',
8111
+ },
8112
+ },
8113
+ 0x55 => { Name => 'WB_RGGBLevelsAsShot', Format => 'int16s[4]' },
8114
+ 0x59 => 'ColorTempAsShot',
8115
+ 0x5a => { Name => 'WB_RGGBLevelsAuto', Format => 'int16s[4]' },
8116
+ 0x5e => 'ColorTempAuto',
8117
+ 0x5f => { Name => 'WB_RGGBLevelsMeasured', Format => 'int16s[4]' },
8118
+ 0x63 => 'ColorTempMeasured',
8119
+ 0x64 => { Name => 'WB_RGGBLevelsUnknown', Format => 'int16s[4]', Unknown => 1 },
8120
+ 0x68 => { Name => 'ColorTempUnknown', Unknown => 1 },
8121
+ 0x69 => { Name => 'WB_RGGBLevelsUnknown2', Format => 'int16s[4]', Unknown => 1 },
8122
+ 0x6d => { Name => 'ColorTempUnknown2', Unknown => 1 },
8123
+ 0x6e => { Name => 'WB_RGGBLevelsUnknown3', Format => 'int16s[4]', Unknown => 1 },
8124
+ 0x72 => { Name => 'ColorTempUnknown3', Unknown => 1 },
8125
+ 0x73 => { Name => 'WB_RGGBLevelsUnknown4', Format => 'int16s[4]', Unknown => 1 },
8126
+ 0x77 => { Name => 'ColorTempUnknown4', Unknown => 1 },
8127
+ 0x78 => { Name => 'WB_RGGBLevelsUnknown5', Format => 'int16s[4]', Unknown => 1 },
8128
+ 0x7c => { Name => 'ColorTempUnknown5', Unknown => 1 },
8129
+ 0x7d => { Name => 'WB_RGGBLevelsUnknown6', Format => 'int16s[4]', Unknown => 1 },
8130
+ 0x81 => { Name => 'ColorTempUnknown6', Unknown => 1 },
8131
+ 0x82 => { Name => 'WB_RGGBLevelsUnknown7', Format => 'int16s[4]', Unknown => 1 },
8132
+ 0x86 => { Name => 'ColorTempUnknown7', Unknown => 1 },
8133
+ 0x87 => { Name => 'WB_RGGBLevelsUnknown8', Format => 'int16s[4]', Unknown => 1 },
8134
+ 0x8b => { Name => 'ColorTempUnknown8', Unknown => 1 },
8135
+ 0x8c => { Name => 'WB_RGGBLevelsUnknown9', Format => 'int16s[4]', Unknown => 1 },
8136
+ 0x90 => { Name => 'ColorTempUnknown9', Unknown => 1 },
8137
+ 0x91 => { Name => 'WB_RGGBLevelsUnknown10', Format => 'int16s[4]', Unknown => 1 },
8138
+ 0x95 => { Name => 'ColorTempUnknown10', Unknown => 1 },
8139
+ 0x96 => { Name => 'WB_RGGBLevelsDaylight', Format => 'int16s[4]' },
8140
+ 0x9a => 'ColorTempDaylight',
8141
+ 0x9b => { Name => 'WB_RGGBLevelsShade', Format => 'int16s[4]' },
8142
+ 0x9f => 'ColorTempShade',
8143
+ 0xa0 => { Name => 'WB_RGGBLevelsCloudy', Format => 'int16s[4]' },
8144
+ 0xa4 => 'ColorTempCloudy',
8145
+ 0xa5 => { Name => 'WB_RGGBLevelsTungsten', Format => 'int16s[4]' },
8146
+ 0xa9 => 'ColorTempTungsten',
8147
+ 0xaa => { Name => 'WB_RGGBLevelsFluorescent',Format => 'int16s[4]' },
8148
+ 0xae => 'ColorTempFluorescent',
8149
+ 0xaf => { Name => 'WB_RGGBLevelsKelvin', Format => 'int16s[4]' },
8150
+ 0xb3 => 'ColorTempKelvin',
8151
+ 0xb4 => { Name => 'WB_RGGBLevelsFlash', Format => 'int16s[4]' },
8152
+ 0xb8 => 'ColorTempFlash',
8153
+ 0xb9 => { Name => 'WB_RGGBLevelsUnknown11', Format => 'int16s[4]', Unknown => 1 },
8154
+ 0xbd => { Name => 'ColorTempUnknown11', Unknown => 1 },
8155
+ 0xbe => { Name => 'WB_RGGBLevelsUnknown12', Format => 'int16s[4]', Unknown => 1 },
8156
+ 0xc2 => { Name => 'ColorTempUnknown12', Unknown => 1 },
8157
+ 0xc3 => { Name => 'WB_RGGBLevelsUnknown13', Format => 'int16s[4]', Unknown => 1 },
8158
+ 0xc7 => { Name => 'ColorTempUnknown13', Unknown => 1 },
8159
+ 0xc8 => { Name => 'WB_RGGBLevelsUnknown14', Format => 'int16s[4]', Unknown => 1 },
8160
+ 0xcc => { Name => 'ColorTempUnknown14', Unknown => 1 },
8161
+ 0xcd => { Name => 'WB_RGGBLevelsUnknown15', Format => 'int16s[4]', Unknown => 1 },
8162
+ 0xd1 => { Name => 'ColorTempUnknown15', Unknown => 1 },
8163
+ 0xd2 => { Name => 'WB_RGGBLevelsUnknown16', Format => 'int16s[4]', Unknown => 1 },
8164
+ 0xd6 => { Name => 'ColorTempUnknown16', Unknown => 1 },
8165
+ 0xd7 => { Name => 'WB_RGGBLevelsUnknown17', Format => 'int16s[4]', Unknown => 1 },
8166
+ 0xdb => { Name => 'ColorTempUnknown17', Unknown => 1 },
8167
+ 0xdc => { Name => 'WB_RGGBLevelsUnknown18', Format => 'int16s[4]', Unknown => 1 },
8168
+ 0xe0 => { Name => 'ColorTempUnknown18', Unknown => 1 },
8169
+ 0xe1 => { Name => 'WB_RGGBLevelsUnknown19', Format => 'int16s[4]', Unknown => 1 },
8170
+ 0xe5 => { Name => 'ColorTempUnknown19', Unknown => 1 },
8171
+ 0xe6 => { Name => 'WB_RGGBLevelsUnknown20', Format => 'int16s[4]', Unknown => 1 },
8172
+ 0xea => { Name => 'ColorTempUnknown20', Unknown => 1 },
8173
+ 0xeb => { Name => 'WB_RGGBLevelsUnknown21', Format => 'int16s[4]', Unknown => 1 },
8174
+ 0xef => { Name => 'ColorTempUnknown21', Unknown => 1 },
8175
+ 0xf0 => { Name => 'WB_RGGBLevelsUnknown22', Format => 'int16s[4]', Unknown => 1 },
8176
+ 0xf4 => { Name => 'ColorTempUnknown22', Unknown => 1 },
8177
+ 0xf5 => { Name => 'WB_RGGBLevelsUnknown23', Format => 'int16s[4]', Unknown => 1 },
8178
+ 0xf9 => { Name => 'ColorTempUnknown23', Unknown => 1 },
8179
+ 0xfa => { Name => 'WB_RGGBLevelsUnknown24', Format => 'int16s[4]', Unknown => 1 },
8180
+ 0xfe => { Name => 'ColorTempUnknown24', Unknown => 1 },
8181
+ 0xff => { Name => 'WB_RGGBLevelsUnknown25', Format => 'int16s[4]', Unknown => 1 },
8182
+ 0x103=> { Name => 'ColorTempUnknown25', Unknown => 1 },
8183
+ 0x104=> { Name => 'WB_RGGBLevelsUnknown26', Format => 'int16s[4]', Unknown => 1 },
8184
+ 0x108=> { Name => 'ColorTempUnknown26', Unknown => 1 },
8185
+ 0x109=> { Name => 'WB_RGGBLevelsUnknown27', Format => 'int16s[4]', Unknown => 1 },
8186
+ 0x10d=> { Name => 'ColorTempUnknown27', Unknown => 1 },
8187
+ 0x10e=> { Name => 'WB_RGGBLevelsUnknown28', Format => 'int16s[4]', Unknown => 1 },
8188
+ 0x112=> { Name => 'ColorTempUnknown28', Unknown => 1 },
8189
+ 0x113=> { Name => 'WB_RGGBLevelsUnknown29', Format => 'int16s[4]', Unknown => 1 },
8190
+ 0x117=> { Name => 'ColorTempUnknown29', Unknown => 1 },
8191
+ 0x118 => {
8192
+ Name => 'ColorCalib',
8193
+ Format => 'undef[120]',
8194
+ Unknown => 1,
8195
+ SubDirectory => { TagTable => 'Image::ExifTool::Canon::ColorCalib' }
8196
+ },
8197
+ 0x157 => {
8198
+ Name => 'PerChannelBlackLevel',
8199
+ Format => 'int16u[4]',
8200
+ },
8201
+ # 0x326 - PerChannelBlackLevel again
8202
+ 0x32a => {
8203
+ Name => 'NormalWhiteLevel',
8204
+ Format => 'int16u',
8205
+ RawConv => '$val || undef',
8206
+ },
8207
+ 0x32b => {
8208
+ Name => 'SpecularWhiteLevel',
8209
+ Format => 'int16u',
8210
+ },
8211
+ 0x32c => {
8212
+ Name => 'LinearityUpperMargin',
8213
+ Format => 'int16u',
8214
+ },
8215
+ );
8216
+
8083
8217
  # Unknown color data (MakerNotes tag 0x4001)
8084
8218
  %Image::ExifTool::Canon::ColorDataUnknown = (
8085
8219
  PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
@@ -8588,7 +8722,7 @@ my %filterConv = (
8588
8722
  Name => 'MakerNoteCanon',
8589
8723
  SubDirectory => {
8590
8724
  TagTable => 'Image::ExifTool::Canon::Main',
8591
- ProcessProc => \&Image::ExifTool::ProcessTIFF,
8725
+ ProcessProc => \&ProcessCMT3,
8592
8726
  WriteProc => \&Image::ExifTool::WriteTIFF,
8593
8727
  },
8594
8728
  },
@@ -9534,6 +9668,33 @@ sub CanonEvInv($)
9534
9668
  return $sign * ($val * 0x20 + $frac);
9535
9669
  }
9536
9670
 
9671
+ #------------------------------------------------------------------------------
9672
+ # Read CMT3 maker notes from CR3 file
9673
+ # Inputs: 0) ExifTool object reference, 1) dirInfo ref, 2) tag table ref
9674
+ # Returns: data block (may be empty if no Exif data) or undef on error
9675
+ sub ProcessCMT3($$$)
9676
+ {
9677
+ my ($et, $dirInfo, $tagTablePtr) = @_;
9678
+
9679
+ # extract the static maker notes to copying to other file types if requested
9680
+ # Note: this won't copy makernotes in the timed metadata since these are stored
9681
+ # separately, but the only records they have that aren't in the static maker notes
9682
+ # (for the M50) are: ColorData9, Flavor, CanonCameraInfoUnknown,
9683
+ # VignettingCorrUnknown1, Canon_0x4033 and Canon_0x402e
9684
+ if (($et->Options('MakerNotes') or $$et{REQ_TAG_LOOKUP}{makernotecanon}) and
9685
+ $$dirInfo{DirLen} > 8)
9686
+ {
9687
+ my $dataPt = $$dirInfo{DataPt};
9688
+ # remove old (unused) trailer
9689
+ $$dataPt =~ s/(II\x2a\0|MM\0\x2a)\0{4,10}$//;
9690
+ # remove TIFF header and append as the Canon makernote trailer
9691
+ # (so offsets will be interpreted correctly)
9692
+ my $val = substr($$dataPt,8) . substr($$dataPt,0,8);
9693
+ $et->FoundTag($Image::ExifTool::Canon::uuid{CMT3}, \$val);
9694
+ }
9695
+ return $et->ProcessTIFF($dirInfo, $tagTablePtr);
9696
+ }
9697
+
9537
9698
  #------------------------------------------------------------------------------
9538
9699
  # Process CTMD EXIF information
9539
9700
  # Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref
@@ -15,7 +15,7 @@ use strict;
15
15
  use vars qw($VERSION);
16
16
  use Image::ExifTool::XMP;
17
17
 
18
- $VERSION = '1.04';
18
+ $VERSION = '1.05';
19
19
 
20
20
  my %dateTimeInfo = (
21
21
  # NOTE: Do NOT put "Groups" here because Groups hash must not be common!
@@ -52,10 +52,12 @@ my %event = (
52
52
  my $v = $self->InverseDateTime($val,undef,1);
53
53
  undef $Image::ExifTool::evalWarning;
54
54
  return $v if $v;
55
- my @a = ($val =~ /\d{1,2}/g); # get HH, MM and maybe SS
56
- return undef unless @a >= 2;
57
- $a[2] or $a[2] = 0;
58
- return sprintf('%.2d:%.2d:%.2d', @a);
55
+ # allow time-only values by adding dummy date (thanks Herb)
56
+ my $v = $self->InverseDateTime("2000:01:01 $val",undef,1);
57
+ undef $Image::ExifTool::evalWarning;
58
+ return $v if $v and $v =~ s/.* //; # strip off dummy date
59
+ $Image::ExifTool::evalWarning = 'Invalid date/time or time-only value (use HH:MM:SS[.ss][+/-HH:MM|Z])';
60
+ return undef;
59
61
  },
60
62
  },
61
63
  fieldNotes => { },
@@ -20,7 +20,7 @@ use strict;
20
20
  use vars qw($VERSION);
21
21
  use Image::ExifTool qw(:DataAccess :Utils);
22
22
 
23
- $VERSION = '1.17';
23
+ $VERSION = '1.18';
24
24
 
25
25
  # road map of directory locations in GIF images
26
26
  my %gifMap = (
@@ -116,7 +116,7 @@ my %gifMap = (
116
116
  },
117
117
  5 => 'BackgroundColor',
118
118
  6 => {
119
- Name => 'AspectRatio',
119
+ Name => 'PixelAspectRatio',
120
120
  RawConv => '$val ? $val : undef',
121
121
  ValueConv => '($val + 15) / 64',
122
122
  },
@@ -16,7 +16,7 @@ use vars qw($VERSION);
16
16
  use Image::ExifTool qw(:DataAccess :Utils);
17
17
  use Image::ExifTool::QuickTime;
18
18
 
19
- $VERSION = '1.05';
19
+ $VERSION = '1.06';
20
20
 
21
21
  sub ProcessGoPro($$$);
22
22
  sub ProcessString($$$);
@@ -627,14 +627,6 @@ sub ProcessGoPro($$$)
627
627
  my $unknown = $verbose || $et->Options('Unknown');
628
628
  my ($size, $type, $unit, $scal, $setGroup0);
629
629
 
630
- # the Rove Stealth 4K writes encrypted text here, so check for this first
631
- # (really should check for this before loading GoPro module, but I was lazy) PHIL
632
- if ($$dataPt =~ /^\0\0\xf2\xe1\xf0\xeeTT/) {
633
- $et->VerboseDir('gpmd encrypted text', undef, length($$dataPt));
634
- my $strmTbl = GetTagTable('Image::ExifTool::QuickTime::Stream');
635
- Image::ExifTool::QuickTime::Process_text($et, $strmTbl, $dataPt);
636
- return 1;
637
- }
638
630
  $et->VerboseDir($$dirInfo{DirName} || 'GPMF', undef, $dirEnd-$pos) if $verbose;
639
631
  if ($pos) {
640
632
  my $parent = $$dirInfo{Parent};
@@ -14,16 +14,33 @@ use vars qw($VERSION);
14
14
  use Image::ExifTool qw(:DataAccess :Utils);
15
15
  use Image::ExifTool::Import;
16
16
 
17
- $VERSION = '1.01';
17
+ $VERSION = '1.02';
18
18
 
19
19
  sub ProcessTag($$$$%);
20
20
 
21
21
  %Image::ExifTool::JSON::Main = (
22
22
  GROUPS => { 0 => 'JSON', 1 => 'JSON', 2 => 'Other' },
23
+ VARS => { NO_ID => 1 },
23
24
  NOTES => q{
24
- No JSON tags have been pre-defined, but ExifTool will read any existing
25
- tags from basic JSON-formatted files.
25
+ Other than a few tags in the table below, JSON tags have not been
26
+ pre-defined. However, ExifTool will read any existing tags from basic
27
+ JSON-formatted files.
26
28
  },
29
+ # ON1 settings tags
30
+ ON1_SettingsData => {
31
+ RawConv => q{
32
+ require Image::ExifTool::XMP;
33
+ $val = Image::ExifTool::XMP::DecodeBase64($val);
34
+ },
35
+ SubDirectory => { TagTable => 'Image::ExifTool::PLIST::Main' },
36
+ },
37
+ ON1_SettingsMetadataCreated => { Groups => { 2 => 'Time' } },
38
+ ON1_SettingsMetadataModified => { Groups => { 2 => 'Time' } },
39
+ ON1_SettingsMetadataName => { },
40
+ ON1_SettingsMetadataPluginID => { },
41
+ ON1_SettingsMetadataTimestamp => { Groups => { 2 => 'Time' } },
42
+ ON1_SettingsMetadataUsage => { },
43
+ ON1_SettingsMetadataVisibleToUser=>{ },
27
44
  );
28
45
 
29
46
  #------------------------------------------------------------------------------
@@ -33,12 +50,18 @@ sub FoundTag($$$$%)
33
50
  {
34
51
  my ($et, $tagTablePtr, $tag, $val, %flags) = @_;
35
52
 
53
+ # special case to reformat ON1 tag names
54
+ if ($tag =~ s/^settings\w{8}-\w{4}-\w{4}-\w{4}-\w{12}(Data|Metadata.+)$/ON1_Settings$1/) {
55
+ $et->OverrideFileType('ONP','application/on1') if $$et{FILE_TYPE} eq 'JSON';
56
+ }
57
+
36
58
  # avoid conflict with special table entries
37
59
  $tag .= '!' if $Image::ExifTool::specialTags{$tag};
38
60
 
39
61
  AddTagToTable($tagTablePtr, $tag, {
40
62
  Name => Image::ExifTool::MakeTagName($tag),
41
63
  %flags,
64
+ Temporary => 1,
42
65
  }) unless $$tagTablePtr{$tag};
43
66
 
44
67
  $et->HandleTag($tagTablePtr, $tag, $val);
@@ -94,7 +117,7 @@ sub ProcessJSON($$)
94
117
 
95
118
  # remove any old tag definitions in case they change flags
96
119
  foreach $key (TagTableKeys($tagTablePtr)) {
97
- delete $$tagTablePtr{$key};
120
+ delete $$tagTablePtr{$key} if $$tagTablePtr{$key}{Temporary};
98
121
  }
99
122
 
100
123
  # extract tags from JSON database
@@ -14,7 +14,7 @@ use strict;
14
14
  use vars qw($VERSION);
15
15
  use Image::ExifTool qw(:DataAccess :Utils);
16
16
 
17
- $VERSION = '1.09';
17
+ $VERSION = '1.10';
18
18
 
19
19
  my %noYes = ( 0 => 'No', 1 => 'Yes' );
20
20
 
@@ -221,6 +221,8 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
221
221
  },
222
222
  0x2e => {
223
223
  Name => 'TrackEntry',
224
+ # reset TrackType member at the start of each track
225
+ Condition => 'delete $$self{TrackType}; 1',
224
226
  SubDirectory => { TagTable => 'Image::ExifTool::Matroska::Main' },
225
227
  },
226
228
  0x57 => { Name => 'TrackNumber', Format => 'unsigned' },
@@ -49,7 +49,7 @@ use vars qw($VERSION %minoltaLensTypes %minoltaTeleconverters %minoltaColorMode
49
49
  use Image::ExifTool qw(:DataAccess :Utils);
50
50
  use Image::ExifTool::Exif;
51
51
 
52
- $VERSION = '2.86';
52
+ $VERSION = '2.87';
53
53
 
54
54
  # Full list of product codes for Sony-compatible Minolta lenses
55
55
  # (ref http://www.kb.sony.com/selfservice/documentLink.do?externalId=C1000570)
@@ -603,6 +603,7 @@ $VERSION = '2.86';
603
603
  16 => 'Autumn Leaves', #JR (NC)
604
604
  17 => 'Sepia', #JR
605
605
  18 => 'FL', #JR (7SM3)
606
+ 19 => 'Vivid 2', #JR (7SM3)
606
607
  20 => 'IN', #JR (7SM3)
607
608
  21 => 'SH', #JR (7SM3)
608
609
  100 => 'Neutral', #JD
@@ -62,7 +62,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
62
62
  use Image::ExifTool::Exif;
63
63
  use Image::ExifTool::GPS;
64
64
 
65
- $VERSION = '3.87';
65
+ $VERSION = '3.88';
66
66
 
67
67
  sub LensIDConv($$$);
68
68
  sub ProcessNikonAVI($$$);
@@ -4663,6 +4663,7 @@ my %nikonFocalConversions = (
4663
4663
  18 => 'Nikkor Z 24-200mm f/4-6.3 VR', #IB
4664
4664
  21 => 'Nikkor Z 50mm f/1.2 S', #IB
4665
4665
  22 => 'Nikkor Z 24-50mm f/4-6.3', #IB
4666
+ 23 => 'Nikkor Z 14-24mm f/2.8 S', #IB
4666
4667
  },
4667
4668
  },
4668
4669
  0x36 => {