exiftool_vendored 11.99.0 → 12.06.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.

Potentially problematic release.


This version of exiftool_vendored might be problematic. Click here for more details.

Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +119 -2
  3. data/bin/MANIFEST +5 -0
  4. data/bin/META.json +1 -1
  5. data/bin/META.yml +1 -1
  6. data/bin/README +32 -32
  7. data/bin/exiftool +55 -50
  8. data/bin/lib/Image/ExifTool.pm +155 -109
  9. data/bin/lib/Image/ExifTool.pod +103 -77
  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 +11 -6
  13. data/bin/lib/Image/ExifTool/Canon.pm +2 -1
  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 +16 -3
  17. data/bin/lib/Image/ExifTool/Exif.pm +15 -6
  18. data/bin/lib/Image/ExifTool/Font.pm +9 -2
  19. data/bin/lib/Image/ExifTool/GIF.pm +5 -0
  20. data/bin/lib/Image/ExifTool/GeoTiff.pm +2 -0
  21. data/bin/lib/Image/ExifTool/GoPro.pm +10 -1
  22. data/bin/lib/Image/ExifTool/H264.pm +1 -1
  23. data/bin/lib/Image/ExifTool/ID3.pm +86 -12
  24. data/bin/lib/Image/ExifTool/Lang/de.pm +3 -1
  25. data/bin/lib/Image/ExifTool/Lang/es.pm +1 -1
  26. data/bin/lib/Image/ExifTool/M2TS.pm +1 -1
  27. data/bin/lib/Image/ExifTool/MacOS.pm +1 -1
  28. data/bin/lib/Image/ExifTool/Minolta.pm +3 -2
  29. data/bin/lib/Image/ExifTool/Nikon.pm +134 -15
  30. data/bin/lib/Image/ExifTool/Olympus.pm +34 -17
  31. data/bin/lib/Image/ExifTool/PNG.pm +14 -3
  32. data/bin/lib/Image/ExifTool/PPM.pm +5 -5
  33. data/bin/lib/Image/ExifTool/Panasonic.pm +147 -13
  34. data/bin/lib/Image/ExifTool/PanasonicRaw.pm +33 -0
  35. data/bin/lib/Image/ExifTool/Parrot.pm +2 -1
  36. data/bin/lib/Image/ExifTool/Pentax.pm +2 -1
  37. data/bin/lib/Image/ExifTool/Photoshop.pm +2 -1
  38. data/bin/lib/Image/ExifTool/QuickTime.pm +204 -27
  39. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +355 -19
  40. data/bin/lib/Image/ExifTool/README +20 -19
  41. data/bin/lib/Image/ExifTool/Ricoh.pm +19 -1
  42. data/bin/lib/Image/ExifTool/Shift.pl +1 -0
  43. data/bin/lib/Image/ExifTool/SigmaRaw.pm +40 -33
  44. data/bin/lib/Image/ExifTool/Sony.pm +376 -11
  45. data/bin/lib/Image/ExifTool/TagLookup.pm +1949 -1872
  46. data/bin/lib/Image/ExifTool/TagNames.pod +329 -53
  47. data/bin/lib/Image/ExifTool/Validate.pm +4 -4
  48. data/bin/lib/Image/ExifTool/WriteExif.pl +1 -0
  49. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +23 -15
  50. data/bin/lib/Image/ExifTool/Writer.pl +44 -21
  51. data/bin/lib/Image/ExifTool/XMP.pm +41 -4
  52. data/bin/lib/Image/ExifTool/XMPStruct.pl +3 -1
  53. data/bin/lib/Image/ExifTool/ZISRAW.pm +123 -0
  54. data/bin/perl-Image-ExifTool.spec +31 -31
  55. data/lib/exiftool_vendored/version.rb +1 -1
  56. metadata +4 -3
@@ -27,6 +27,7 @@
27
27
  # 19) Brad Grier private communication
28
28
  # 22) Herbert Kauer private communication
29
29
  # 23) Daniel Pollock private communication (PEN-F)
30
+ # 24) Sebastian private communication (E-M1 Mark III)
30
31
  # IB) Iliah Borg private communication (LibRaw)
31
32
  # NJ) Niels Kristian Bech Jensen private communication
32
33
  #------------------------------------------------------------------------------
@@ -39,7 +40,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
39
40
  use Image::ExifTool::Exif;
40
41
  use Image::ExifTool::APP12;
41
42
 
42
- $VERSION = '2.65';
43
+ $VERSION = '2.68';
43
44
 
44
45
  sub PrintLensInfo($$$);
45
46
 
@@ -172,6 +173,7 @@ my %olympusLensTypes = (
172
173
  '2 28 10' => 'Lumix G Vario 12-60mm F3.5-5.6 Asph. Power OIS', #NJ
173
174
  '2 29 10' => 'Leica DG Summilux 12mm F1.4 Asph.', #IB
174
175
  '2 30 10' => 'Leica DG Vario-Elmarit 12-60mm F2.8-4 Asph. Power OIS', #IB
176
+ '2 31 10' => 'Lumix G Vario 45-200mm F4.0-5.6 II', #forum3833
175
177
  '2 32 10' => 'Lumix G Vario 100-300mm F4.0-5.6 II', #PH
176
178
  '2 33 10' => 'Lumix G X Vario 12-35mm F2.8 II Asph. Power OIS', #IB
177
179
  '2 34 10' => 'Lumix G Vario 35-100mm F2.8 II', #forum3833
@@ -184,6 +186,8 @@ my %olympusLensTypes = (
184
186
  # Tamron lenses
185
187
  '5 01 10' => 'Tamron 14-150mm F3.5-5.8 Di III', #NJ (model C001)
186
188
  # '65535 07 40' - Seen for LUMIX S 16-35/F4 on Panasonic DC-S1H (ref PH)
189
+ # Other makes
190
+ '24 01 10' => 'Venus Optics Laowa 50mm F2.8 2x Macro', #DonKomarechka
187
191
  );
188
192
 
189
193
  # lookup for Olympus camera types (ref PH)
@@ -1836,6 +1840,7 @@ my %indexInfo = (
1836
1840
  6 => 'Imager AF',
1837
1841
  7 => 'Live View Magnification Frame',
1838
1842
  8 => 'AF sensor',
1843
+ 9 => 'Starry Sky AF', #24
1839
1844
  },
1840
1845
  }],
1841
1846
  },
@@ -1893,9 +1898,13 @@ my %indexInfo = (
1893
1898
  },
1894
1899
  0x307 => { #15
1895
1900
  Name => 'AFFineTuneAdj',
1896
- Format => 'int16s',
1901
+ Writable => 'int16s',
1897
1902
  Count => 3, # not sure what the 3 values mean
1898
1903
  },
1904
+ 0x308 => { #forum11578
1905
+ Name => 'FocusBracketStepSize',
1906
+ Writable => 'int8u',
1907
+ },
1899
1908
  0x400 => { #6
1900
1909
  Name => 'FlashMode',
1901
1910
  Writable => 'int16u',
@@ -2511,6 +2520,8 @@ my %indexInfo = (
2511
2520
  Count => 2,
2512
2521
  PrintConv => {
2513
2522
  '0 0' => 'No',
2523
+ '1 *' => 'Live Composite (* images)', #24
2524
+ '4 *' => 'Live Time/Bulb (* images)', #24
2514
2525
  '3 2' => 'ND2 (1EV)', #IB
2515
2526
  '3 4' => 'ND4 (2EV)', #IB
2516
2527
  '3 8' => 'ND8 (3EV)', #IB
@@ -2519,21 +2530,26 @@ my %indexInfo = (
2519
2530
  '5 4' => 'HDR1', #forum8906
2520
2531
  '6 4' => 'HDR2', #forum8906
2521
2532
  '8 8' => 'Tripod high resolution', #IB
2522
- '9 2' => 'Focus-stacked (2 images)', #IB
2523
- '9 3' => 'Focus-stacked (3 images)', #IB
2524
- '9 4' => 'Focus-stacked (4 images)', #IB
2525
- '9 5' => 'Focus-stacked (5 images)', #IB
2526
- '9 6' => 'Focus-stacked (6 images)', #IB
2527
- '9 7' => 'Focus-stacked (7 images)', #IB
2528
- '9 8' => 'Focus-stacked (8 images)',
2529
- '9 9' => 'Focus-stacked (9 images)', #IB
2530
- '9 10' => 'Focus-stacked (10 images)', #IB
2531
- '9 11' => 'Focus-stacked (11 images)', #IB
2532
- '9 12' => 'Focus-stacked (12 images)', #IB
2533
- '9 13' => 'Focus-stacked (13 images)', #IB
2534
- '9 14' => 'Focus-stacked (14 images)', #IB
2535
- '9 15' => 'Focus-stacked (15 images)', #IB
2536
- '11 16' => 'Hand-held high resolution', #IB
2533
+ '9 *' => 'Focus-stacked (* images)', #IB (* = 2-15)
2534
+ '11 16' => 'Hand-held high resolution', #IB (perhaps '11 15' would be possible, ref 24)
2535
+ OTHER => sub {
2536
+ my ($val, $inv, $conv) = @_;
2537
+ if ($inv) {
2538
+ $val = lc $val;
2539
+ return undef unless $val =~ s/(\d+) images/\* images/;
2540
+ my $num = $1;
2541
+ foreach (keys %$conv) {
2542
+ next unless $val eq lc $$conv{$_};
2543
+ ($val = $_) =~ s/\*/$num/ or return undef;
2544
+ return $val;
2545
+ }
2546
+ } else {
2547
+ return "Unknown ($_[0])" unless $val =~ s/ (\d+)/ \*/ and $$conv{$val};
2548
+ my $num = $1;
2549
+ ($val = $$conv{$val}) =~ s/\*/$num/;
2550
+ return $val;
2551
+ }
2552
+ },
2537
2553
  },
2538
2554
  },
2539
2555
  0x900 => { #11
@@ -2894,6 +2910,7 @@ my %indexInfo = (
2894
2910
  Count => 2,
2895
2911
  PrintConv => [{
2896
2912
  0 => 'Off',
2913
+ 1 => 'Live Composite', #github issue#61
2897
2914
  2 => 'On (2 frames)',
2898
2915
  3 => 'On (3 frames)',
2899
2916
  }],
@@ -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.13';
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',
@@ -2418,6 +2542,16 @@ my %shootingMode = (
2418
2542
  'DMC-TZ40 90 10' => 'Toy Effect',
2419
2543
  'DMC-TZ40 90 11' => 'Dynamic Monochrome',
2420
2544
  'DMC-TZ40 90 12' => 'Soft',
2545
+ # some TZ5 modes are different (forum11523)
2546
+ # (these may be the same for the TZ4, TZ11 and TZ15)
2547
+ 'DMC-TZ5 18 1' => 'High Sensitivity',
2548
+ 'DMC-TZ5 26 1' => 'High-speed Burst (shot 1)',
2549
+ 'DMC-TZ5 27 1' => 'High-speed Burst (shot 2)',
2550
+ 'DMC-TZ5 29 1' => 'Snow',
2551
+ 'DMC-TZ5 30 1' => 'Starry Sky',
2552
+ 'DMC-TZ5 31 1' => 'Beach',
2553
+ 'DMC-TZ5 36 1' => 'High-speed Burst (shot 3)',
2554
+ 'DMC-TZ5 39 1' => 'Aerial Photo / Underwater / Multi-aspect',
2421
2555
  },
2422
2556
  },
2423
2557
  );