exiftool_vendored 13.33.0 → 13.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -30,7 +30,7 @@ use strict;
30
30
  use vars qw($VERSION $AUTOLOAD);
31
31
  use Image::ExifTool qw(:DataAccess :Utils);
32
32
 
33
- $VERSION = '1.71';
33
+ $VERSION = '1.72';
34
34
 
35
35
  sub ConvertTimecode($);
36
36
  sub ProcessSGLT($$$);
@@ -2031,6 +2031,7 @@ sub ProcessRIFF($$)
2031
2031
  my $validate = $et->Options('Validate');
2032
2032
  my $ee = $et->Options('ExtractEmbedded');
2033
2033
  my $hash = $$et{ImageDataHash};
2034
+ my $base = 0;
2034
2035
 
2035
2036
  # verify this is a valid RIFF file
2036
2037
  return 0 unless $raf->Read($buff, 12) == 12;
@@ -2042,7 +2043,8 @@ sub ProcessRIFF($$)
2042
2043
  return 0 unless $buff =~ /^(LA0[234]|OFR |LPAC|wvpk)/ and $raf->Read($buf2, 1024);
2043
2044
  $type = $riffType{$1};
2044
2045
  $buff .= $buf2;
2045
- return 0 unless $buff =~ /WAVE(.{4})?fmt /sg and $raf->Seek(pos($buff) - 4, 0);
2046
+ return 0 unless $buff =~ /WAVE(.{4})?(junk|fmt )/sg and $raf->Seek(pos($buff) - 4, 0);
2047
+ $base = pos($buff) - 16;
2046
2048
  }
2047
2049
  $$raf{NoBuffer} = 1 if $et->Options('FastScan'); # disable buffering in FastScan mode
2048
2050
  $mime = $riffMimeType{$type} if $type;
@@ -2159,7 +2161,7 @@ sub ProcessRIFF($$)
2159
2161
  DataPos => 0, # (relative to Base)
2160
2162
  Start => 0,
2161
2163
  Size => $len,
2162
- Base => $pos,
2164
+ Base => $pos + $base,
2163
2165
  );
2164
2166
  if ($setGroups) {
2165
2167
  delete $$et{SET_GROUP0};
@@ -34,7 +34,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
34
34
  use Image::ExifTool::Exif;
35
35
  use Image::ExifTool::Minolta;
36
36
 
37
- $VERSION = '3.74';
37
+ $VERSION = '3.76';
38
38
 
39
39
  sub ProcessSRF($$$);
40
40
  sub ProcessSR2($$$);
@@ -76,6 +76,9 @@ sub PrintInvLensSpec($;$$);
76
76
  6 => 'Sony LA-EA4 Adapter',
77
77
  7 => 'Sony LA-EA5 Adapter', #JR
78
78
  13 => 'Samyang AF 35-150mm F2-2.8',
79
+ 17 => 'Samyang RS 21mm F3.5', #JR
80
+ 18 => 'Samyang RS 28mm F3.5', #JR
81
+ 19 => 'Samyang RS 32mm F2.8', #JR
79
82
  20 => 'Samyang AF 35mm F1.4 P FE', #JR
80
83
  21 => 'Samyang AF 14-24mm F2.8', #JR
81
84
  # 27 => Venus Optics Laowa 12mm f2.8 Zero-D or 105mm f2 (T3.2) Smooth Trans Focus (ref IB)
@@ -251,9 +254,11 @@ sub PrintInvLensSpec($;$$);
251
254
  49474.8 => 'Viltrox 50mm F1.8 FE', #JR
252
255
  49474.9 => 'Viltrox 75mm F1.2 E', #JR
253
256
  '49474.10' => 'Viltrox 20mm F2.8 FE', #JR
257
+ '49474.11' => 'Viltrox AF 135/1.8 LAB FE', #JR
254
258
  49475 => 'Tamron 50-300mm F4.5-6.3 Di III VC VXD', #JR (Model A069)
255
259
  49476 => 'Tamron 28-300mm F4-7.1 Di III VC VXD', #JR (Model A074)
256
260
  49477 => 'Tamron 90mm F2.8 Di III Macro VXD', #JR (Model F072)
261
+ 49478 => 'Tamron 16-30mm F2.8 Di III VXD G2', #JR (Model A064)
257
262
 
258
263
  49712 => 'Tokina FiRIN 20mm F2 FE AF', # (firmware Ver.01)
259
264
  49713 => 'Tokina FiRIN 100mm F2.8 FE MACRO', # (firmware Ver.01)
@@ -315,6 +320,8 @@ sub PrintInvLensSpec($;$$);
315
320
  50550 => 'Sigma 28-105mm F2.8 DG DN | A', #JR (024)
316
321
  50551 => 'Sigma 28-45mm F1.8 DG DN | A', #JR (024)
317
322
  50553 => 'Sigma 300-600mm F4 DG OS | S', #JR (025)
323
+ 50554 => 'Sigma 16-300mm F3.5-6.7 DC OS | C', #JR (025)
324
+ 50556 => 'Sigma 17-40mm F1.8 DC | C', #JR (025)
318
325
 
319
326
  # lenses listed in the Sigma MC-11 list, but not yet seen:
320
327
  # 504xx => 'Sigma 18-200mm F3.5-6.3 DC MACRO OS HSM | C + MC-11', # (014)
@@ -1198,7 +1205,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1198
1205
  # FocusMode for SLT/HV/ILCA and NEX/ILCE; doesn't seem to apply to DSC models (always 0)
1199
1206
  # from 2018: at least DSC-RX10M4 and RX100M6 also use this tag
1200
1207
  Name => 'FocusMode',
1201
- Condition => '($$self{Model} !~ /^DSC-/) or ($$self{Model} =~ /^DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX95|HX99|RX0M2)/)',
1208
+ Condition => '($$self{Model} !~ /^DSC-/) or ($$self{Model} =~ /^DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX95|HX99|RX0M2|RX1RM3)/)',
1202
1209
  Writable => 'int8u',
1203
1210
  Priority => 0,
1204
1211
  PrintConv => {
@@ -1230,7 +1237,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1230
1237
  },
1231
1238
  },{
1232
1239
  Name => 'AFAreaModeSetting',
1233
- Condition => '$$self{Model} =~ /^(NEX-|ILCE-|ILME-|ZV-|DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX95|HX99|RX0M2))/',
1240
+ Condition => '$$self{Model} =~ /^(NEX-|ILCE-|ILME-|ZV-|DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX95|HX99|RX0M2|RX1RM3))/',
1234
1241
  Notes => 'NEX, ILCE and some DSC models',
1235
1242
  RawConv => '$$self{AFAreaILCE} = $val',
1236
1243
  DataMember => 'AFAreaILCE',
@@ -1267,7 +1274,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1267
1274
  # observed values in range (0 0) to (640 480), with center (320 240) often seen
1268
1275
  # for NEX-5R/6, positions appear to be in an 11x9 grid
1269
1276
  Name => 'FlexibleSpotPosition',
1270
- Condition => '$$self{Model} =~ /^(NEX-|ILCE-|ILME-|ZV-|DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX95|HX99|RX0M2))/',
1277
+ Condition => '$$self{Model} =~ /^(NEX-|ILCE-|ILME-|ZV-|DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX95|HX99|RX0M2|RX1RM3))/',
1271
1278
  Writable => 'int16u',
1272
1279
  Count => 2,
1273
1280
  Notes => q{
@@ -1427,7 +1434,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1427
1434
  # from 2018: at least DSC-RX10M4 and RX100M6 also use this tag
1428
1435
  0x2021 => { #JR
1429
1436
  Name => 'AFTracking',
1430
- Condition => '($$self{Model} !~ /^DSC-/) or ($$self{Model} =~ /^DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX95|HX99|RX0M2)/)',
1437
+ Condition => '($$self{Model} !~ /^DSC-/) or ($$self{Model} =~ /^DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX95|HX99|RX0M2|RX1RM3)/)',
1431
1438
  Writable => 'int8u',
1432
1439
  PrintConv => {
1433
1440
  0 => 'Off',
@@ -1723,7 +1730,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1723
1730
  # from mid-2015: ILCE-7RM2/7SM2/6300 and newer models use different offsets
1724
1731
  {
1725
1732
  Name => 'Tag9050a',
1726
- Condition => '$$self{Model} !~ /^(DSC-|Stellar|ILCE-(1|6100|6300|6400|6500|6600|6700|7C|7M3|7M4|7RM2|7RM3A?|7RM4A?|7RM5|7SM2|7SM3|9|9M2)|ILCA-99M2|ILME-FX3|ZV-)/',
1733
+ Condition => '$$self{Model} !~ /^(DSC-|Stellar|ILCE-(1|6100|6300|6400|6500|6600|6700|7C|7M3|7M4|7RM2|7RM3A?|7RM4A?|7RM5|7SM2|7SM3|9|9M2)|ILCA-99M2|ILME-(FX2|FX3)|ZV-)/',
1727
1734
  SubDirectory => {
1728
1735
  TagTable => 'Image::ExifTool::Sony::Tag9050a',
1729
1736
  ByteOrder => 'LittleEndian',
@@ -1744,7 +1751,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1744
1751
  },
1745
1752
  },{
1746
1753
  Name => 'Tag9050d',
1747
- Condition => '$$self{Model} =~ /^(ILCE-(6700|7CM2|7CR)|ZV-(E1|E10M2))\b/ or ($$self{Model} =~ /^(ILCE-1M2)/ and $$valPt =~ /^\x00/)',
1754
+ Condition => '$$self{Model} =~ /^(ILCE-(6700|7CM2|7CR)|ILME-FX2|ZV-(E1|E10M2))\b/ or ($$self{Model} =~ /^(ILCE-1M2)/ and $$valPt =~ /^\x00/)',
1748
1755
  SubDirectory => {
1749
1756
  TagTable => 'Image::ExifTool::Sony::Tag9050d',
1750
1757
  ByteOrder => 'LittleEndian',
@@ -2185,6 +2192,10 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
2185
2192
  398 => 'ILX-LR1', #JR
2186
2193
  399 => 'ZV-E10M2', #JR
2187
2194
  400 => 'ILCE-1M2', #PH
2195
+ 401 => 'DSC-RX1RM3', #JR
2196
+ 402 => 'ILCE-6400A', #github347
2197
+ 404 => 'DSC-RX100M7A', #github347
2198
+ 406 => 'ILME-FX2', #JR
2188
2199
  },
2189
2200
  },
2190
2201
  0xb020 => { #2
@@ -6327,6 +6338,8 @@ my %pictureProfile2010 = (
6327
6338
  38 => 'VV2',
6328
6339
  39 => 'IN',
6329
6340
  40 => 'SH',
6341
+ 48 => 'FL2', #JR
6342
+ 49 => 'FL3', #JR
6330
6343
  },
6331
6344
  );
6332
6345
  my %isoSetting2010 = (
@@ -8236,7 +8249,7 @@ my %isoSetting2010 = (
8236
8249
  0x000a => {
8237
8250
  Name => 'ShutterCount',
8238
8251
  # number of mechanical shutter actuations, does not increase during electronic shutter / Silent Shooting
8239
- Condition => '$$self{Model} =~ /^(ILCE-(1M2|6700|7CM2|7CR))/',
8252
+ Condition => '$$self{Model} =~ /^(ILCE-(1M2|6700|7CM2|7CR)|ILME-FX2)/',
8240
8253
  Format => 'int32u',
8241
8254
  Notes => 'total number of mechanical shutter actuations',
8242
8255
  RawConv => '$val & 0x00ffffff',
@@ -8497,7 +8510,7 @@ my %isoSetting2010 = (
8497
8510
  },
8498
8511
  0x002a => [{
8499
8512
  Name => 'Quality2',
8500
- Condition => '$$self{Model} !~ /^(ILCE-(1|1M2|6700|7CM2|7CR|7M4|7RM5|7SM3|9M3)|ILME-(FX3|FX30)|ZV-(E1|E10M2))\b/',
8513
+ Condition => '$$self{Model} !~ /^(DSC-RX1RM3|ILCE-(1|1M2|6700|7CM2|7CR|7M4|7RM5|7SM3|9M3)|ILME-(FX2|FX3|FX30)|ZV-(E1|E10M2))\b/',
8501
8514
  PrintConv => {
8502
8515
  0 => 'JPEG',
8503
8516
  1 => 'RAW',
@@ -8522,7 +8535,7 @@ my %isoSetting2010 = (
8522
8535
  # },
8523
8536
  0x0053 => {
8524
8537
  Name => 'ModelReleaseYear',
8525
- Condition => '$$self{Model} !~ /^(ILCE-(1|6700|7CM2|7CR|7M4|7RM5|7SM3|9M3)|ILME-(FX3|FX30)|ZV-(E1|E10M2))\b/',
8538
+ Condition => '$$self{Model} !~ /^(DSC-RX1RM3|ILCE-(1|6700|7CM2|7CR|7M4|7RM5|7SM3|9M3)|ILME-(FX2|FX3|FX30)|ZV-(E1|E10M2))\b/',
8526
8539
  Format => 'int8u',
8527
8540
  PrintConv => 'sprintf("20%.2d", $val)',
8528
8541
  },
@@ -8565,7 +8578,7 @@ my %isoSetting2010 = (
8565
8578
  0x0000 => { Name => 'Ver9401', Hidden => 1, RawConv => '$$self{Ver9401} = $val; $$self{OPTIONS}{Unknown}<2 ? undef : $val' },
8566
8579
 
8567
8580
  0x03e2 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 181', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8568
- 0x03f4 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(185|186)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8581
+ 0x03f4 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(185|186|187)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8569
8582
  0x044e => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 178', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8570
8583
  0x0498 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 148', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8571
8584
  0x049d => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 167 and $$self{Software} !~ /^ILCE-7M4 (v2|v3)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
@@ -9893,10 +9906,19 @@ my %isoSetting2010 = (
9893
9906
  WRITE_PROC => \&WriteEnciphered,
9894
9907
  CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
9895
9908
  FORMAT => 'int8u',
9896
- NOTES => 'Valid for the ILCE-1/6700/7CM2/7CR/7M4/7RM5/7SM3/9M3, ILME-FX3/FX30, ZV-E1/E10M2.',
9909
+ DATAMEMBER => [ 0x00, 0x37 ],
9910
+ NOTES => q{
9911
+ Valid for the ILCE-1/6700/7CM2/7CR/7M4/7RM5/7SM3/9M3, ILME-FX2/FX3/FX30,
9912
+ ZV-E1/E10M2.
9913
+ },
9897
9914
  FIRST_ENTRY => 0,
9898
9915
  GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
9899
- 0x0000 => { Name => 'Tag9416_0000', PrintConv => 'sprintf("%3d",$val)', RawConv => '$$self{TagVersion} = $val' },
9916
+ 0x0000 => {
9917
+ Name => 'Tag9416_0000',
9918
+ Hidden => 1, # (hide from documentation)
9919
+ PrintConv => 'sprintf("%3d",$val)',
9920
+ RawConv => '$$self{TagVersion} = $val; undef', # (used only to set TagVersion)
9921
+ },
9900
9922
  0x0004 => {
9901
9923
  Name => 'SonyISO',
9902
9924
  Format => 'int16u',
@@ -9945,7 +9967,9 @@ my %isoSetting2010 = (
9945
9967
  PrintConv => \%sonyExposureProgram3,
9946
9968
  },
9947
9969
  0x0037 => {
9948
- Name => 'CreativeStyle',
9970
+ Name => 'CreativeStyle',
9971
+ Notes => 'offsets after this are shifted by 1 for the ILME-FX2',
9972
+ Hook => '$varSize += 1 if $$self{Model} =~ /^(ILME-FX2)/',
9949
9973
  PrintConv => {
9950
9974
  0 => 'Standard',
9951
9975
  1 => 'Vivid',
@@ -9964,6 +9988,8 @@ my %isoSetting2010 = (
9964
9988
  16 => 'VV2',
9965
9989
  17 => 'IN',
9966
9990
  18 => 'SH',
9991
+ 19 => 'FL2',
9992
+ 20 => 'FL3',
9967
9993
  255 => 'Off',
9968
9994
  },
9969
9995
  },
@@ -10056,7 +10082,7 @@ my %isoSetting2010 = (
10056
10082
  },
10057
10083
  0x089d => { # Note: 32 values for these newer models, and 32 non-zero values present for new lenses like SEL2470GM2 and SEL2070G
10058
10084
  Name => 'VignettingCorrParams',
10059
- Condition => '$$self{Model} =~ /^(ILCE-(1M2|6700|7CM2|7CR|7RM5)|ILME-FX30|ZV-(E1|E10M2))\b/',
10085
+ Condition => '$$self{Model} =~ /^(ILCE-(1M2|6700|7CM2|7CR|7RM5)|ILME-(FX2|FX30)|ZV-(E1|E10M2))\b/',
10060
10086
  Format => 'int16s[32]',
10061
10087
  },
10062
10088
  0x08b5 => {
@@ -10095,7 +10121,7 @@ my %isoSetting2010 = (
10095
10121
  },
10096
10122
  0x0945 => {
10097
10123
  Name => 'ChromaticAberrationCorrParams',
10098
- Condition => '$$self{Model} =~ /^(ILCE-(1M2|6700|7CM2|7CR|7RM5)|ILME-FX30|ZV-(E1|E10M2))\b/',
10124
+ Condition => '$$self{Model} =~ /^(ILCE-(1M2|6700|7CM2|7CR|7RM5)|ILME-(FX2|FX30)|ZV-(E1|E10M2))\b/',
10099
10125
  Format => 'int16s[32]',
10100
10126
  },
10101
10127
  );
@@ -643,6 +643,7 @@ my %tagLookup = (
643
643
  'acdseeregionnameassigntype' => { 505 => [\'Regions','RegionsRegionListNameAssignType'] },
644
644
  'acdseeregiontype' => { 505 => [\'Regions','RegionsRegionListType'] },
645
645
  'actionadvised' => { 138 => 0x2a },
646
+ 'actioninafccont' => { 371 => 0x220 },
646
647
  'activearea' => { 125 => 0xc68d },
647
648
  'actived-lighting' => { 246 => 0x22, 304 => 0x24 },
648
649
  'actived-lightingmode' => { 304 => 0x25 },
@@ -746,9 +747,12 @@ my %tagLookup = (
746
747
  'afassistbeam' => { 2 => 0x8, 90 => 0x50e, 91 => 0x4, 92 => 0x5, 93 => 0x4, 94 => 0x4, 95 => 0x5 },
747
748
  'afassistlamp' => { 360 => 0x31 },
748
749
  'afbuttonpressed' => { 455 => [0x83,0x283] },
750
+ 'afchold' => { 371 => 0x221 },
749
751
  'afconfidence' => { 1 => 0x3d },
750
752
  'afconfigtool' => { 2 => 0x1 },
751
753
  'afcoordinatesavailable' => { 203 => 0x7, 204 => 0x7 },
754
+ 'afcpointtracking' => { 371 => '545.1' },
755
+ 'afcsensitivity' => { 371 => '545.2' },
752
756
  'afdefocus' => { 371 => 0x6 },
753
757
  'afdetectionmethod' => { 200 => 0x4, 201 => 0x4, 203 => 0x4, 204 => 0x4 },
754
758
  'afduringliveview' => { 90 => 0x511 },
@@ -1964,7 +1968,10 @@ my %tagLookup = (
1964
1968
  'composerkeywords' => { 425 => "\xa9cok" },
1965
1969
  'compositeimage' => { 125 => 0xa460, 539 => 'CompositeImage' },
1966
1970
  'compositeimagecount' => { 125 => 0xa461, 539 => 'CompositeImageCount' },
1971
+ 'compositeimagecount1' => { 133 => 0x1151 },
1972
+ 'compositeimagecount2' => { 133 => 0x1152 },
1967
1973
  'compositeimageexposuretimes' => { 125 => 0xa462, 539 => 'CompositeImageExposureTimes' },
1974
+ 'compositeimagemode' => { 133 => 0x1150 },
1968
1975
  'composition' => { 520 => 'Composition' },
1969
1976
  'compositionadjust' => { 397 => '0.1' },
1970
1977
  'compositionadjustrotation' => { 397 => 0x7 },
@@ -3132,6 +3139,7 @@ my %tagLookup = (
3132
3139
  'firmwarerevision2' => { 431 => 0xc },
3133
3140
  'firmwareversion' => { 7 => 0x10b, 11 => 0x136, 14 => 0xff, 15 => 0x107, 145 => [0x415,0xce5], 161 => 0x57, 163 => 'FirmwareVersion', 358 => 0x320, 360 => 0x2, 362 => 0x3109, 399 => 0x230, 425 => ['CNFV','FIRM','info'], 428 => 0x18, 429 => 0x2a, 433 => 0x2 },
3134
3141
  'firmwareversions' => { 408 => 0x301 },
3142
+ 'firstframeactioninafc' => { 371 => 0x21f },
3135
3143
  'firstphotodate' => { 518 => 'FirstPhotoDate' },
3136
3144
  'firstpublicationdate' => { 346 => 'FirstPublicationDate' },
3137
3145
  'fixtureidentifier' => { 138 => 0x16, 526 => 'FixtureIdentifier' },
@@ -5093,6 +5101,7 @@ my %tagLookup = (
5093
5101
  'multiframenoisereduction' => { 455 => 0x35, 467 => 0x200b, 472 => 0x15 },
5094
5102
  'multiframenreffect' => { 467 => 0x2023 },
5095
5103
  'multifunctionlock' => { 90 => 0x70f },
5104
+ 'multipleexposure' => { 133 => 0x1037 },
5096
5105
  'multipleexposuremode' => { 250 => 0x1bc, 252 => 0x98, 255 => 0x8c, 256 => 0x9a, 257 => 0x9a, 339 => 0x101c },
5097
5106
  'multipleexposureset' => { 378 => '10.1' },
5098
5107
  'multisample' => { 272 => 0x40 },
@@ -6647,7 +6656,7 @@ my %tagLookup = (
6647
6656
  'shotlocation' => { 562 => 'shotLocation' },
6648
6657
  'shotlogdata' => { 512 => 'shot_log_data' },
6649
6658
  'shotname' => { 425 => 'shot', 562 => 'shotName' },
6650
- 'shotnumber' => { 562 => 'shotNumber' },
6659
+ 'shotnumber' => { 404 => 0xa, 562 => 'shotNumber' },
6651
6660
  'shotnumbersincepowerup' => { 471 => 0x44e, 490 => 0x1a, 491 => 0x16, 492 => 0xa },
6652
6661
  'shotnumbersincepowerup2' => { 455 => 0x200 },
6653
6662
  'shotsize' => { 562 => 'shotSize' },
@@ -6871,7 +6880,9 @@ my %tagLookup = (
6871
6880
  'subjectlocation' => { 125 => 0xa214, 538 => 'SubjectLocation' },
6872
6881
  'subjectmotion' => { 316 => '78.2', 317 => '78.2', 327 => '78.2', 330 => 0x103, 331 => 0x103, 332 => 0x119 },
6873
6882
  'subjectprogram' => { 188 => 0x22 },
6883
+ 'subjectrecognition' => { 371 => 0x960 },
6874
6884
  'subjectreference' => { 138 => 0xc },
6885
+ 'subjectswitching' => { 2 => 0x15 },
6875
6886
  'subjecttodetect' => { 2 => 0x14 },
6876
6887
  'sublabels1' => { 544 => [\'TagStructure','TagStructureSubLabels'] },
6877
6888
  'sublabels2' => { 544 => [\'TagStructure','TagStructureSubLabelsSubLabels'] },
@@ -7668,7 +7679,7 @@ my %tagLookup = (
7668
7679
  'whitebalancebias' => { 119 => 0x2011, 340 => 0x304, 360 => 0x23 },
7669
7680
  'whitebalanceblue' => { 79 => 0x7 },
7670
7681
  'whitebalancebracket' => { 335 => 0x502, 340 => 0x303 },
7671
- 'whitebalancebracketing' => { 191 => 0x22, 194 => 0x2c, 464 => 0x2c },
7682
+ 'whitebalancebracketing' => { 133 => 0x1102, 191 => 0x22, 194 => 0x2c, 464 => 0x2c },
7672
7683
  'whitebalancebuttonplaybackmode' => { 331 => 0x1c5, 332 => 0x1dd },
7673
7684
  'whitebalancecomp' => { 343 => 0x1001 },
7674
7685
  'whitebalancedetected' => { 145 => 0x3fb },
@@ -12767,7 +12778,6 @@ my %tagExists = (
12767
12778
  'tag940a' => 1,
12768
12779
  'tag940c' => 1,
12769
12780
  'tag940e' => 1,
12770
- 'tag9416_0000' => 1,
12771
12781
  'taggedpdf' => 1,
12772
12782
  'taggingtime' => 1,
12773
12783
  'tailnumber' => 1,
@@ -12,7 +12,7 @@ meta information extracted from or written to a file.
12
12
  =head1 TAG TABLES
13
13
 
14
14
  The tables listed below give the names of all tags recognized by ExifTool.
15
- They contain a total of 28629 tags, with 17828 unique tag names.
15
+ They contain a total of 28650 tags, with 17839 unique tag names.
16
16
 
17
17
  B<Tag ID>, B<Index#> or B<Sequence> is given in the first column of each
18
18
  table. A B<Tag ID> is the computer-readable equivalent of a tag name, and
@@ -10339,6 +10339,7 @@ Information about creative filter settings.
10339
10339
  18 AFStatusViewfinder int32s
10340
10340
  19 InitialAFPointInServo int32s
10341
10341
  20 SubjectToDetect int32s
10342
+ 21 SubjectSwitching int32s
10342
10343
  24 EyeDetection int32s
10343
10344
 
10344
10345
  =head3 Canon RawBurstInfo Tags
@@ -11538,8 +11539,8 @@ file name combined with the hierarchical protobuf field numbers.
11538
11539
  ExifTool currently extracts timed GPS plus a few other tags from DJI devices
11539
11540
  which use the following protocols: dvtm_AVATA2.proto (Avata 2),
11540
11541
  dvtm_ac203.proto (Osmo Action 4), dvtm_ac204.proto (Osmo Action 5),
11541
- dvtm_wm265e.proto (Mavic 3), dvtm_pm320.proto (Matrice 30) and
11542
- dvtm_pm320.proto (Mini 4 Pro).
11542
+ dvtm_wm265e.proto (Mavic 3), dvtm_pm320.proto (Matrice 30),
11543
+ dvtm_Mini4_Pro.proto (Mini 4 Pro) and dvtm_dji_neo.proto (DJI Neo).
11543
11544
 
11544
11545
  Note that with the protobuf format, numerical tags missing from the output
11545
11546
  for a given protocol should be considered to have the default value of 0.
@@ -11595,6 +11596,18 @@ for a given protocol should be considered to have the default value of 0.
11595
11596
  'dvtm_ac204_3-4-2-1' GPSInfo DJI GPSInfo
11596
11597
  'dvtm_ac204_3-4-2-2' GPSAltitude no
11597
11598
  'dvtm_ac204_3-4-2-6-1' GPSDateTime no
11599
+ 'dvtm_dji_neo_1-1-5' SerialNumber no
11600
+ 'dvtm_dji_neo_1-1-10' Model no
11601
+ 'dvtm_dji_neo_2-2-3-1' SerialNumber2 no
11602
+ 'dvtm_dji_neo_2-3' FrameInfo DJI FrameInfo
11603
+ 'dvtm_dji_neo_3-1-2' TimeStamp no
11604
+ 'dvtm_dji_neo_3-2-2-1' ISO no
11605
+ 'dvtm_dji_neo_3-2-4-1' ShutterSpeed no
11606
+ 'dvtm_dji_neo_3-2-6-1' ColorTemperature no
11607
+ 'dvtm_dji_neo_3-2-10-1' FNumber no
11608
+ 'dvtm_dji_neo_3-4-3' DroneInfo DJI DroneInfo
11609
+ 'dvtm_dji_neo_3-4-4-1' GPSInfo DJI GPSInfo
11610
+ 'dvtm_dji_neo_3-4-4-2' AbsoluteAltitude no
11598
11611
  'dvtm_pm320_1-1-5' SerialNumber no
11599
11612
  'dvtm_pm320_1-1-10' Model no
11600
11613
  'dvtm_pm320_2-2' FrameInfo DJI FrameInfo
@@ -12141,6 +12154,7 @@ Tags extracted from FLIR Public image Format (FPF) files.
12141
12154
  0x1032 ExposureCount int16u
12142
12155
  0x1033 EXRAuto int16u
12143
12156
  0x1034 EXRMode int16u
12157
+ 0x1037 MultipleExposure int16u
12144
12158
  0x1040 ShadowTone int32s
12145
12159
  0x1041 HighlightTone int32s
12146
12160
  0x1044 DigitalZoom int32u
@@ -12158,9 +12172,13 @@ Tags extracted from FLIR Public image Format (FPF) files.
12158
12172
  0x1053 CropSize int32u
12159
12173
  0x1100 AutoBracketing int16u
12160
12174
  0x1101 SequenceNumber int16u
12175
+ 0x1102 WhiteBalanceBracketing int16u
12161
12176
  0x1103 DriveSettings FujiFilm DriveSettings
12162
12177
  0x1105 PixelShiftShots int16u
12163
12178
  0x1106 PixelShiftOffset rational64s[2]
12179
+ 0x1150 CompositeImageMode int32u
12180
+ 0x1151 CompositeImageCount1 int16u
12181
+ 0x1152 CompositeImageCount2 int16u
12164
12182
  0x1153 PanoramaAngle int16u
12165
12183
  0x1154 PanoramaDirection int16u
12166
12184
  0x1201 AdvancedFilter int32u
@@ -12352,14 +12370,15 @@ Tags found in the FujiIFD information of RAF images from some models.
12352
12370
  =head3 FujiFilm MRAW Tags
12353
12371
 
12354
12372
  Tags extracted from the M-RAW header of multi-image RAF files. The family 1
12355
- group name for these tags is "M-RAW".
12373
+ group name for these tags is "M-RAW". Additional metadata may be extracted
12374
+ from the embedded RAW images with the ExtractEmbedded option.
12356
12375
 
12357
12376
  Tag ID Tag Name Writable
12358
12377
  ------ -------- --------
12359
- 0x0001 RawImageNumber no
12360
- 0x0005 ExposureTime no
12361
- 0x0006 FNumber no
12362
- 0x0007 ISO no
12378
+ 0x2001 RawImageNumber no
12379
+ 0x2005 ExposureTime no
12380
+ 0x2006 FNumber no
12381
+ 0x2007 ISO no
12363
12382
 
12364
12383
  =head3 FujiFilm FFMV Tags
12365
12384
 
@@ -19406,6 +19425,8 @@ any information found here will be extracted, even if the tag is not listed.
19406
19425
 
19407
19426
  =head3 Olympus AFTargetInfo Tags
19408
19427
 
19428
+ Position and size of selected AF Area and focus areas for OM cameras.
19429
+
19409
19430
  Index2 Tag Name Writable
19410
19431
  ------ -------- --------
19411
19432
  0 AFFrameSize int16u[2]
@@ -19414,7 +19435,11 @@ any information found here will be extracted, even if the tag is not listed.
19414
19435
 
19415
19436
  =head3 Olympus SubjectDetectInfo Tags
19416
19437
 
19417
- Subject Detection for OM cameras.
19438
+ Subject Detection data for OM cameras. These tags contain the areas of a
19439
+ subject and its elements detected by Subject Detection, or the main face and
19440
+ eyes detected by Face Detection. These elements can be either L1 details
19441
+ (level 1, such as head, chassis, airplane nose, etc.) or L2 details (level
19442
+ 2, such as eye, driver, airplane cockpit, etc.).
19418
19443
 
19419
19444
  Index2 Tag Name Writable
19420
19445
  ------ -------- --------
@@ -20724,6 +20749,12 @@ Flash information tags for the K10D, K20D and K200D.
20724
20749
  399 AFPointsUnknown? int8u[101]~
20725
20750
  506 LiveView int8u
20726
20751
  509 AFHold int8u
20752
+ 543 FirstFrameActionInAFC int8u
20753
+ 544 ActionInAFCCont int8u
20754
+ 545 AFCHold int8u & 0x03
20755
+ 545.1 AFCPointTracking int8u & 0x0c
20756
+ 545.2 AFCSensitivity int8u & 0x70
20757
+ 2400 SubjectRecognition int8u
20727
20758
 
20728
20759
  =head3 Pentax KelvinWB Tags
20729
20760
 
@@ -20965,6 +20996,7 @@ sensors are located in the camera.
20965
20996
 
20966
20997
  Index1 Tag Name Writable
20967
20998
  ------ -------- --------
20999
+ 10 ShotNumber no
20968
21000
  12 SensorTemperature int16s
20969
21001
  14 SensorTemperature2 int16s
20970
21002
  20 CameraTemperature4 int16s
@@ -23614,11 +23646,11 @@ E-mount models.
23614
23646
 
23615
23647
  =head3 Sony Tag9416 Tags
23616
23648
 
23617
- Valid for the ILCE-1/6700/7CM2/7CR/7M4/7RM5/7SM3/9M3, ILME-FX3/FX30, ZV-E1/E10M2.
23649
+ Valid for the ILCE-1/6700/7CM2/7CR/7M4/7RM5/7SM3/9M3, ILME-FX2/FX3/FX30,
23650
+ ZV-E1/E10M2.
23618
23651
 
23619
23652
  Index1 Tag Name Writable
23620
23653
  ------ -------- --------
23621
- 0 Tag9416_0000 no
23622
23654
  4 SonyISO no
23623
23655
  6 StopsAboveBaseISO no
23624
23656
  10 SonyExposureTime2 no
@@ -30512,7 +30544,7 @@ for the official QuickTime specification.
30512
30544
  The tags below are extracted from timed metadata in QuickTime and other
30513
30545
  formats of video files when the ExtractEmbedded option is used. Although
30514
30546
  most of these tags are combined into the single table below, ExifTool
30515
- currently reads 110 different types of timed GPS metadata from video files.
30547
+ currently reads 111 different types of timed GPS metadata from video files.
30516
30548
 
30517
30549
  Tag ID Tag Name Writable
30518
30550
  ------ -------- --------
@@ -695,12 +695,11 @@ TAG: foreach $tagInfo (@matchingTags) {
695
695
  my $src = GetTagTable($$table{SRC_TABLE});
696
696
  $writeProc = $$src{WRITE_PROC} unless $writeProc;
697
697
  }
698
- {
698
+ if ($writeProc) {
699
699
  # make sure module is loaded if the writeProc is a string
700
700
  unless (ref $writeProc) {
701
701
  my $module = $writeProc;
702
- $module =~ s/::\w+$//;
703
- eval "require $module";
702
+ $module =~ s/::\w+$// and eval "require $module";
704
703
  }
705
704
  no strict 'refs';
706
705
  next unless $writeProc and &$writeProc();
@@ -1353,7 +1352,8 @@ sub SetNewValuesFromFile($$;@)
1353
1352
  # get all tags from source file (including MakerNotes block)
1354
1353
  $info = $srcExifTool->ImageInfo($srcFile);
1355
1354
  }
1356
- return $info if $$info{Error} and $$info{Error} eq 'Error opening file';
1355
+ # (allow processing to continue if we have alternate files that may have been read OK)
1356
+ return $info if $$info{Error} and $$info{Error} eq 'Error opening file' and not $$self{ALT_EXIFTOOL};
1357
1357
  delete $$srcExifTool{VALUE}{Error}; # delete so we can check this later
1358
1358
 
1359
1359
  # sort tags in file order with priority tags last
@@ -3405,7 +3405,7 @@ sub InsertTagValues($$;$$$$)
3405
3405
  undef $advFmtSelf;
3406
3406
  $didExpr = 1; # set flag indicating an expression was evaluated
3407
3407
  }
3408
- unless (defined $val) {
3408
+ unless (defined $val or (ref $opt and $$self{OPTIONS}{UndefTags})) {
3409
3409
  $val = $$self{OPTIONS}{MissingTagValue};
3410
3410
  unless (defined $val) {
3411
3411
  my $g3 = ($docGrp and $var !~ /\b(main|doc\d+):/i) ? $docGrp . ':' : '';
@@ -5053,6 +5053,7 @@ TryLib: for ($lib=$strptimeLib; ; $lib='') {
5053
5053
  last;
5054
5054
  }
5055
5055
  if (not $lib) {
5056
+ last unless $$self{OPTIONS}{StrictDate};
5056
5057
  warn $wrn || "Install POSIX::strptime or Time::Piece for inverse date/time conversions\n";
5057
5058
  return undef;
5058
5059
  } elsif ($lib eq 'POSIX::strptime') {
@@ -3350,13 +3350,14 @@ sub PrintLensID(@)
3350
3350
  #------------------------------------------------------------------------------
3351
3351
  # Convert XMP date/time to EXIF format
3352
3352
  # Inputs: 0) XMP date/time string, 1) set if we aren't sure this is a date
3353
- # Returns: EXIF date/time
3353
+ # Returns: EXIF date/time, and flag in list context if this was a standard date/time value
3354
3354
  sub ConvertXMPDate($;$)
3355
3355
  {
3356
3356
  my ($val, $unsure) = @_;
3357
3357
  if ($val =~ /^(\d{4})-(\d{2})-(\d{2})[T ](\d{2}:\d{2})(:\d{2})?\s*(\S*)$/) {
3358
3358
  my $s = $5 || ''; # seconds may be missing
3359
3359
  $val = "$1:$2:$3 $4$s$6"; # convert back to EXIF time format
3360
+ return($val, 1) if wantarray;
3360
3361
  } elsif (not $unsure and $val =~ /^(\d{4})(-\d{2}){0,2}/) {
3361
3362
  $val =~ tr/-/:/;
3362
3363
  }
@@ -3647,7 +3648,12 @@ NoLoop:
3647
3648
  if (($new or $fmt eq 'rational') and ConvertRational($val)) {
3648
3649
  $rational = $rawVal;
3649
3650
  } else {
3650
- $val = ConvertXMPDate($val, $new) if $new or $fmt eq 'date';
3651
+ my $stdDate;
3652
+ ($val, $stdDate) = ConvertXMPDate($val, $new) if $new or $fmt eq 'date';
3653
+ if ($stdDate and $added) {
3654
+ $$tagInfo{Groups}{2} = 'Time';
3655
+ $$tagInfo{PrintConv} = '$self->ConvertDateTime($val)';
3656
+ }
3651
3657
  }
3652
3658
  if ($$et{XmpValidate} and $fmt and $fmt eq 'boolean' and $val!~/^True|False$/) {
3653
3659
  if ($val =~ /^true|false$/) {
@@ -1934,7 +1934,7 @@ my %sACDSeeRegionStruct = (
1934
1934
  BurstPrimary => { },
1935
1935
  PortraitNote => { },
1936
1936
  PortraitRequest => {
1937
- Notes => 'High Definition Render Pipeline (HDRP) data', #PH (guess)
1937
+ Notes => 'HDRPlus (HDRP) data', #NealKrawetz
1938
1938
  ValueConv => 'Image::ExifTool::XMP::DecodeBase64($val)',
1939
1939
  ValueConvInv => 'Image::ExifTool::XMP::EncodeBase64($val)',
1940
1940
  },
@@ -29,7 +29,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
29
29
  %jpegMarker %specialTags %fileTypeLookup $testLen $exeDir
30
30
  %static_vars $advFmtSelf $configFile @configFiles $noConfig);
31
31
 
32
- $VERSION = '13.33';
32
+ $VERSION = '13.36';
33
33
  $RELEASE = '';
34
34
  @ISA = qw(Exporter);
35
35
  %EXPORT_TAGS = (
@@ -1181,6 +1181,7 @@ my @availableOptions = (
1181
1181
  [ 'SystemTags', undef, 'extract additional File System tags' ],
1182
1182
  [ 'TextOut', \*STDOUT, 'file for Verbose/HtmlDump output' ],
1183
1183
  [ 'TimeZone', undef, 'local time zone' ],
1184
+ [ 'UndefTags', undef, 'leave undef tags in -if conditions when -m or -f are used' ],
1184
1185
  [ 'Unknown', 0, 'flag to get values of unknown tags (0-2)' ],
1185
1186
  [ 'UserParam', { }, 'user parameters for additional user-defined tag values' ],
1186
1187
  [ 'Validate', undef, 'perform additional validation' ],
@@ -2824,6 +2825,8 @@ sub ExtractInfo($;@)
2824
2825
  $isDir = 1;
2825
2826
  } else {
2826
2827
  $self->Error('Error opening file');
2828
+ # continue to process alt files if necessary
2829
+ $self->DoneExtract() if $$self{ALT_EXIFTOOL};
2827
2830
  }
2828
2831
  } else {
2829
2832
  $self->Error('No file specified');
@@ -1199,6 +1199,11 @@ For Unix-based systems, the value may also be a time zone ID like
1199
1199
  "America/New_York". Requires Time::Piece on Windows, or POSIX::tzset on
1200
1200
  other systems. Default is undef.
1201
1201
 
1202
+ =item UndefTags
1203
+
1204
+ Flag to maintain undefined tag values in the application B<-if> expression
1205
+ when the B<-f> or B<-m> option is also used. Default is undef.
1206
+
1202
1207
  =item Unknown
1203
1208
 
1204
1209
  Flag to get the values of unknown tags. If set to 1, unknown tags are
@@ -1,6 +1,6 @@
1
1
  Summary: perl module for image data extraction
2
2
  Name: perl-Image-ExifTool
3
- Version: 13.33
3
+ Version: 13.36
4
4
  Release: 1
5
5
  License: Artistic/GPL
6
6
  Group: Development/Libraries/Perl
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ExiftoolVendored
4
- VERSION = Gem::Version.new('13.33.0')
4
+ VERSION = Gem::Version.new('13.36.0')
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: exiftool_vendored
3
3
  version: !ruby/object:Gem::Version
4
- version: 13.33.0
4
+ version: 13.36.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew McEachen
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2025-07-30 00:00:00.000000000 Z
12
+ date: 2025-09-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: exiftool