exiftool_vendored 13.19.0 → 13.21.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.
- checksums.yaml +4 -4
- data/bin/Changes +25 -2
- data/bin/MANIFEST +6 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +2 -2
- data/bin/exiftool +138 -64
- data/bin/lib/Image/ExifTool/DJI.pm +85 -23
- data/bin/lib/Image/ExifTool/EXE.pm +2 -9
- data/bin/lib/Image/ExifTool/GoPro.pm +28 -0
- data/bin/lib/Image/ExifTool/JSON.pm +5 -1
- data/bin/lib/Image/ExifTool/Nikon.pm +808 -524
- data/bin/lib/Image/ExifTool/Olympus.pm +2 -1
- data/bin/lib/Image/ExifTool/PLIST.pm +57 -32
- data/bin/lib/Image/ExifTool/Plot.pm +492 -0
- data/bin/lib/Image/ExifTool/Protobuf.pm +21 -10
- data/bin/lib/Image/ExifTool/QuickTime.pm +41 -31
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +56 -22
- data/bin/lib/Image/ExifTool/RIFF.pm +3 -3
- data/bin/lib/Image/ExifTool/TagLookup.pm +4988 -4965
- data/bin/lib/Image/ExifTool/TagNames.pod +155 -65
- data/bin/lib/Image/ExifTool/WritePDF.pl +1 -1
- data/bin/lib/Image/ExifTool/Writer.pl +0 -1
- data/bin/lib/Image/ExifTool/XMP.pm +1 -1
- data/bin/lib/Image/ExifTool.pm +16 -2
- data/bin/lib/Image/ExifTool.pod +27 -0
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +3 -2
@@ -21,11 +21,12 @@ use Image::ExifTool::Protobuf;
|
|
21
21
|
$VERSION = '1.13';
|
22
22
|
|
23
23
|
sub ProcessDJIInfo($$$);
|
24
|
+
sub ProcessSettings($$$);
|
24
25
|
|
25
26
|
%knownProtocol = (
|
26
27
|
'dvtm_ac203.proto' => 1, # Osmo Action 4
|
27
28
|
'dvtm_ac204.proto' => 1, # Osmo Action 5
|
28
|
-
'dvtm_AVATA2.proto' => 1, #
|
29
|
+
'dvtm_AVATA2.proto' => 1, # Avata 2
|
29
30
|
'dvtm_wm265e.proto' => 1, # Mavic 3
|
30
31
|
'dvtm_pm320.proto' => 1, # Matrice 30
|
31
32
|
'dvtm_Mini4_Pro.proto' => 1, # Matrice 30
|
@@ -197,6 +198,27 @@ my %convFloat2 = (
|
|
197
198
|
},
|
198
199
|
);
|
199
200
|
|
201
|
+
%Image::ExifTool::DJI::Glamour = (
|
202
|
+
GROUPS => { 0 => 'QuickTime', 1 => 'DJI', 2 => 'Image' },
|
203
|
+
PROCESS_PROC => \&Image::ExifTool::DJI::ProcessSettings,
|
204
|
+
NOTES => 'Glamour settings used by some DJI models.',
|
205
|
+
beauty_enable => 'BeautyEnable',
|
206
|
+
smoother => 'Smoother',
|
207
|
+
whitening => 'Whitening',
|
208
|
+
face_slimming => 'FaceSlimming',
|
209
|
+
eye_enlarge => 'EyeEnlarge',
|
210
|
+
nose_slimming => 'NoseSlimming',
|
211
|
+
mouth_beautify => 'MouthModify',
|
212
|
+
teeth_whitening => 'TeethWhitening',
|
213
|
+
leg_longer => 'LegLonger',
|
214
|
+
head_shrinking => 'HeadShrinking',
|
215
|
+
lipstick => 'Lipstick',
|
216
|
+
blush => 'Blush',
|
217
|
+
dark_circle => 'DarkCircle',
|
218
|
+
acne_spot_removal=>'AcneSpotRemoval',
|
219
|
+
eyebrows => 'Eyebrows',
|
220
|
+
);
|
221
|
+
|
200
222
|
# metadata in protobuf format (djmd and dbgi meta types, ref PH)
|
201
223
|
%Image::ExifTool::DJI::Protobuf = (
|
202
224
|
GROUPS => { 0 => 'Protobuf', 1 => 'DJI', 2 => 'Camera' },
|
@@ -210,7 +232,7 @@ my %convFloat2 = (
|
|
210
232
|
file name combined with the hierarchical protobuf field numbers.
|
211
233
|
|
212
234
|
ExifTool currently extracts timed GPS plus a few other tags from DJI devices
|
213
|
-
which use the following protocols: dvtm_AVATA2.proto (
|
235
|
+
which use the following protocols: dvtm_AVATA2.proto (Avata 2),
|
214
236
|
dvtm_ac203.proto (Osmo Action 4), dvtm_ac204.proto (Osmo Action 5),
|
215
237
|
dvtm_wm265e.proto (Mavic 3), dvtm_pm320.proto (Matrice 30) and
|
216
238
|
dvtm_pm320.proto (Mini 4 Pro).
|
@@ -229,13 +251,21 @@ my %convFloat2 = (
|
|
229
251
|
#
|
230
252
|
# Osmo Action 4
|
231
253
|
#
|
232
|
-
'dvtm_ac203_1-1-5' => 'SerialNumber', # (NC)
|
254
|
+
'dvtm_ac203_1-1-5' => { Name => 'SerialNumber', Notes => 'Osmo Action 4' }, # (NC)
|
233
255
|
# dvtm_ac203_1-1-6 - some version number
|
234
256
|
'dvtm_ac203_1-1-10' => 'Model',
|
235
257
|
'dvtm_ac203_2-3' => {
|
236
258
|
Name => 'FrameInfo',
|
237
259
|
SubDirectory => { TagTable => 'Image::ExifTool::DJI::FrameInfo' },
|
238
260
|
},
|
261
|
+
'dvtm_ac203_3-2-2-1' => { Name => 'ISO', Format => 'float' },
|
262
|
+
'dvtm_ac203_3-2-4-1' => { # (NC)
|
263
|
+
Name => 'ShutterSpeed',
|
264
|
+
Format => 'rational',
|
265
|
+
PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
|
266
|
+
},
|
267
|
+
'dvtm_ac203_3-2-6-1' => { Name => 'ColorTemperature', Format => 'unsigned' }, # (NC)
|
268
|
+
# dvtm_ac203_3-2-9-1 - looks like Z accerometer measurement, but 2 and 3 don't look like other components
|
239
269
|
# dvtm_ac203_3-4-1-4 - model code?
|
240
270
|
'dvtm_ac203_3-4-2-1' => {
|
241
271
|
Name => 'GPSInfo',
|
@@ -258,19 +288,24 @@ my %convFloat2 = (
|
|
258
288
|
#
|
259
289
|
# Osmo Action 5
|
260
290
|
#
|
261
|
-
'dvtm_ac204_1-1-5' => 'SerialNumber', # (NC)
|
291
|
+
'dvtm_ac204_1-1-5' => { Name => 'SerialNumber', Notes => 'Osmo Action 5' }, # (NC)
|
262
292
|
# dvtm_ac204_1-1-6 - some version number
|
263
293
|
'dvtm_ac204_1-1-10' => 'Model',
|
264
294
|
'dvtm_ac204_2-3' => {
|
265
295
|
Name => 'FrameInfo',
|
266
296
|
SubDirectory => { TagTable => 'Image::ExifTool::DJI::FrameInfo' },
|
267
297
|
},
|
298
|
+
'dvtm_ac204_3-2-4-1' => { # (NC)
|
299
|
+
Name => 'ShutterSpeed',
|
300
|
+
Format => 'rational',
|
301
|
+
PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
|
302
|
+
},
|
303
|
+
'dvtm_ac204_3-2-6-1' => { Name => 'ColorTemperature', Format => 'unsigned' }, # (NC)
|
268
304
|
# dvtm_ac204_3-4-1-4 - model code?
|
269
305
|
'dvtm_ac204_3-4-2-1' => {
|
270
306
|
Name => 'GPSInfo',
|
271
307
|
SubDirectory => { TagTable => 'Image::ExifTool::DJI::GPSInfo' },
|
272
308
|
},
|
273
|
-
# dvtm_ac204_3-2-4-1 - shutter speed? (rational)
|
274
309
|
'dvtm_ac204_3-4-2-2' => {
|
275
310
|
Name => 'GPSAltitude',
|
276
311
|
Groups => { 2 => 'Location' },
|
@@ -286,11 +321,11 @@ my %convFloat2 = (
|
|
286
321
|
PrintConv => '$self->ConvertDateTime($val)',
|
287
322
|
},
|
288
323
|
#
|
289
|
-
#
|
324
|
+
# Avata 2
|
290
325
|
#
|
291
326
|
# dvtm_AVATA2_1-1-2 - some version number
|
292
327
|
# dvtm_AVATA2_1-1-3 - some version number
|
293
|
-
'dvtm_AVATA2_1-1-5' => 'SerialNumber', # (NC)
|
328
|
+
'dvtm_AVATA2_1-1-5' => { Name => 'SerialNumber', Notes => 'Avata 2' }, # (NC)
|
294
329
|
'dvtm_AVATA2_1-1-10' => 'Model',
|
295
330
|
# dvtm_AVATA2_2-2-1-4 - model code?
|
296
331
|
'dvtm_AVATA2_2-2-3-1' => 'SerialNumber2', # (NC)
|
@@ -308,17 +343,33 @@ my %convFloat2 = (
|
|
308
343
|
},
|
309
344
|
# dvtm_AVATA2_3-2-1-4 - model code?
|
310
345
|
# dvtm_AVATA2_3-2-1-5 - frame rate?
|
311
|
-
|
346
|
+
'dvtm_AVATA2_3-2-2-1' => { Name => 'ISO', Format => 'float' }, # (NC)
|
347
|
+
'dvtm_AVATA2_3-2-4-1' => {
|
348
|
+
Name => 'ShutterSpeed',
|
349
|
+
Format => 'rational',
|
350
|
+
PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
|
351
|
+
},
|
352
|
+
'dvtm_AVATA2_3-2-6-1' => { Name => 'ColorTemperature', Format => 'unsigned' }, # (NC)
|
353
|
+
'dvtm_AVATA2_3-2-10-1' => { # (NC)
|
354
|
+
Name => 'FNumber',
|
355
|
+
Format => 'rational',
|
356
|
+
PrintConv => 'Image::ExifTool::Exif::PrintFNumber($val)',
|
357
|
+
},
|
312
358
|
# dvtm_AVATA2_3-4-1-4 - model code?
|
313
|
-
|
359
|
+
'dvtm_AVATA2_3-4-3' => { # (NC)
|
360
|
+
Name => 'DroneInfo',
|
361
|
+
SubDirectory => { TagTable => 'Image::ExifTool::DJI::DroneInfo' },
|
362
|
+
},
|
314
363
|
'dvtm_AVATA2_3-4-4-1' => {
|
315
364
|
Name => 'GPSInfo',
|
316
365
|
SubDirectory => { TagTable => 'Image::ExifTool::DJI::GPSInfo' },
|
317
366
|
},
|
367
|
+
'dvtm_AVATA2_3-4-4-2' => { Name => 'AbsoluteAltitude', Format => 'int64s', ValueConv => '$val / 1000' }, # (NC)
|
368
|
+
'dvtm_AVATA2_3-4-5-1' => { Name => 'RelativeAltitude', Format => 'float', ValueConv => '$val / 1000' }, # (NC)
|
318
369
|
#
|
319
370
|
# Mavic 3
|
320
371
|
#
|
321
|
-
'dvtm_wm265e_1-1-5' => 'SerialNumber', # (confirmed)
|
372
|
+
'dvtm_wm265e_1-1-5' => { Name => 'SerialNumber', Notes => 'Mavic 3' }, # (confirmed)
|
322
373
|
'dvtm_wm265e_1-1-10' => 'Model',
|
323
374
|
'dvtm_wm265e_2-2' => {
|
324
375
|
Name => 'FrameInfo',
|
@@ -350,7 +401,7 @@ my %convFloat2 = (
|
|
350
401
|
#
|
351
402
|
# Matrice 30
|
352
403
|
#
|
353
|
-
'dvtm_pm320_1-1-5' => 'SerialNumber',
|
404
|
+
'dvtm_pm320_1-1-5' => { Name => 'SerialNumber', Notes => 'Matrice 30' },
|
354
405
|
'dvtm_pm320_1-1-10' => 'Model',
|
355
406
|
'dvtm_pm320_2-2' => {
|
356
407
|
Name => 'FrameInfo',
|
@@ -380,7 +431,7 @@ my %convFloat2 = (
|
|
380
431
|
#
|
381
432
|
# Mini 4 Pro
|
382
433
|
#
|
383
|
-
'dvtm_Mini4_Pro_1-1-5' => 'SerialNumber',
|
434
|
+
'dvtm_Mini4_Pro_1-1-5' => { Name => 'SerialNumber', Notes => 'Mini 4 Pro' },
|
384
435
|
'dvtm_Mini4_Pro_1-1-10' => 'Model',
|
385
436
|
'dvtm_Mini4_Pro_2-3' => {
|
386
437
|
Name => 'FrameInfo',
|
@@ -418,7 +469,7 @@ my %convFloat2 = (
|
|
418
469
|
%Image::ExifTool::DJI::DroneInfo = (
|
419
470
|
GROUPS => { 0 => 'Protobuf', 1 => 'DJI', 2 => 'Camera' },
|
420
471
|
PROCESS_PROC => \&Image::ExifTool::Protobuf::ProcessProtobuf,
|
421
|
-
VARS => { HEX_ID => 0 },
|
472
|
+
VARS => { HEX_ID => 0, ID_LABEL => 'Field #' },
|
422
473
|
1 => { Name => 'DroneRoll', Format => 'int64s', ValueConv => '$val / 10' },
|
423
474
|
2 => { Name => 'DronePitch', Format => 'int64s', ValueConv => '$val / 10' },
|
424
475
|
3 => { Name => 'DroneYaw', Format => 'int64s', ValueConv => '$val / 10' },
|
@@ -427,16 +478,16 @@ my %convFloat2 = (
|
|
427
478
|
%Image::ExifTool::DJI::GimbalInfo = (
|
428
479
|
GROUPS => { 0 => 'Protobuf', 1 => 'DJI', 2 => 'Camera' },
|
429
480
|
PROCESS_PROC => \&Image::ExifTool::Protobuf::ProcessProtobuf,
|
430
|
-
VARS => { HEX_ID => 0 },
|
481
|
+
VARS => { HEX_ID => 0, ID_LABEL => 'Field #' },
|
431
482
|
1 => { Name => 'GimbalPitch',Format => 'int64s', ValueConv => '$val / 10' },
|
432
|
-
2 => { Name => 'GimbalRoll', Format => 'int64s', ValueConv => '$val / 10' },
|
483
|
+
2 => { Name => 'GimbalRoll', Format => 'int64s', ValueConv => '$val / 10' }, # usually 0, so missing
|
433
484
|
3 => { Name => 'GimbalYaw', Format => 'int64s', ValueConv => '$val / 10' },
|
434
485
|
);
|
435
486
|
|
436
487
|
%Image::ExifTool::DJI::FrameInfo = (
|
437
488
|
GROUPS => { 0 => 'Protobuf', 1 => 'DJI', 2 => 'Video' },
|
438
489
|
PROCESS_PROC => \&Image::ExifTool::Protobuf::ProcessProtobuf,
|
439
|
-
VARS => { HEX_ID => 0 },
|
490
|
+
VARS => { HEX_ID => 0, ID_LABEL => 'Field #' },
|
440
491
|
1 => { Name => 'FrameWidth', Format => 'unsigned' },
|
441
492
|
2 => { Name => 'FrameHeight', Format => 'unsigned' },
|
442
493
|
3 => { Name => 'FrameRate', Format => 'float' },
|
@@ -445,7 +496,7 @@ my %convFloat2 = (
|
|
445
496
|
%Image::ExifTool::DJI::GPSInfo = (
|
446
497
|
GROUPS => { 0 => 'Protobuf', 1 => 'DJI', 2 => 'Location' },
|
447
498
|
PROCESS_PROC => \&Image::ExifTool::Protobuf::ProcessProtobuf,
|
448
|
-
VARS => { HEX_ID => 0 },
|
499
|
+
VARS => { HEX_ID => 0, ID_LABEL => 'Field #' },
|
449
500
|
1 => {
|
450
501
|
Name => 'CoordinateUnits',
|
451
502
|
Format => 'unsigned',
|
@@ -469,6 +520,22 @@ my %convFloat2 = (
|
|
469
520
|
},
|
470
521
|
);
|
471
522
|
|
523
|
+
#------------------------------------------------------------------------------
|
524
|
+
# Process DJI beauty settings (ref PH)
|
525
|
+
# Inputs: 0) ExifTool ref, 1) dirInfo ref, 2) tag table ref
|
526
|
+
# Returns: 1 on success
|
527
|
+
sub ProcessSettings($$$)
|
528
|
+
{
|
529
|
+
my ($et, $dirInfo, $tagTbl) = @_;
|
530
|
+
$et->VerboseDir($$dirInfo{DirName}, undef, length(${$$dirInfo{DataPt}}));
|
531
|
+
foreach (split /;/, ${$$dirInfo{DataPt}}) {
|
532
|
+
my ($tag, $val) = split /=/;
|
533
|
+
next unless defined $tag and defined $val;
|
534
|
+
$et->HandleTag($tagTbl, $tag, $val, MakeTagInfo => 1);
|
535
|
+
}
|
536
|
+
return 1;
|
537
|
+
}
|
538
|
+
|
472
539
|
#------------------------------------------------------------------------------
|
473
540
|
# Process DJI info (ref PH)
|
474
541
|
# Inputs: 0) ExifTool ref, 1) dirInfo ref, 2) tag table ref
|
@@ -493,12 +560,7 @@ sub ProcessDJIInfo($$$)
|
|
493
560
|
my $buff = $val;
|
494
561
|
$val = \$buff;
|
495
562
|
}
|
496
|
-
|
497
|
-
my $name = $tag;
|
498
|
-
$name =~ s/_([a-z])/_\U$1/g;
|
499
|
-
AddTagToTable($tagTbl, $tag, { Name => Image::ExifTool::MakeTagName($name) });
|
500
|
-
}
|
501
|
-
$et->HandleTag($tagTbl, $tag, $val);
|
563
|
+
$et->HandleTag($tagTbl, $tag, $val, MakeTagInfo => 1);
|
502
564
|
}
|
503
565
|
return 1;
|
504
566
|
}
|
@@ -22,7 +22,7 @@ use strict;
|
|
22
22
|
use vars qw($VERSION);
|
23
23
|
use Image::ExifTool qw(:DataAccess :Utils);
|
24
24
|
|
25
|
-
$VERSION = '1.
|
25
|
+
$VERSION = '1.23';
|
26
26
|
|
27
27
|
sub ProcessPEResources($$);
|
28
28
|
sub ProcessPEVersion($$);
|
@@ -1005,20 +1005,13 @@ sub ProcessPEVersion($$)
|
|
1005
1005
|
next;
|
1006
1006
|
}
|
1007
1007
|
my $tag = $string;
|
1008
|
-
# create entry in tag table if it doesn't already exist
|
1009
|
-
unless ($$tagTablePtr{$tag}) {
|
1010
|
-
my $name = $tag;
|
1011
|
-
$name =~ tr/-_a-zA-Z0-9//dc; # remove illegal characters
|
1012
|
-
next unless length $name;
|
1013
|
-
AddTagToTable($tagTablePtr, $tag, { Name => $name });
|
1014
|
-
}
|
1015
1008
|
# get tag value (converted to current Charset)
|
1016
1009
|
if ($valLen) {
|
1017
1010
|
($string, $pt) = ReadUnicodeStr($dataPt, $pt, $entryEnd, $et);
|
1018
1011
|
} else {
|
1019
1012
|
$string = '';
|
1020
1013
|
}
|
1021
|
-
$et->HandleTag($tagTablePtr, $tag, $string);
|
1014
|
+
$et->HandleTag($tagTablePtr, $tag, $string, MakeTagInfo => 1);
|
1022
1015
|
# step to next entry (padded to an even word)
|
1023
1016
|
$pt = ($entryEnd + 3) & 0xfffffffc;
|
1024
1017
|
}
|
@@ -761,6 +761,32 @@ sub ProcessString($$$)
|
|
761
761
|
return 1;
|
762
762
|
}
|
763
763
|
|
764
|
+
#------------------------------------------------------------------------------
|
765
|
+
# Process "GP\x06\0" records in MP4 'mdat'atom
|
766
|
+
# Inputs: 0) ExifTool object ref, 1) dirInfo ref (RAF and DirLen)
|
767
|
+
# Returns: size of GoPro record, or 0 on error
|
768
|
+
sub ProcessGP6($$)
|
769
|
+
{
|
770
|
+
my ($et, $dirInfo) = @_;
|
771
|
+
my $raf = $$dirInfo{RAF};
|
772
|
+
my $len = $$dirInfo{DirLen};
|
773
|
+
my $buff;
|
774
|
+
while ($len > 16) {
|
775
|
+
$raf->Read($buff, 16) == 16 or last;
|
776
|
+
my ($tag, $size) = unpack('a4N', $buff);
|
777
|
+
last if $size + 16 > $len or $buff !~ /^GP..\0/s;
|
778
|
+
$raf->Read($buff, $size) == $size or last;
|
779
|
+
if ($buff =~ /^DEVC/) {
|
780
|
+
$$et{DOC_NUM} = ++$$et{DOC_COUNT};
|
781
|
+
my $tagTbl = GetTagTable('Image::ExifTool::GoPro::GPMF');
|
782
|
+
ProcessGoPro($et, { DataPt => \$buff, DataPos => $raf->Tell()-$size }, $tagTbl);
|
783
|
+
}
|
784
|
+
$len -= $size + 16;
|
785
|
+
}
|
786
|
+
delete $$et{DOC_NUM};
|
787
|
+
return $$dirInfo{DirLen} - $len;
|
788
|
+
}
|
789
|
+
|
764
790
|
#------------------------------------------------------------------------------
|
765
791
|
# Process GoPro metadata (gpmd samples, GPMF box, or APP6) (ref PH/1/2)
|
766
792
|
# Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref
|
@@ -778,6 +804,7 @@ sub ProcessGoPro($$$)
|
|
778
804
|
my ($size, $type, $unit, $scal, $setGroup0);
|
779
805
|
|
780
806
|
$et->VerboseDir($$dirInfo{DirName} || 'GPMF', undef, $dirEnd-$pos) if $verbose;
|
807
|
+
$$et{FoundEmbedded} = 1;
|
781
808
|
if ($pos) {
|
782
809
|
my $parent = $$dirInfo{Parent};
|
783
810
|
$setGroup0 = $$et{SET_GROUP0} = 'APP6' if $parent and $parent eq 'APP6';
|
@@ -835,6 +862,7 @@ sub ProcessGoPro($$$)
|
|
835
862
|
ScaleValues($val, $scal) if $scal and $tag ne 'SCAL' and $pos+$size+3>=$dirEnd;
|
836
863
|
my $key = $et->HandleTag($tagTablePtr, $tag, $val,
|
837
864
|
DataPt => $dataPt,
|
865
|
+
DataPos => $$dirInfo{DataPos},
|
838
866
|
Base => $base,
|
839
867
|
Start => $pos,
|
840
868
|
Size => $size,
|
@@ -14,7 +14,7 @@ use vars qw($VERSION);
|
|
14
14
|
use Image::ExifTool qw(:DataAccess :Utils);
|
15
15
|
use Image::ExifTool::Import;
|
16
16
|
|
17
|
-
$VERSION = '1.
|
17
|
+
$VERSION = '1.10';
|
18
18
|
|
19
19
|
sub ProcessJSON($$);
|
20
20
|
sub ProcessTag($$$$%);
|
@@ -43,6 +43,10 @@ sub ProcessTag($$$$%);
|
|
43
43
|
ON1_SettingsMetadataTimestamp => { Groups => { 2 => 'Time' } },
|
44
44
|
ON1_SettingsMetadataUsage => { },
|
45
45
|
ON1_SettingsMetadataVisibleToUser=>{ },
|
46
|
+
adjustmentsSettingsStatisticsLightMap => { # (in JSON of AAE files)
|
47
|
+
Name => 'AdjustmentsSettingsStatisticsLightMap',
|
48
|
+
ValueConv => 'Image::ExifTool::XMP::DecodeBase64($val)',
|
49
|
+
},
|
46
50
|
);
|
47
51
|
|
48
52
|
#------------------------------------------------------------------------------
|