exiftool-vendored.exe 13.41.0 → 13.43.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.
@@ -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.60';
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,12 +1309,22 @@ 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)
1307
1316
  # 0xa050 - seen 'Jpeg3602D' (Samsung Gear 360)
1317
+ # 0x0c61-name - seen 'Camera_Capture_Mode_Info'
1318
+ # 0x0c61 - seen '1'
1308
1319
  # 0x0c81-name - seen 'Watermark_Info'
1320
+ # 0x0ce1-name - seen 'Gallery_DC_Data'
1321
+ # 0x0ce1 - seen '0,109,2,19010102,4000,3000,0,0,0,0;116.284004;1.0'
1322
+ # 0x0e41-name - seen 'Video_Edited_UTC_Offset'
1323
+ # 0x0e41 - seen '+0800'
1324
+ '0x0e41' => {
1325
+ Name => 'VideoEditedTimeZone',
1326
+ Groups => { 2 => 'Time' },
1327
+ },
1309
1328
  );
1310
1329
 
1311
1330
  # DualShot Extra Info (ref PH)
@@ -1380,6 +1399,113 @@ my %formatMinMax = (
1380
1399
  perfMode => { },
1381
1400
  );
1382
1401
 
1402
+ %Image::ExifTool::Samsung::ReEditData = (
1403
+ GROUPS => { 0 => 'JSON', 2 => 'Image' },
1404
+ PROCESS_PROC => \&Image::ExifTool::JSON::ProcessJSON,
1405
+ VARS => { LONG_TAGS => 2 },
1406
+ originalPath => { },
1407
+ representativeFrameLoc => { },
1408
+ startMotionVideo => { },
1409
+ endMotionVideo => { },
1410
+ isMotionVideoMute => { },
1411
+ isTrimMotionVideo => { },
1412
+ clipInfoValue => { SubDirectory => { TagTable => 'Image::ExifTool::Samsung::ClipInfo' } },
1413
+ toneValue => { SubDirectory => { TagTable => 'Image::ExifTool::Samsung::ToneInfo' } },
1414
+ effectValue => { SubDirectory => { TagTable => 'Image::ExifTool::Samsung::EffectInfo' } },
1415
+ portraitEffectValue => { SubDirectory => { TagTable => 'Image::ExifTool::Samsung::PortraitEffect' } },
1416
+ isBlending => { },
1417
+ isNotReEdit => { },
1418
+ sepVersion => { Name => 'SEPVersion' },
1419
+ ndeVersion => { Name => 'NDEVersion' },
1420
+ reSize => { },
1421
+ isScaleAI => { },
1422
+ rotation => { },
1423
+ adjustmentValue => { },
1424
+ isApplyShapeCorrection => { },
1425
+ isNewReEditOnly => { },
1426
+ isDecoReEditOnly => { },
1427
+ isAIFilterReEditOnly=> { },
1428
+ );
1429
+
1430
+ %Image::ExifTool::Samsung::ClipInfo = (
1431
+ GROUPS => { 0 => 'JSON', 2 => 'Image' },
1432
+ PROCESS_PROC => \&Image::ExifTool::JSON::ProcessJSON,
1433
+ mCenterX => { Name => 'ClipCenterX' },
1434
+ mCenterY => { Name => 'ClipCenterY' },
1435
+ mWidth => { Name => 'ClipWidth' },
1436
+ mHeight => { Name => 'ClipHeight' },
1437
+ mRotation => { Name => 'ClipRotation' },
1438
+ mRotate => { Name => 'ClipRotate' },
1439
+ mHFlip => { Name => 'ClipHFlip' },
1440
+ mVFlip => { Name => 'ClipVFlip' },
1441
+ mRotationEffect => { Name => 'ClipRotationEffect' },
1442
+ mRotateEffect => { Name => 'ClipRotateEffect' },
1443
+ mHFlipEffect => { Name => 'ClipHFlipEffect' },
1444
+ mVFlipEffect => { Name => 'ClipVFlipEffect' },
1445
+ mHozPerspective => { Name => 'ClipHozPerspective' },
1446
+ mVerPerspective => { Name => 'ClipVerPerspective' },
1447
+ );
1448
+
1449
+ %Image::ExifTool::Samsung::ToneInfo = (
1450
+ GROUPS => { 0 => 'JSON', 2 => 'Image' },
1451
+ PROCESS_PROC => \&Image::ExifTool::JSON::ProcessJSON,
1452
+ brightness => { },
1453
+ exposure => { },
1454
+ contrast => { },
1455
+ saturation => { },
1456
+ hue => { },
1457
+ wbMode => { Name => 'WBMode' },
1458
+ wbTemperature => { Name => 'WBTemperature' },
1459
+ tint => { },
1460
+ shadow => { },
1461
+ highlight => { },
1462
+ lightbalance => { },
1463
+ sharpness => { },
1464
+ definition => { },
1465
+ isBrightnessIPE => { },
1466
+ isExposureIPE => { },
1467
+ isContrastIPE => { },
1468
+ isSaturationIPE => { },
1469
+ );
1470
+
1471
+ %Image::ExifTool::Samsung::EffectInfo = (
1472
+ GROUPS => { 0 => 'JSON', 2 => 'Image' },
1473
+ PROCESS_PROC => \&Image::ExifTool::JSON::ProcessJSON,
1474
+ filterIndication=> { },
1475
+ alphaValue => { },
1476
+ filterType => { },
1477
+ );
1478
+
1479
+ %Image::ExifTool::Samsung::PortraitEffect = (
1480
+ GROUPS => { 0 => 'JSON', 2 => 'Image' },
1481
+ PROCESS_PROC => \&Image::ExifTool::JSON::ProcessJSON,
1482
+ VARS => { LONG_TAGS => 1 },
1483
+ effectId => { Name => 'PortraitEffectID' },
1484
+ effectLevel => { Name => 'PortraitEffectLevel' },
1485
+ exifRotation => { Name => 'PortraitExifRotation' },
1486
+ lightLevel => { Name => 'PortraitLightLevel' },
1487
+ touchX => { Name => 'PortraitTouchX' },
1488
+ touchY => { Name => 'PortraitTouchY' },
1489
+ refocusX => { Name => 'PortraitRefocusX' },
1490
+ refocusY => { Name => 'PortraitRefocusY' },
1491
+ effectIdOriginal => { Name => 'PortraitEffectIDOriginal' },
1492
+ effectLevelOriginal => { Name => 'EffectLevelOriginal' },
1493
+ lightLevelOriginal => { Name => 'LightLevelOriginal' },
1494
+ touchXOriginal => { },
1495
+ touchYOriginal => { },
1496
+ refocusXOriginal=> { },
1497
+ refocusYOriginal=> { },
1498
+ waterMarkRemoved=> { Name => 'WaterMarkRemoved' },
1499
+ waterMarkRemovedOriginal => { Name => 'WaterMarkRemovedOriginal' },
1500
+ );
1501
+
1502
+ %Image::ExifTool::Samsung::PEgInfo = (
1503
+ GROUPS => { 0 => 'JSON', 2 => 'Image' },
1504
+ PROCESS_PROC => \&Image::ExifTool::JSON::ProcessJSON,
1505
+ genImageVersion => { },
1506
+ connectorType => { },
1507
+ );
1508
+
1383
1509
  # Samsung composite tags
1384
1510
  %Image::ExifTool::Samsung::Composite = (
1385
1511
  GROUPS => { 2 => 'Image' },
@@ -1625,7 +1751,14 @@ SamBlock:
1625
1751
  }
1626
1752
  next;
1627
1753
  }
1628
- last unless $buff =~ /^SEFH/ and $len >= 12; # validate SEFH header
1754
+ # validate SEFH header
1755
+ unless ($buff =~ /^SEFH/ and $len >= 12) {
1756
+ # tolerate extra junk written by Samsung Gallery
1757
+ last unless $buff =~ /\0\0SEFT/g;
1758
+ $et->Warn('Trailer likely corrupted by Samsung Gallery');
1759
+ $blockEnd += pos($buff);
1760
+ next;
1761
+ }
1629
1762
  my $dirPos = $raf->Tell() - $len;
1630
1763
  # my $ver = Get32u(\$buff, 0x04); # version (=101)
1631
1764
  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.81';
38
38
 
39
39
  sub ProcessSRF($$$);
40
40
  sub ProcessSR2($$$);
@@ -2215,6 +2215,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
2215
2215
  403 => 'ILCE-6100A', #JR
2216
2216
  404 => 'DSC-RX100M7A', #github347
2217
2217
  406 => 'ILME-FX2', #JR
2218
+ 407 => 'ILCE-7M5', #PH
2218
2219
  408 => 'ZV-1A', #JR
2219
2220
  },
2220
2221
  },
@@ -10656,7 +10657,7 @@ my %isoSetting2010 = (
10656
10657
  0x8101 => { Name => 'Sony_rtmd_0x8101', Format => 'int8u', %hidUnk }, # seen: 0,1,2
10657
10658
  0x8104 => { Name => 'Sony_rtmd_0x8104', Format => 'int16u', %hidUnk }, # seen: 35616
10658
10659
  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?
10660
+ 0x8106 => { Name => 'FrameRate', Format => 'rational64u', PrintConv => 'sprintf("%.2f",$val)' },
10660
10661
  0x8109 => { #forum12218
10661
10662
  Name => 'ExposureTime',
10662
10663
  Format => 'rational64u',
@@ -10674,7 +10675,9 @@ my %isoSetting2010 = (
10674
10675
  Format => 'int16u',
10675
10676
  },
10676
10677
  0x810d => { Name => 'Sony_rtmd_0x810d', Format => 'int8u', %hidUnk }, # seen: 0,1
10678
+ 0x8114 => { Name => 'SerialNumber', Format => 'string' }, # (and model, eg. "ILCE-7SM3 5072108")
10677
10679
  0x8115 => { Name => 'Sony_rtmd_0x8115', Format => 'int16u', %hidUnk }, # seen: 100 - ISO
10680
+ # 0x8119 - seen "P" (same as 0x811e?)
10678
10681
  # 0x8300 - container for other tags in this format
10679
10682
  0x8500 => {
10680
10683
  Name => 'GPSVersionID',