exiftool_vendored 11.98.0 → 12.10.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.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +198 -2
  3. data/bin/MANIFEST +8 -0
  4. data/bin/META.json +1 -1
  5. data/bin/META.yml +1 -1
  6. data/bin/README +43 -42
  7. data/bin/exiftool +102 -75
  8. data/bin/lib/Image/ExifTool.pm +163 -111
  9. data/bin/lib/Image/ExifTool.pod +127 -93
  10. data/bin/lib/Image/ExifTool/AIFF.pm +2 -2
  11. data/bin/lib/Image/ExifTool/APE.pm +2 -2
  12. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +21 -10
  13. data/bin/lib/Image/ExifTool/Canon.pm +202 -14
  14. data/bin/lib/Image/ExifTool/CanonCustom.pm +82 -16
  15. data/bin/lib/Image/ExifTool/DPX.pm +56 -2
  16. data/bin/lib/Image/ExifTool/DarwinCore.pm +22 -3
  17. data/bin/lib/Image/ExifTool/EXE.pm +8 -5
  18. data/bin/lib/Image/ExifTool/Exif.pm +15 -6
  19. data/bin/lib/Image/ExifTool/Font.pm +9 -2
  20. data/bin/lib/Image/ExifTool/GIF.pm +6 -1
  21. data/bin/lib/Image/ExifTool/GeoTiff.pm +2 -0
  22. data/bin/lib/Image/ExifTool/Geotag.pm +2 -2
  23. data/bin/lib/Image/ExifTool/GoPro.pm +48 -22
  24. data/bin/lib/Image/ExifTool/H264.pm +1 -1
  25. data/bin/lib/Image/ExifTool/ID3.pm +91 -12
  26. data/bin/lib/Image/ExifTool/IPTC.pm +1 -0
  27. data/bin/lib/Image/ExifTool/JSON.pm +27 -4
  28. data/bin/lib/Image/ExifTool/Lang/de.pm +3 -1
  29. data/bin/lib/Image/ExifTool/Lang/es.pm +1 -1
  30. data/bin/lib/Image/ExifTool/M2TS.pm +19 -19
  31. data/bin/lib/Image/ExifTool/MacOS.pm +154 -38
  32. data/bin/lib/Image/ExifTool/Matroska.pm +3 -1
  33. data/bin/lib/Image/ExifTool/Minolta.pm +7 -2
  34. data/bin/lib/Image/ExifTool/MinoltaRaw.pm +11 -10
  35. data/bin/lib/Image/ExifTool/Nikon.pm +164 -20
  36. data/bin/lib/Image/ExifTool/Olympus.pm +39 -17
  37. data/bin/lib/Image/ExifTool/PNG.pm +14 -3
  38. data/bin/lib/Image/ExifTool/PPM.pm +5 -5
  39. data/bin/lib/Image/ExifTool/Panasonic.pm +148 -14
  40. data/bin/lib/Image/ExifTool/PanasonicRaw.pm +34 -0
  41. data/bin/lib/Image/ExifTool/Parrot.pm +2 -1
  42. data/bin/lib/Image/ExifTool/Pentax.pm +3 -1
  43. data/bin/lib/Image/ExifTool/Photoshop.pm +2 -1
  44. data/bin/lib/Image/ExifTool/QuickTime.pm +289 -37
  45. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +419 -60
  46. data/bin/lib/Image/ExifTool/README +26 -22
  47. data/bin/lib/Image/ExifTool/RSRC.pm +17 -11
  48. data/bin/lib/Image/ExifTool/RTF.pm +12 -7
  49. data/bin/lib/Image/ExifTool/Radiance.pm +7 -2
  50. data/bin/lib/Image/ExifTool/Ricoh.pm +19 -1
  51. data/bin/lib/Image/ExifTool/Shift.pl +1 -0
  52. data/bin/lib/Image/ExifTool/SigmaRaw.pm +40 -33
  53. data/bin/lib/Image/ExifTool/Sony.pm +426 -40
  54. data/bin/lib/Image/ExifTool/TagLookup.pm +5799 -5671
  55. data/bin/lib/Image/ExifTool/TagNames.pod +584 -97
  56. data/bin/lib/Image/ExifTool/Validate.pm +4 -4
  57. data/bin/lib/Image/ExifTool/WriteExif.pl +3 -2
  58. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +26 -18
  59. data/bin/lib/Image/ExifTool/Writer.pl +47 -24
  60. data/bin/lib/Image/ExifTool/XMP.pm +99 -17
  61. data/bin/lib/Image/ExifTool/XMP2.pl +1 -0
  62. data/bin/lib/Image/ExifTool/XMPStruct.pl +3 -1
  63. data/bin/lib/Image/ExifTool/ZISRAW.pm +123 -0
  64. data/bin/perl-Image-ExifTool.spec +42 -41
  65. data/lib/exiftool_vendored/version.rb +1 -1
  66. metadata +8 -7
@@ -36,7 +36,7 @@ use strict;
36
36
  use vars qw($VERSION $AUTOLOAD %stdCase);
37
37
  use Image::ExifTool qw(:DataAccess :Utils);
38
38
 
39
- $VERSION = '1.54';
39
+ $VERSION = '1.55';
40
40
 
41
41
  sub ProcessPNG_tEXt($$$);
42
42
  sub ProcessPNG_iTXt($$$);
@@ -311,6 +311,18 @@ my %noLeapFrog = ( SAVE => 1, SEEK => 1, IHDR => 1, JHDR => 1, IEND => 1, MEND =
311
311
  },
312
312
  # fcTL - animation frame control for each frame
313
313
  # fdAT - animation data for each frame
314
+ iDOT => { # (ref NealKrawetz)
315
+ Name => 'AppleDataOffsets',
316
+ Binary => 1,
317
+ # Apple offsets into data relative to start of iDOT chunk:
318
+ # int32u Divisor [only ever seen 2]
319
+ # int32u Unknown [always 0]
320
+ # int32u TotalDividedHeight [image height from IDHR/Divisor]
321
+ # int32u Size [always 40 / 0x28; size of this chunk]
322
+ # int32u DividedHeight1
323
+ # int32u DividedHeight2
324
+ # int32u IDAT_Offset2 [location of IDAT with start of DividedHeight2 segment]
325
+ },
314
326
  );
315
327
 
316
328
  # PNG IHDR chunk
@@ -1342,8 +1354,7 @@ sub ProcessPNG($$)
1342
1354
  } elsif ($hdrChunk eq 'IHDR' and $chunk eq 'CgBI') {
1343
1355
  $et->Warn('Non-standard PNG image (Apple iPhone format)');
1344
1356
  } else {
1345
- $et->Warn("$fileType image did not start with $hdrChunk");
1346
- last;
1357
+ $et->WarnOnce("$fileType image did not start with $hdrChunk");
1347
1358
  }
1348
1359
  }
1349
1360
  if ($outfile and ($isDatChunk{$chunk} or $chunk eq $endChunk) and @txtOffset) {
@@ -16,7 +16,7 @@ use strict;
16
16
  use vars qw($VERSION);
17
17
  use Image::ExifTool qw(:DataAccess :Utils);
18
18
 
19
- $VERSION = '1.09';
19
+ $VERSION = '1.10';
20
20
 
21
21
  #------------------------------------------------------------------------------
22
22
  # Read or write information in a PPM/PGM/PBM image
@@ -48,19 +48,19 @@ sub ProcessPPM($$)
48
48
  # note: may contain comments starting with '#'
49
49
  if ($buff =~ /\G#/gc) {
50
50
  # must read more if we are in the middle of a comment
51
- next unless $buff =~ /\G ?(.*\n(#.*\n)*)\s*/g;
51
+ next unless $buff =~ /\G ?(.*[\n\r]+(#.*[\n\r]+)*)\s*/g;
52
52
  $info{Comment} = $1;
53
53
  next if $buff =~ /\G#/gc;
54
54
  } else {
55
55
  delete $info{Comment};
56
56
  }
57
- next unless $buff =~ /\G(\S+)\s+(\S+)\s/g;
57
+ next unless $buff =~ /\G(\S+)\s+(\S+)\s+/g;
58
58
  $info{ImageWidth} = $1;
59
59
  $info{ImageHeight} = $2;
60
60
  $type = [qw{PPM PBM PGM}]->[$num % 3];
61
61
  last if $type eq 'PBM'; # (no MaxVal for PBM images)
62
62
  if ($buff =~ /\G\s*#/gc) {
63
- next unless $buff =~ /\G ?(.*\n(#.*\n)*)\s*/g;
63
+ next unless $buff =~ /\G ?(.*[\n\r]+(#.*[\n\r]+)*)\s*/g;
64
64
  $info{Comment} = '' unless exists $info{Comment};
65
65
  $info{Comment} .= $1;
66
66
  next if $buff =~ /\G#/gc;
@@ -76,7 +76,7 @@ sub ProcessPPM($$)
76
76
  }
77
77
  if (defined $info{Comment}) {
78
78
  $info{Comment} =~ s/^# ?//mg; # remove "# " at the start of each line
79
- $info{Comment} =~ s/\n$//; # remove trailing newline
79
+ $info{Comment} =~ s/[\n\r]+$//; # remove trailing newline
80
80
  }
81
81
  $et->SetFileType($type);
82
82
  my $len = pos($buff);
@@ -37,7 +37,7 @@ use vars qw($VERSION %leicaLensTypes);
37
37
  use Image::ExifTool qw(:DataAccess :Utils);
38
38
  use Image::ExifTool::Exif;
39
39
 
40
- $VERSION = '2.09';
40
+ $VERSION = '2.14';
41
41
 
42
42
  sub ProcessLeicaLEIC($$$);
43
43
  sub WhiteBalanceConv($;$$);
@@ -259,6 +259,7 @@ my %shootingMode = (
259
259
  88 => 'Clear Sports Shot', #18
260
260
  89 => 'Monochrome', #18
261
261
  90 => 'Creative Control', #18
262
+ 92 => 'Handheld Night Shot', #forum11523
262
263
  );
263
264
 
264
265
  %Image::ExifTool::Panasonic::Main = (
@@ -366,7 +367,9 @@ my %shootingMode = (
366
367
  '32 2' => '3-area (center)?', # (DMC-L1 guess)
367
368
  '32 3' => '3-area (right)?', # (DMC-L1 guess)
368
369
  '64 0' => 'Face Detect',
369
- '128 0' => 'Spot Focusing 2', #18
370
+ '64 1' => 'Face Detect (animal detect on)', #forum11194
371
+ '64 2' => 'Face Detect (animal detect off)', #forum11194
372
+ '128 0' => 'Pinpoint focus', #18/forum11194
370
373
  '240 0' => 'Tracking', #22
371
374
  },
372
375
  },
@@ -375,14 +378,17 @@ my %shootingMode = (
375
378
  Name => 'ImageStabilization',
376
379
  Writable => 'int16u',
377
380
  PrintConv => {
378
- 2 => 'On, Mode 1',
381
+ 2 => 'On, Optical',
379
382
  3 => 'Off',
380
383
  4 => 'On, Mode 2',
381
- 5 => 'Panning', #18
384
+ 5 => 'On, Optical Panning', #18
382
385
  # GF1 also has a "Mode 3" - PH
383
- 6 => 'On, Mode 3', #PH (GX7, sensor shift?)
386
+ 6 => 'On, Body-only', #PH (GX7, sensor shift?)
387
+ 7 => 'On, Body-only Panning', #forum11194
384
388
  9 => 'Dual IS', #20
389
+ 10 => 'Dual IS Panning', #forum11194
385
390
  11 => 'Dual2 IS', #forum9298
391
+ 12 => 'Dual2 IS Panning', #forum11194
386
392
  },
387
393
  },
388
394
  0x1c => {
@@ -453,7 +459,15 @@ my %shootingMode = (
453
459
  Name => 'PanasonicExifVersion',
454
460
  Writable => 'undef',
455
461
  },
456
- # 0x27 - values: 0 (LZ6,FX10K)
462
+ 0x27 => {
463
+ Name => 'VideoFrameRate',
464
+ Writable => 'int16u',
465
+ Notes => 'only valid for older models',
466
+ PrintConv => {
467
+ OTHER => sub { shift },
468
+ 0 => 'n/a',
469
+ },
470
+ },
457
471
  0x28 => {
458
472
  Name => 'ColorEffect',
459
473
  Writable => 'int16u',
@@ -515,9 +529,11 @@ my %shootingMode = (
515
529
  0 => 'Off',
516
530
  1 => 'On', #PH (TZ5) [was "Low/High Quality" from ref 4]
517
531
  2 => 'Auto Exposure Bracketing (AEB)', #17
532
+ 3 => 'Focus Bracketing', #forum11194
518
533
  4 => 'Unlimited', #PH (TZ5)
519
534
  8 => 'White Balance Bracketing', #18
520
535
  17 => 'On (with flash)', #forum5597
536
+ 18 => 'Aperture Bracketing', #forum11194
521
537
  },
522
538
  },
523
539
  0x2b => { #4
@@ -542,13 +558,15 @@ my %shootingMode = (
542
558
  # 0x03 - observed with LZ6 and TZ5 in Fireworks mode
543
559
  # and GX7 in Fantasy/Retro/OldDays/HighKey - PH
544
560
  # 0x04 - observed in MP4 movie with GM1 (EXIF and 0x39 Contrast "Normal") - PH
545
- # 0x05 - observed with FX01, FX40 and FP8 (EXIF contrast "Normal") - PH
561
+ 0x05 => 'Normal 2', #forum1194
546
562
  0x06 => 'Medium Low', #PH (FZ18)
547
563
  0x07 => 'Medium High', #PH (FZ18)
548
564
  # 0x08 - GX7 in DynamicMonochrome mode
549
565
  0x0d => 'High Dynamic', #PH (FZ47 in ?)
550
566
  # 0x13 - seen for LX100 (PH)
551
- # 0x18 - seen for FZ2500 (PH)
567
+ 0x18 => 'Dynamic Range (film-like)', #forum11194
568
+ 0x2e => 'Match Filter Effects Toy', #forum11194
569
+ 0x37 => 'Match Photo Style L. Monochrome', #forum11194
552
570
  # DMC-LC1 values:
553
571
  0x100 => 'Low',
554
572
  0x110 => 'Normal',
@@ -653,11 +671,14 @@ my %shootingMode = (
653
671
  Name => 'SelfTimer',
654
672
  Writable => 'int16u',
655
673
  PrintConv => {
674
+ 0 => 'Off (0)', #forum11529
656
675
  1 => 'Off',
657
676
  2 => '10 s',
658
677
  3 => '2 s',
659
678
  4 => '10 s / 3 pictures', #17
660
- # 258 - seen for FZ2500,TZ90,LeicaCLux (PH)
679
+ 258 => '2 s after shutter pressed', #forum11194
680
+ 266 => '10 s after shutter pressed', #forum11194
681
+ 778 => '3 photos after 10 s', #forum11194
661
682
  },
662
683
  },
663
684
  # 0x2f - values: 1 (LZ6,FX10K)
@@ -725,8 +746,20 @@ my %shootingMode = (
725
746
  PrintConvInv => '$val =~ /(\d+)/ ? $1 : $val',
726
747
  },
727
748
  # 0x37 - values: 0,1,2 (LZ6, 0 for movie preview); 257 (FX10K); 0,256 (TZ5, 0 for movie preview)
728
- # 0x38 - values: 0,1,2 (LZ6, same as 0x37); 1,2 (FX10K); 0,256 (TZ5, 0 for movie preview)
729
- # - changes with noise reduction for DC-S1
749
+ # --> may indicate battery power (forum11388)
750
+ 0x38 => { #forum11388
751
+ Name => 'BatteryLevel',
752
+ Writable => 'int16u',
753
+ PrintConv => {
754
+ 1 => 'Full',
755
+ 2 => 'Medium',
756
+ 3 => 'Low',
757
+ 4 => 'Near Empty',
758
+ 7 => 'Near Full',
759
+ 8 => 'Medium Low',
760
+ 256 => 'n/a',
761
+ },
762
+ },
730
763
  0x39 => { #7 (L1/L10)
731
764
  Name => 'Contrast',
732
765
  Format => 'int16s',
@@ -761,6 +794,7 @@ my %shootingMode = (
761
794
  Name => 'AdvancedSceneType',
762
795
  Writable => 'int16u',
763
796
  Notes => 'used together with SceneMode to derive Composite AdvancedSceneMode',
797
+ # see forum11194 for more info
764
798
  },
765
799
  0x3e => { #PH (TZ5/FS7)
766
800
  # (tags 0x3b, 0x3e, 0x8008 and 0x8009 have the same values in all my samples - PH)
@@ -853,7 +887,7 @@ my %shootingMode = (
853
887
  },
854
888
  },
855
889
  0x49 => { #19
856
- Name => 'LongExposureNoiseReduction',
890
+ Name => 'LongExposureNoiseReduction', # (indicates availability, forum11194)
857
891
  Writable => 'int16u',
858
892
  PrintConv => {
859
893
  1 => 'Off',
@@ -1092,6 +1126,10 @@ my %shootingMode = (
1092
1126
  4 => 'Monochrome',
1093
1127
  5 => 'Scenery',
1094
1128
  6 => 'Portrait',
1129
+ 8 => 'Cinelike D', #forum11194
1130
+ 9 => 'Cinelike V', #forum11194
1131
+ 11 => 'L. Monochrome', #forum11194
1132
+ 15 => 'L. Monochrome D', #forum11194
1095
1133
  },
1096
1134
  },
1097
1135
  0x8a => { #18
@@ -1154,7 +1192,7 @@ my %shootingMode = (
1154
1192
  ValueConv => '-$val / 10',
1155
1193
  ValueConvInv => '-$val * 10',
1156
1194
  },
1157
- 0x92 => { #21 (forum9453)
1195
+ 0x92 => { #21 (forum9453) (more to decode in forum11194)
1158
1196
  Name => 'WBShiftCreativeControl',
1159
1197
  Writable => 'int8u',
1160
1198
  Format => 'int8s',
@@ -1182,6 +1220,7 @@ my %shootingMode = (
1182
1220
  0 => 'Off',
1183
1221
  1 => 'Time Lapse',
1184
1222
  2 => 'Stop-motion Animation',
1223
+ 3 => 'Focus Bracketing', #forum11194
1185
1224
  },
1186
1225
  },
1187
1226
  0x9d => { #18
@@ -1211,6 +1250,36 @@ my %shootingMode = (
1211
1250
  },
1212
1251
  },
1213
1252
  # 0xa0 - undef[32]: AWB gains and black levels (ref forum9303)
1253
+ 0xa1 => { #forum11194
1254
+ Name => 'FilterEffect',
1255
+ Writable => 'rational64u',
1256
+ Format => 'int32u',
1257
+ PrintConv => {
1258
+ '0 0' => 'Expressive',
1259
+ # '0 1' => have seen this for XS1 (PH)
1260
+ '0 2' => 'Retro',
1261
+ '0 4' => 'High Key',
1262
+ '0 8' => 'Sepia',
1263
+ '0 16' => 'High Dynamic',
1264
+ '0 32' => 'Miniature Effect',
1265
+ '0 256' => 'Low Key',
1266
+ '0 512' => 'Toy Effect',
1267
+ '0 1024' => 'Dynamic Monochrome',
1268
+ '0 2048' => 'Soft Focus',
1269
+ '0 4096' => 'Impressive Art',
1270
+ '0 8192' => 'Cross Process',
1271
+ '0 16384' => 'One Point Color',
1272
+ '0 32768' => 'Star Filter',
1273
+ '0 524288' => 'Old Days',
1274
+ '0 1048576' => 'Sunshine',
1275
+ '0 2097152' => 'Bleach Bypass',
1276
+ '0 4194304' => 'Toy Pop',
1277
+ '0 8388608' => 'Fantasy',
1278
+ '0 33554432' => 'Monochrome',
1279
+ '0 67108864' => 'Rough Monochrome',
1280
+ '0 134217728' => 'Silky Monochrome',
1281
+ },
1282
+ },
1214
1283
  0xa3 => { #18
1215
1284
  Name => 'ClearRetouchValue',
1216
1285
  Writable => 'rational64u',
@@ -1230,9 +1299,15 @@ my %shootingMode = (
1230
1299
  Writable => 'int16u',
1231
1300
  PrintConv => { 0 => 'Off', 1 => 'On' },
1232
1301
  },
1302
+ 0xac => { #forum11194
1303
+ Name => 'MonochromeFilterEffect',
1304
+ Writable => 'int16u',
1305
+ PrintConv => { 0 => 'Off', 1 => 'Yellow', 2 => 'Orange', 3 => 'Red', 4 => 'Green' },
1306
+ },
1233
1307
  0xad => { #forum9360
1234
1308
  Name => 'HighlightShadow',
1235
1309
  Writable => 'int16u',
1310
+ Format => 'int16s', #forum11194
1236
1311
  Count => 2,
1237
1312
  },
1238
1313
  0xaf => { #PH (is this in UTC maybe? -- sometimes different time zone other times)
@@ -1243,6 +1318,11 @@ my %shootingMode = (
1243
1318
  PrintConv => '$self->ConvertDateTime($val)',
1244
1319
  PrintConvInv => '$self->InverseDateTime($val)',
1245
1320
  },
1321
+ 0xb3 => { #forum11194
1322
+ Name => 'VideoBurstResolution',
1323
+ Writable => 'int16u',
1324
+ PrintConv => { 1 => 'Off or 4K', 4 => '6K' },
1325
+ },
1246
1326
  0xb4 => { #forum9429
1247
1327
  Name => 'MultiExposure',
1248
1328
  Writable => 'int16u',
@@ -1264,6 +1344,10 @@ my %shootingMode = (
1264
1344
  0x28 => '4K Burst (Start/Stop)',
1265
1345
  0x48 => '4K Pre-burst',
1266
1346
  0x108 => 'Loop Recording',
1347
+ 0x810 => '6K Burst',
1348
+ 0x820 => '6K Burst (Start/Stop)',
1349
+ 0x408 => 'Focus Stacking', #forum11563
1350
+ 0x1001 => 'High Resolution Mode',
1267
1351
  },
1268
1352
  },
1269
1353
  0xbc => { #forum9282
@@ -1271,6 +1355,36 @@ my %shootingMode = (
1271
1355
  Writable => 'int16u',
1272
1356
  PrintConv => { 0 => 'Off', 1 => 'Auto' },
1273
1357
  },
1358
+ 0xbd => { #forum11194
1359
+ Name => 'FocusBracket',
1360
+ Notes => 'positive is further, negative is closer',
1361
+ Writable => 'int16u',
1362
+ Format => 'int16s',
1363
+ },
1364
+ 0xbe => { #forum11194
1365
+ Name => 'LongExposureNRUsed',
1366
+ Writable => 'int16u',
1367
+ PrintConv => { 0 => 'No', 1 => 'Yes' },
1368
+ },
1369
+ 0xbf => { #forum11194
1370
+ Name => 'PostFocusMerging',
1371
+ Format => 'int32u',
1372
+ Count => 2,
1373
+ PrintConv => { '0 0' => 'Post Focus Auto Merging or None' },
1374
+ },
1375
+ 0xc1 => { #forum11194
1376
+ Name => 'VideoPreburst',
1377
+ Writable => 'int16u',
1378
+ PrintConv => { 0 => 'No', 1 => '4K or 6K' },
1379
+ },
1380
+ 0xca => { #forum11459
1381
+ Name => 'SensorType',
1382
+ Writable => 'int16u',
1383
+ PrintConv => {
1384
+ 0 => 'Multi-aspect',
1385
+ 1 => 'Standard',
1386
+ },
1387
+ },
1274
1388
  # Note: LensTypeMake and LensTypeModel are combined into a Composite LensType tag
1275
1389
  # defined in Olympus.pm which has the same values as Olympus:LensType
1276
1390
  0xc4 => { #PH
@@ -1295,6 +1409,16 @@ my %shootingMode = (
1295
1409
  RawConv => '$val > 0xfffffff0 ? undef : $val',
1296
1410
  Writable => 'int32u',
1297
1411
  },
1412
+ 0xd2 => { #forum11194
1413
+ Name => 'MonochromeGrainEffect',
1414
+ Writable => 'int16u',
1415
+ PrintConv => {
1416
+ 0 => 'Off',
1417
+ 1 => 'Low',
1418
+ 2 => 'Standard',
1419
+ 3 => 'High',
1420
+ },
1421
+ },
1298
1422
  0xd6 => { #PH (DC-S1)
1299
1423
  Name => 'NoiseReductionStrength',
1300
1424
  Writable => 'rational64s',
@@ -2347,7 +2471,8 @@ my %shootingMode = (
2347
2471
  # AdvancedSceneType=5 for automatic mode iA (ref 19)
2348
2472
  if ($prt) {
2349
2473
  return $prt if $v[1] == 1;
2350
- return "$prt (intelligent auto)" if $v[1] == 5;
2474
+ return "$prt (intelligent auto)" if $v[1] == 5; #forum11523
2475
+ return "$prt (intelligent auto plus)" if $v[1] == 7; #forum11523
2351
2476
  return "$prt ($v[1])";
2352
2477
  }
2353
2478
  return "Unknown ($val)";
@@ -2370,10 +2495,19 @@ my %shootingMode = (
2370
2495
  '9 3' => 'Objects', #(FZ28)
2371
2496
  '9 4' => 'Creative Macro', #(FZ28)
2372
2497
  #'9 5' - ? (GF3)
2498
+ '18 1' => 'High Sensitivity', #forum11523 (TZ5)
2499
+ '20 1' => 'Fireworks', #forum11523 (TZ5)
2373
2500
  '21 2' => 'Illuminations', #(FZ28)
2374
2501
  '21 4' => 'Creative Night Scenery', #(FZ28)
2375
2502
  #'21 5' - ? (LX3)
2503
+ '26 1' => 'High-speed Burst (shot 1)', #forum11523 (TZ5)
2504
+ '27 1' => 'High-speed Burst (shot 2)', #forum11523 (TZ5)
2505
+ '29 1' => 'Snow', #forum11523 (TZ5)
2506
+ '30 1' => 'Starry Sky', #forum11523 (TZ5)
2507
+ '31 1' => 'Beach', #forum11523 (TZ5)
2508
+ '36 1' => 'High-speed Burst (shot 3)', #forum11523 (TZ5)
2376
2509
  #'37 5' - ? (various)
2510
+ '39 1' => 'Aerial Photo / Underwater / Multi-aspect', #forum11523 (TZ5)
2377
2511
  '45 2' => 'Cinema', #(GF2)
2378
2512
  '45 7' => 'Expressive', #(GF1,GF2)
2379
2513
  '45 8' => 'Retro', #(GF1,GF2)
@@ -512,6 +512,7 @@ my %panasonicWhiteBalance = ( #forum9396
512
512
  # when format is int32u (S models), these values have been observed (ref IB):
513
513
  # 256 - Leica lens
514
514
  # 257 - Lumix lens
515
+ # 258 - ? (seen once)
515
516
  },
516
517
  0x1202 => { #IB
517
518
  Name => 'LensTypeModel',
@@ -531,14 +532,45 @@ my %panasonicWhiteBalance = ( #forum9396
531
532
  PrintConv => '"$val mm"',
532
533
  PrintConvInv => '$val=~s/\s*mm$//;$val',
533
534
  },
535
+ # 0x1300 - incident light value? (ref forum11395)
536
+ 0x1301 => { #forum11395
537
+ Name => 'ApertureValue',
538
+ Writable => 'int16s',
539
+ Priority => 0,
540
+ ValueConv => '2 ** ($val / 512)',
541
+ ValueConvInv => '$val>0 ? 512*log($val)/log(2) : 0',
542
+ PrintConv => 'sprintf("%.1f",$val)',
543
+ PrintConvInv => '$val',
544
+ },
545
+ 0x1302 => { #forum11395
546
+ Name => 'ShutterSpeedValue',
547
+ Writable => 'int16s',
548
+ Priority => 0,
549
+ ValueConv => 'abs($val/256)<100 ? 2**(-$val/256) : 0',
550
+ ValueConvInv => '$val>0 ? -256*log($val)/log(2) : -25600',
551
+ PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
552
+ PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
553
+ },
554
+ 0x1303 => { #forum11395
555
+ Name => 'SensitivityValue',
556
+ Writable => 'int16s',
557
+ ValueConv => '$val / 256',
558
+ ValueConvInv => 'int($val * 256)',
559
+ },
534
560
  0x1305 => { #forum9384
535
561
  Name => 'HighISOMode',
536
562
  Writable => 'int16u',
537
563
  RawConv => '$val || undef',
538
564
  PrintConv => { 1 => 'On', 2 => 'Off' },
539
565
  },
566
+ # 0x1306 EV for some models like the GX8 (forum11395)
540
567
  # 0x140b - scaled overall black level? (ref forum9281)
541
568
  # 0x1411 - scaled black level per channel difference (ref forum9281)
569
+ 0x1412 => { #forum11397
570
+ Name => 'FacesDetected',
571
+ Writable => 'int8u',
572
+ PrintConv => { 0 => 'No', 1 => 'Yes' },
573
+ },
542
574
  # 0x2000 - WB tungsten=3, daylight=4 (ref forum9467)
543
575
  # 0x2009 - scaled black level per channel (ref forum9281)
544
576
  # 0x3000-0x310b - red/blue balances * 1024 (ref forum9467)
@@ -600,6 +632,8 @@ my %panasonicWhiteBalance = ( #forum9396
600
632
  Writable => 'int8u',
601
633
  PrintConv => \%Image::ExifTool::Exif::orientation,
602
634
  },
635
+ # 0x3504 = Tag 0x1301+0x1302-0x1303 (Bv = Av+Tv-Sv) (forum11395)
636
+ # 0x3505 - same as 0x1300 (forum11395)
603
637
  0x3600 => { #forum9396
604
638
  Name => 'WhiteBalanceDetected',
605
639
  Writable => 'int8u',