exiftool-vendored.exe 13.40.0 → 13.42.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.
@@ -49,7 +49,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
49
49
  use Image::ExifTool::Exif;
50
50
  use Image::ExifTool::GPS;
51
51
 
52
- $VERSION = '3.22';
52
+ $VERSION = '3.23';
53
53
 
54
54
  sub ProcessMOV($$;$);
55
55
  sub ProcessKeys($$$);
@@ -578,11 +578,29 @@ my %userDefined = (
578
578
  return substr($val, 8, $len-8);
579
579
  },
580
580
  Binary => 1,
581
+ },{
582
+ Name => 'HighlightMarkers',
583
+ # (DJI Action 4, forum17700)
584
+ Notes => 'written by some DJI models',
585
+ Condition => '$$valPt =~ /^data.{4}hglg.{5}/s',
586
+ RawConv => q{
587
+ my $len = unpack 'x4N', $val;
588
+ return undef if $len < 13 or $len + 4 > length($val);
589
+ my $n = int(($len - 13) / 5);
590
+ my @a = map $_/1000, unpack "x17(xV)$n", $val;
591
+ return \@a;
592
+ },
581
593
  },{
582
594
  Unknown => 1,
583
595
  Binary => 1,
584
596
  },
585
- # (also Samsung WB750 uncompressed thumbnail data starting with "SDIC\0")
597
+ # DJI videos also have block of offset/size of various atoms, eg)
598
+ # Atom name ???? Offset Size
599
+ # 0000: 63 6f 76 72 00 00 00 00 00 ed 6f da 00 0a 46 e0 [covr......o...F.]
600
+ # 0010: 73 6e 61 6c 00 00 00 00 00 f7 b6 d2 00 0a 46 e0 [snal..........F.]
601
+ # 0020: 68 67 6c 67 00 00 00 00 01 02 0a a2 00 00 00 21 [hglg...........!]
602
+ # 0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [................]
603
+ # (also Samsung WB750 uncompressed thumbnail data starting with "SDIC\0")
586
604
  ],
587
605
  # fre1 - 4 bytes: "june" (Kodak PixPro SP360)
588
606
  frea => {
@@ -2815,6 +2833,7 @@ my %userDefined = (
2815
2833
  'xml ' => {
2816
2834
  Name => 'XML',
2817
2835
  Flags => [ 'Binary', 'Protected' ],
2836
+ BlockExtract => 1,
2818
2837
  SubDirectory => {
2819
2838
  TagTable => 'Image::ExifTool::XMP::XML',
2820
2839
  IgnoreProp => { NonRealTimeMeta => 1 }, # ignore container for Sony 'nrtm'
@@ -2865,6 +2884,7 @@ my %userDefined = (
2865
2884
  },
2866
2885
  idat => {
2867
2886
  Name => 'MetaImageSize', #PH (NC)
2887
+ Condition => '$$self{FileType} eq "HEIC"',
2868
2888
  Format => 'int16u',
2869
2889
  # (don't know what the first two numbers are for)
2870
2890
  PrintConv => '$val =~ s/^(\d+) (\d+) (\d+) (\d+)/${3}x$4/; $val',
@@ -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.01';
17
+ $VERSION = '1.02';
18
18
 
19
19
  sub ProcessR3D($$);
20
20
 
@@ -45,7 +45,8 @@ my $errTrunc = 'Truncated R3D file';
45
45
  RED2 => { Name => 'Red2Header', SubDirectory => { TagTable => 'Image::ExifTool::Red::RED2' } },
46
46
 
47
47
  # (upper 4 bits of tag ID are the format code)
48
- # ---- format 1 ----
48
+ # ---- format 0 (int8u) ----
49
+ # ---- format 1 (string) ----
49
50
  0x1000 => 'StartEdgeCode', #1
50
51
  0x1001 => { Name => 'StartTimecode', Groups => { 2 => 'Time' } }, #1
51
52
  0x1002 => { #1
@@ -104,6 +105,7 @@ my $errTrunc = 'Truncated R3D file';
104
105
  # 0x1041 - seen 'NA'
105
106
  0x1042 => 'Revision', # ? (seen "TODO, rev EPIC-1.0" and "MYSTERIUM X, rev EPIC-1.0")
106
107
  # 0x1051 - seen 'C', 'L'
108
+ # 0x1052 - seen 'E9'
107
109
  0x1056 => 'OriginalFileName',
108
110
  0x106e => 'LensMake',
109
111
  0x106f => 'LensNumber', # (last 2 hex digits are LensType)
@@ -120,7 +122,8 @@ my $errTrunc = 'Truncated R3D file';
120
122
  0x1096 => 'Filter', # optical low-pass filter
121
123
  0x10a0 => 'Brain',
122
124
  0x10a1 => 'Sensor',
123
- # ---- format 2 ----
125
+ 0x10be => 'Quality',
126
+ # ---- format 2 (float) ----
124
127
  0x200d => 'ColorTemperature',
125
128
  # 0x200e - (sometimes this is frame rate)
126
129
  # 0x2015 - seen '1 1 1' (RGBGain or RGBGamma?)
@@ -130,7 +133,8 @@ my $errTrunc = 'Truncated R3D file';
130
133
  Groups => { 2 => 'Video' },
131
134
  PrintConv => 'int($val * 1000 + 0.5) / 1000',
132
135
  },
133
- # ---- format 4 ----
136
+ # ---- format 3 (int8u?) ----
137
+ # ---- format 4 (int16u) ----
134
138
  0x4037 => { Name => 'CropArea' }, # (NC)
135
139
  0x403b => 'ISO',
136
140
  # 0x404e - related to CropArea (or "0 0 0 0")
@@ -138,8 +142,12 @@ my $errTrunc = 'Truncated R3D file';
138
142
  0x406b => 'FocalLength',
139
143
  # 0x4084 - related to ISO?
140
144
  # 0x4087 - related to ISO?
141
- # ---- format 6 ----
145
+ # ---- format 5 (int8s?) ----
146
+ # ---- format 6 (int32s) ----
142
147
  0x606c => { Name => 'FocusDistance', ValueConv => '$val/1000', PrintConv => '"$val m"' },
148
+ # ---- format 7 (undef? structure?) ----
149
+ # ---- format 8 (int32u?) ----
150
+ # ---- format 9 (undef?) ----
143
151
  );
144
152
 
145
153
  # RED1 file header (ref PH)
@@ -240,9 +248,11 @@ sub ProcessR3D($$)
240
248
  $pos = 0x22; # directory starts at offset 0x22
241
249
  } else {
242
250
  # calculate position of Red directory start
243
- length($buff) < 0x41 and return $et->Warn($errTrunc);
244
- my $n = Get8u(\$buff, 0x40); # number of "rdi" records
245
- $pos = 0x44 + $n * 0x18;
251
+ $pos = 0x44;
252
+ length($buff) < $pos and return $et->Warn($errTrunc);
253
+ $pos += Get8u(\$buff, 0x40) * 0x18; # skip "rdi" records
254
+ $pos += Get8u(\$buff, 0x41) * 0x14; # skip "rda" records
255
+ $pos += Get8u(\$buff, 0x42) * 0x10; # skip "rdx" records
246
256
  }
247
257
  if ($pos + 8 > length $buff) {
248
258
  $dirLen = 0; # find directory the hard way
@@ -253,7 +263,7 @@ sub ProcessR3D($$)
253
263
  # do sanity check on the directory size (in case our assumptions were wrong)
254
264
  if ($dirLen < 300 or $dirLen >= 2048 or $pos + $dirLen > length $buff) {
255
265
  # tag 0x1000 with length 0x000f should be near the directory start
256
- $buff =~ /\0\x0f\x10\0/g or return $et->Warn("Can't find Red directory");
266
+ $buff =~ /\0\x0f\x10[\0\x06]/g or return $et->Warn("Can't find Red directory. Please submit sample for testing");
257
267
  $pos = pos($buff) - 4;
258
268
  $dirEnd = length $buff;
259
269
  undef $dirLen;
@@ -21,8 +21,9 @@ use strict;
21
21
  use vars qw($VERSION %samsungLensTypes);
22
22
  use Image::ExifTool qw(:DataAccess :Utils);
23
23
  use Image::ExifTool::Exif;
24
+ use Image::ExifTool::JSON;
24
25
 
25
- $VERSION = '1.58';
26
+ $VERSION = '1.59';
26
27
 
27
28
  sub WriteSTMN($$$);
28
29
  sub ProcessINFO($$$);
@@ -1277,7 +1278,15 @@ my %formatMinMax = (
1277
1278
  # 0x0b51-name - seen 'Intelligent_PhotoEditor_Data' #forum16086
1278
1279
  # 0x0b60-name - seen 'UltraWide_PhotoEditor_Data' #forum16086
1279
1280
  # 0x0b90-name - seen 'Document_Scan_Info' #forum16086
1280
- # 0x0ba1-name - seen 'Original_Path_Hash_Key', 'PhotoEditor_Re_Edit_Data', 'deco_doodle_bitmap', 'deco_sticker_bitmap', 'deco_text_bitmap'
1281
+ # 0x0ba1-name - seen 'Original_Path_Hash_Key', 'PhotoEditor_Re_Edit_Data', 'deco_doodle_bitmap', 'deco_sticker_bitmap', 'deco_text_bitmap','PhotoEditor_Re_Edit_Data'
1282
+ '0x0ba1' => [{
1283
+ Name => 'ReEditData',
1284
+ Condition => '$$self{SamsungTagName} eq "PhotoEditor_Re_Edit_Data"',
1285
+ SubDirectory => { TagTable => 'Image::ExifTool::Samsung::ReEditData' },
1286
+ },{
1287
+ Name => 'OriginalPathHashKey',
1288
+ Condition => '$$self{SamsungTagName} eq "Original_Path_Hash_Key"',
1289
+ }],
1281
1290
  # 0x0ba2-name - seen 'Copy_Available_Edit_Info' #forum16086
1282
1291
  # 0x0bc0-name - seen 'Single_Relighting_Bokeh_Info' #forum16086
1283
1292
  # 0x0bd0-name - seen 'Dual_Relighting_Bokeh_Info' #forum16086
@@ -1300,7 +1309,7 @@ my %formatMinMax = (
1300
1309
  '0x0d91' => { #forum16086/16242
1301
1310
  Name => 'PEg_Info',
1302
1311
  Description => 'PEg Info',
1303
- SubDirectory => { TagTable => 'Image::ExifTool::JSON::Main' },
1312
+ SubDirectory => { TagTable => 'Image::ExifTool::Samsung::PEgInfo' },
1304
1313
  },
1305
1314
  # 0x0da1-name - seen 'Captured_App_Info' #forum16086
1306
1315
  # 0xa050-name - seen 'Jpeg360_2D_Info' (Samsung Gear 360)
@@ -1380,6 +1389,113 @@ my %formatMinMax = (
1380
1389
  perfMode => { },
1381
1390
  );
1382
1391
 
1392
+ %Image::ExifTool::Samsung::ReEditData = (
1393
+ GROUPS => { 0 => 'JSON', 2 => 'Image' },
1394
+ PROCESS_PROC => \&Image::ExifTool::JSON::ProcessJSON,
1395
+ VARS => { LONG_TAGS => 2 },
1396
+ originalPath => { },
1397
+ representativeFrameLoc => { },
1398
+ startMotionVideo => { },
1399
+ endMotionVideo => { },
1400
+ isMotionVideoMute => { },
1401
+ isTrimMotionVideo => { },
1402
+ clipInfoValue => { SubDirectory => { TagTable => 'Image::ExifTool::Samsung::ClipInfo' } },
1403
+ toneValue => { SubDirectory => { TagTable => 'Image::ExifTool::Samsung::ToneInfo' } },
1404
+ effectValue => { SubDirectory => { TagTable => 'Image::ExifTool::Samsung::EffectInfo' } },
1405
+ portraitEffectValue => { SubDirectory => { TagTable => 'Image::ExifTool::Samsung::PortraitEffect' } },
1406
+ isBlending => { },
1407
+ isNotReEdit => { },
1408
+ sepVersion => { Name => 'SEPVersion' },
1409
+ ndeVersion => { Name => 'NDEVersion' },
1410
+ reSize => { },
1411
+ isScaleAI => { },
1412
+ rotation => { },
1413
+ adjustmentValue => { },
1414
+ isApplyShapeCorrection => { },
1415
+ isNewReEditOnly => { },
1416
+ isDecoReEditOnly => { },
1417
+ isAIFilterReEditOnly=> { },
1418
+ );
1419
+
1420
+ %Image::ExifTool::Samsung::ClipInfo = (
1421
+ GROUPS => { 0 => 'JSON', 2 => 'Image' },
1422
+ PROCESS_PROC => \&Image::ExifTool::JSON::ProcessJSON,
1423
+ mCenterX => { Name => 'ClipCenterX' },
1424
+ mCenterY => { Name => 'ClipCenterY' },
1425
+ mWidth => { Name => 'ClipWidth' },
1426
+ mHeight => { Name => 'ClipHeight' },
1427
+ mRotation => { Name => 'ClipRotation' },
1428
+ mRotate => { Name => 'ClipRotate' },
1429
+ mHFlip => { Name => 'ClipHFlip' },
1430
+ mVFlip => { Name => 'ClipVFlip' },
1431
+ mRotationEffect => { Name => 'ClipRotationEffect' },
1432
+ mRotateEffect => { Name => 'ClipRotateEffect' },
1433
+ mHFlipEffect => { Name => 'ClipHFlipEffect' },
1434
+ mVFlipEffect => { Name => 'ClipVFlipEffect' },
1435
+ mHozPerspective => { Name => 'ClipHozPerspective' },
1436
+ mVerPerspective => { Name => 'ClipVerPerspective' },
1437
+ );
1438
+
1439
+ %Image::ExifTool::Samsung::ToneInfo = (
1440
+ GROUPS => { 0 => 'JSON', 2 => 'Image' },
1441
+ PROCESS_PROC => \&Image::ExifTool::JSON::ProcessJSON,
1442
+ brightness => { },
1443
+ exposure => { },
1444
+ contrast => { },
1445
+ saturation => { },
1446
+ hue => { },
1447
+ wbMode => { Name => 'WBMode' },
1448
+ wbTemperature => { Name => 'WBTemperature' },
1449
+ tint => { },
1450
+ shadow => { },
1451
+ highlight => { },
1452
+ lightbalance => { },
1453
+ sharpness => { },
1454
+ definition => { },
1455
+ isBrightnessIPE => { },
1456
+ isExposureIPE => { },
1457
+ isContrastIPE => { },
1458
+ isSaturationIPE => { },
1459
+ );
1460
+
1461
+ %Image::ExifTool::Samsung::EffectInfo = (
1462
+ GROUPS => { 0 => 'JSON', 2 => 'Image' },
1463
+ PROCESS_PROC => \&Image::ExifTool::JSON::ProcessJSON,
1464
+ filterIndication=> { },
1465
+ alphaValue => { },
1466
+ filterType => { },
1467
+ );
1468
+
1469
+ %Image::ExifTool::Samsung::PortraitEffect = (
1470
+ GROUPS => { 0 => 'JSON', 2 => 'Image' },
1471
+ PROCESS_PROC => \&Image::ExifTool::JSON::ProcessJSON,
1472
+ VARS => { LONG_TAGS => 1 },
1473
+ effectId => { Name => 'PortraitEffectID' },
1474
+ effectLevel => { Name => 'PortraitEffectLevel' },
1475
+ exifRotation => { Name => 'PortraitExifRotation' },
1476
+ lightLevel => { Name => 'PortraitLightLevel' },
1477
+ touchX => { Name => 'PortraitTouchX' },
1478
+ touchY => { Name => 'PortraitTouchY' },
1479
+ refocusX => { Name => 'PortraitRefocusX' },
1480
+ refocusY => { Name => 'PortraitRefocusY' },
1481
+ effectIdOriginal => { Name => 'PortraitEffectIDOriginal' },
1482
+ effectLevelOriginal => { Name => 'EffectLevelOriginal' },
1483
+ lightLevelOriginal => { Name => 'LightLevelOriginal' },
1484
+ touchXOriginal => { },
1485
+ touchYOriginal => { },
1486
+ refocusXOriginal=> { },
1487
+ refocusYOriginal=> { },
1488
+ waterMarkRemoved=> { Name => 'WaterMarkRemoved' },
1489
+ waterMarkRemovedOriginal => { Name => 'WaterMarkRemovedOriginal' },
1490
+ );
1491
+
1492
+ %Image::ExifTool::Samsung::PEgInfo = (
1493
+ GROUPS => { 0 => 'JSON', 2 => 'Image' },
1494
+ PROCESS_PROC => \&Image::ExifTool::JSON::ProcessJSON,
1495
+ genImageVersion => { },
1496
+ connectorType => { },
1497
+ );
1498
+
1383
1499
  # Samsung composite tags
1384
1500
  %Image::ExifTool::Samsung::Composite = (
1385
1501
  GROUPS => { 2 => 'Image' },
@@ -1625,7 +1741,14 @@ SamBlock:
1625
1741
  }
1626
1742
  next;
1627
1743
  }
1628
- last unless $buff =~ /^SEFH/ and $len >= 12; # validate SEFH header
1744
+ # validate SEFH header
1745
+ unless ($buff =~ /^SEFH/ and $len >= 12) {
1746
+ # tolerate extra junk written by Samsung Gallery
1747
+ last unless $buff =~ /\0\0SEFT/g;
1748
+ $et->Warn('Trailer likely corrupted by Samsung Gallery');
1749
+ $blockEnd += pos($buff);
1750
+ next;
1751
+ }
1629
1752
  my $dirPos = $raf->Tell() - $len;
1630
1753
  # my $ver = Get32u(\$buff, 0x04); # version (=101)
1631
1754
  my $count = Get32u(\$buff, 0x08);
@@ -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.79';
37
+ $VERSION = '3.80';
38
38
 
39
39
  sub ProcessSRF($$$);
40
40
  sub ProcessSR2($$$);
@@ -10656,7 +10656,7 @@ my %isoSetting2010 = (
10656
10656
  0x8101 => { Name => 'Sony_rtmd_0x8101', Format => 'int8u', %hidUnk }, # seen: 0,1,2
10657
10657
  0x8104 => { Name => 'Sony_rtmd_0x8104', Format => 'int16u', %hidUnk }, # seen: 35616
10658
10658
  0x8105 => { Name => 'Sony_rtmd_0x8105', Format => 'int16u', %hidUnk }, # seen: 20092
10659
- 0x8106 => { Name => 'Sony_rtmd_0x8106', Format => 'int32u', %hidUnk }, # seen: "25 1","24000 1001" frame rate?
10659
+ 0x8106 => { Name => 'FrameRate', Format => 'rational64u', PrintConv => 'sprintf("%.2f",$val)' },
10660
10660
  0x8109 => { #forum12218
10661
10661
  Name => 'ExposureTime',
10662
10662
  Format => 'rational64u',
@@ -10674,7 +10674,9 @@ my %isoSetting2010 = (
10674
10674
  Format => 'int16u',
10675
10675
  },
10676
10676
  0x810d => { Name => 'Sony_rtmd_0x810d', Format => 'int8u', %hidUnk }, # seen: 0,1
10677
+ 0x8114 => { Name => 'SerialNumber', Format => 'string' }, # (and model, eg. "ILCE-7SM3 5072108")
10677
10678
  0x8115 => { Name => 'Sony_rtmd_0x8115', Format => 'int16u', %hidUnk }, # seen: 100 - ISO
10679
+ # 0x8119 - seen "P" (same as 0x811e?)
10678
10680
  # 0x8300 - container for other tags in this format
10679
10681
  0x8500 => {
10680
10682
  Name => 'GPSVersionID',
@@ -7840,6 +7840,7 @@ my %tagExists = (
7840
7840
  'adjustedtbnimagewidth' => 1,
7841
7841
  'adjustmentdata' => 1,
7842
7842
  'adjustmentssettingsstatisticslightmap' => 1,
7843
+ 'adjustmentvalue' => 1,
7843
7844
  'adobe_cm' => 1,
7844
7845
  'adobecmtype' => 1,
7845
7846
  'adobecrw' => 1,
@@ -7948,6 +7949,7 @@ my %tagExists = (
7948
7949
  'alphaoffset' => 1,
7949
7950
  'alphapreprocessing' => 1,
7950
7951
  'alphasample' => 1,
7952
+ 'alphavalue' => 1,
7951
7953
  'alternatealtitude' => 1,
7952
7954
  'alternateduotonecolors' => 1,
7953
7955
  'alternateellipsoidheight' => 1,
@@ -8719,11 +8721,26 @@ my %tagExists = (
8719
8721
  'cleanfaxdata' => 1,
8720
8722
  'clientid' => 1,
8721
8723
  'clipboundary' => 1,
8724
+ 'clipcenterx' => 1,
8725
+ 'clipcentery' => 1,
8726
+ 'clipheight' => 1,
8727
+ 'cliphflip' => 1,
8728
+ 'cliphflipeffect' => 1,
8729
+ 'cliphozperspective' => 1,
8730
+ 'clipinfovalue' => 1,
8722
8731
  'clipobjects' => 1,
8723
8732
  'clippath' => 1,
8724
8733
  'clippingboundary' => 1,
8725
8734
  'clippinglimit' => 1,
8726
8735
  'clippingpathname' => 1,
8736
+ 'cliprotate' => 1,
8737
+ 'cliprotateeffect' => 1,
8738
+ 'cliprotation' => 1,
8739
+ 'cliprotationeffect' => 1,
8740
+ 'clipverperspective' => 1,
8741
+ 'clipvflip' => 1,
8742
+ 'clipvflipeffect' => 1,
8743
+ 'clipwidth' => 1,
8727
8744
  'cloneid' => 1,
8728
8745
  'cloneobject' => 1,
8729
8746
  'clonetype' => 1,
@@ -8895,6 +8912,7 @@ my %tagExists = (
8895
8912
  'confidencemapimage' => 1,
8896
8913
  'confirmedobjectsize' => 1,
8897
8914
  'connectionspaceilluminant' => 1,
8915
+ 'connectortype' => 1,
8898
8916
  'consecutivebadfaxlines' => 1,
8899
8917
  'consoledata' => 1,
8900
8918
  'consolefedata' => 1,
@@ -9183,6 +9201,7 @@ my %tagExists = (
9183
9201
  'defectlistpacked' => 1,
9184
9202
  'defineobject' => 1,
9185
9203
  'definequantizationtable' => 1,
9204
+ 'definition' => 1,
9186
9205
  'delay' => 1,
9187
9206
  'delaycols' => 1,
9188
9207
  'delaytime' => 1,
@@ -9420,9 +9439,11 @@ my %tagExists = (
9420
9439
  'ef' => 1,
9421
9440
  'effect' => 1,
9422
9441
  'effectivebw' => 1,
9442
+ 'effectleveloriginal' => 1,
9423
9443
  'effectstrength' => 1,
9424
9444
  'effectsvisible' => 1,
9425
9445
  'effecttype' => 1,
9446
+ 'effectvalue' => 1,
9426
9447
  'eighteenpercentpoint' => 1,
9427
9448
  'eighthlanguage' => 1,
9428
9449
  'electricalextendermagnification' => 1,
@@ -9469,12 +9490,15 @@ my %tagExists = (
9469
9490
  'encryption' => 1,
9470
9491
  'enddate' => 1,
9471
9492
  'endianness' => 1,
9493
+ 'endmotionvideo' => 1,
9472
9494
  'endpoints' => 1,
9473
9495
  'endtime' => 1,
9474
9496
  'endtimecode' => 1,
9475
9497
  'entrypoint' => 1,
9476
9498
  'entrytype' => 1,
9477
9499
  'environmentmap' => 1,
9500
+ 'environmenttarget' => 1,
9501
+ 'environmenttargetunicode' => 1,
9478
9502
  'envvardata' => 1,
9479
9503
  'eppim' => 1,
9480
9504
  'eprint' => 1,
@@ -9700,6 +9724,7 @@ my %tagExists = (
9700
9724
  'filmrollnumber' => 1,
9701
9725
  'filmsize' => 1,
9702
9726
  'filter' => 1,
9727
+ 'filterindication' => 1,
9703
9728
  'filterinfo' => 1,
9704
9729
  'filtering' => 1,
9705
9730
  'filtermodel' => 1,
@@ -9708,6 +9733,7 @@ my %tagExists = (
9708
9733
  'filterparametersexportexportdata' => 1,
9709
9734
  'filterpartnumber' => 1,
9710
9735
  'filterserialnumber' => 1,
9736
+ 'filtertype' => 1,
9711
9737
  'finalflushsequence' => 1,
9712
9738
  'finalframeblocks' => 1,
9713
9739
  'finetune' => 1,
@@ -9918,6 +9944,7 @@ my %tagExists = (
9918
9944
  'genericflagdata01' => 1,
9919
9945
  'genflags' => 1,
9920
9946
  'gengraphicsmode' => 1,
9947
+ 'genimageversion' => 1,
9921
9948
  'genmediaheader' => 1,
9922
9949
  'genmediainfo' => 1,
9923
9950
  'genmediaversion' => 1,
@@ -10143,6 +10170,7 @@ my %tagExists = (
10143
10170
  'highisomode' => 1,
10144
10171
  'highlightdata' => 1,
10145
10172
  'highlightendpoints' => 1,
10173
+ 'highlightmarkers' => 1,
10146
10174
  'highnote' => 1,
10147
10175
  'highvelocity' => 1,
10148
10176
  'hindsightsettings' => 1,
@@ -10425,15 +10453,25 @@ my %tagExists = (
10425
10453
  'irwindowtransmission' => 1,
10426
10454
  'is_protected' => 1,
10427
10455
  'is_trusted' => 1,
10456
+ 'isaifilterreeditonly' => 1,
10457
+ 'isapplyshapecorrection' => 1,
10428
10458
  'isartbokeh' => 1,
10429
10459
  'isattachment' => 1,
10430
10460
  'isbasefont' => 1,
10461
+ 'isblending' => 1,
10462
+ 'isbrightnessipe' => 1,
10431
10463
  'iscompleted' => 1,
10464
+ 'iscontrastipe' => 1,
10465
+ 'isdecoreeditonly' => 1,
10432
10466
  'isdeleted' => 1,
10467
+ 'isexposureipe' => 1,
10433
10468
  'isfixedpitch' => 1,
10434
10469
  'isfixedv' => 1,
10435
10470
  'isinfoa100' => 1,
10471
+ 'ismotionvideomute' => 1,
10436
10472
  'isnetworkfeed' => 1,
10473
+ 'isnewreeditonly' => 1,
10474
+ 'isnotreedit' => 1,
10437
10475
  'isoautooffset' => 1,
10438
10476
  'isocalibrationgaintable' => 1,
10439
10477
  'isoinfo' => 1,
@@ -10446,6 +10484,9 @@ my %tagExists = (
10446
10484
  'isprotected' => 1,
10447
10485
  'isrcnumber' => 1,
10448
10486
  'isrecurring' => 1,
10487
+ 'issaturationipe' => 1,
10488
+ 'isscaleai' => 1,
10489
+ 'istrimmotionvideo' => 1,
10449
10490
  'isvbr' => 1,
10450
10491
  'it8header' => 1,
10451
10492
  'italic' => 1,
@@ -10713,7 +10754,9 @@ my %tagExists = (
10713
10754
  'licenseedir' => 1,
10714
10755
  'licenseinfourl' => 1,
10715
10756
  'licenseurl' => 1,
10757
+ 'lightbalance' => 1,
10716
10758
  'lightingopt' => 1,
10759
+ 'lightleveloriginal' => 1,
10717
10760
  'lightness' => 1,
10718
10761
  'lightroomworkflow' => 1,
10719
10762
  'lights' => 1,
@@ -10827,6 +10870,7 @@ my %tagExists = (
10827
10870
  'maininfoifd' => 1,
10828
10871
  'makeandmodel' => 1,
10829
10872
  'makemodel' => 1,
10873
+ 'makernotebyteorder' => 1,
10830
10874
  'makernotepentax5a' => 1,
10831
10875
  'makernotepentax5b' => 1,
10832
10876
  'makernotepentax5c' => 1,
@@ -11267,6 +11311,7 @@ my %tagExists = (
11267
11311
  'nativeyresolution' => 1,
11268
11312
  'nbcd' => 1,
11269
11313
  'ncc' => 1,
11314
+ 'ndeversion' => 1,
11270
11315
  'nemoblurkernel' => 1,
11271
11316
  'nemodarklimit' => 1,
11272
11317
  'nemogainfactors' => 1,
@@ -11504,6 +11549,8 @@ my %tagExists = (
11504
11549
  'originalmedia' => 1,
11505
11550
  'originalmediatype' => 1,
11506
11551
  'originalmedium' => 1,
11552
+ 'originalpath' => 1,
11553
+ 'originalpathhashkey' => 1,
11507
11554
  'originalpayloadframecount' => 1,
11508
11555
  'originalrawcreator' => 1,
11509
11556
  'originalrawfiletype' => 1,
@@ -11755,9 +11802,19 @@ my %tagExists = (
11755
11802
  'popularimeter' => 1,
11756
11803
  'popupfillattributes' => 1,
11757
11804
  'popupflash' => 1,
11805
+ 'portraiteffectid' => 1,
11806
+ 'portraiteffectidoriginal' => 1,
11807
+ 'portraiteffectlevel' => 1,
11808
+ 'portraiteffectvalue' => 1,
11809
+ 'portraitexifrotation' => 1,
11810
+ 'portraitlightlevel' => 1,
11758
11811
  'portraitmatrix' => 1,
11759
11812
  'portraitoffset' => 1,
11813
+ 'portraitrefocusx' => 1,
11814
+ 'portraitrefocusy' => 1,
11760
11815
  'portraittonescaletable' => 1,
11816
+ 'portraittouchx' => 1,
11817
+ 'portraittouchy' => 1,
11761
11818
  'poseyawdegrees' => 1,
11762
11819
  'position' => 1,
11763
11820
  'postertime' => 1,
@@ -12092,6 +12149,7 @@ my %tagExists = (
12092
12149
  'redtrc' => 1,
12093
12150
  'redx' => 1,
12094
12151
  'redy' => 1,
12152
+ 'reeditdata' => 1,
12095
12153
  'reelnumber' => 1,
12096
12154
  'reeltimecode' => 1,
12097
12155
  'reference' => 1,
@@ -12102,6 +12160,8 @@ my %tagExists = (
12102
12160
  'reflection' => 1,
12103
12161
  'reflectionhardcopyorigcolorimetry' => 1,
12104
12162
  'reflectionprintoutputcolorimetry' => 1,
12163
+ 'refocusxoriginal' => 1,
12164
+ 'refocusyoriginal' => 1,
12105
12165
  'refresh' => 1,
12106
12166
  'regionxformtackpoint' => 1,
12107
12167
  'registerreadtiming' => 1,
@@ -12144,6 +12204,7 @@ my %tagExists = (
12144
12204
  'replyto' => 1,
12145
12205
  'representativedisparityfar' => 1,
12146
12206
  'representativedisparitynear' => 1,
12207
+ 'representativeframeloc' => 1,
12147
12208
  'representativeimage' => 1,
12148
12209
  'requestid' => 1,
12149
12210
  'requeststate' => 1,
@@ -12160,6 +12221,7 @@ my %tagExists = (
12160
12221
  'reservedblob7' => 1,
12161
12222
  'reservedblob8' => 1,
12162
12223
  'reservedblob9' => 1,
12224
+ 'resize' => 1,
12163
12225
  'resolutioninfo' => 1,
12164
12226
  'resolutionxlengthunit' => 1,
12165
12227
  'resolutionxunit' => 1,
@@ -12436,6 +12498,7 @@ my %tagExists = (
12436
12498
  'sensorrightborder' => 1,
12437
12499
  'sensorvelocityeast' => 1,
12438
12500
  'sensorvelocitynorth' => 1,
12501
+ 'sepversion' => 1,
12439
12502
  'seqcount' => 1,
12440
12503
  'seqfinal' => 1,
12441
12504
  'seqframeinfo' => 1,
@@ -12664,6 +12727,7 @@ my %tagExists = (
12664
12727
  'starring' => 1,
12665
12728
  'startdate' => 1,
12666
12729
  'startedgecode' => 1,
12730
+ 'startmotionvideo' => 1,
12667
12731
  'startofframe' => 1,
12668
12732
  'startreading' => 1,
12669
12733
  'starttime' => 1,
@@ -13044,6 +13108,7 @@ my %tagExists = (
13044
13108
  'tonescale9' => 1,
13045
13109
  'tonescale9spline' => 1,
13046
13110
  'tonespaceflow' => 1,
13111
+ 'tonevalue' => 1,
13047
13112
  'tonscaletable' => 1,
13048
13113
  'tool_name' => 1,
13049
13114
  'tool_version' => 1,
@@ -13066,6 +13131,8 @@ my %tagExists = (
13066
13131
  'totalparts' => 1,
13067
13132
  'totalsamples' => 1,
13068
13133
  'totalsize' => 1,
13134
+ 'touchxoriginal' => 1,
13135
+ 'touchyoriginal' => 1,
13069
13136
  'toycamerafilter' => 1,
13070
13137
  'trackaperture' => 1,
13071
13138
  'trackcategory' => 1,
@@ -13375,6 +13442,8 @@ my %tagExists = (
13375
13442
  'watched' => 1,
13376
13443
  'watercolorfilter' => 1,
13377
13444
  'watermark' => 1,
13445
+ 'watermarkremoved' => 1,
13446
+ 'watermarkremovedoriginal' => 1,
13378
13447
  'watermarktype' => 1,
13379
13448
  'watermarkurl' => 1,
13380
13449
  'wave' => 1,
@@ -13428,6 +13497,7 @@ my %tagExists = (
13428
13497
  'wbredtungsten' => 1,
13429
13498
  'wbsettings' => 1,
13430
13499
  'wbsettings2' => 1,
13500
+ 'wbtemperature' => 1,
13431
13501
  'wcsprofiles' => 1,
13432
13502
  'weaponfired' => 1,
13433
13503
  'weaponload' => 1,