exiftool-vendored.exe 13.17.0 → 13.26.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.
- package/bin/README.txt +14 -14
- package/bin/exiftool.exe +0 -0
- package/bin/exiftool_files/exiftool.pl +117 -46
- package/bin/exiftool_files/lib/Image/ExifTool/Apple.pm +12 -2
- package/bin/exiftool_files/lib/Image/ExifTool/BuildTagLookup.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Canon.pm +3 -2
- package/bin/exiftool_files/lib/Image/ExifTool/CanonRaw.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/DJI.pm +190 -29
- package/bin/exiftool_files/lib/Image/ExifTool/DarwinCore.pm +22 -11
- package/bin/exiftool_files/lib/Image/ExifTool/EXE.pm +2 -9
- package/bin/exiftool_files/lib/Image/ExifTool/GM.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/GPS.pm +3 -3
- package/bin/exiftool_files/lib/Image/ExifTool/Geolocation.dat +0 -0
- package/bin/exiftool_files/lib/Image/ExifTool/GoPro.pm +86 -48
- package/bin/exiftool_files/lib/Image/ExifTool/ICC_Profile.pm +1 -0
- package/bin/exiftool_files/lib/Image/ExifTool/ICO.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/JPEG.pm +5 -1
- package/bin/exiftool_files/lib/Image/ExifTool/JSON.pm +5 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Kodak.pm +3 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Nikon.pm +944 -1237
- package/bin/exiftool_files/lib/Image/ExifTool/Olympus.pm +3 -1
- package/bin/exiftool_files/lib/Image/ExifTool/PCAP.pm +462 -0
- package/bin/exiftool_files/lib/Image/ExifTool/PDF.pm +10 -1
- package/bin/exiftool_files/lib/Image/ExifTool/PLIST.pm +92 -29
- package/bin/exiftool_files/lib/Image/ExifTool/PNG.pm +7 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Pentax.pm +2 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Photoshop.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Plot.pm +713 -0
- package/bin/exiftool_files/lib/Image/ExifTool/Protobuf.pm +24 -11
- package/bin/exiftool_files/lib/Image/ExifTool/Qualcomm.pm +78 -1
- package/bin/exiftool_files/lib/Image/ExifTool/QuickTime.pm +371 -324
- package/bin/exiftool_files/lib/Image/ExifTool/QuickTimeStream.pl +75 -27
- package/bin/exiftool_files/lib/Image/ExifTool/RIFF.pm +15 -6
- package/bin/exiftool_files/lib/Image/ExifTool/Sony.pm +33 -14
- package/bin/exiftool_files/lib/Image/ExifTool/TagLookup.pm +5067 -4967
- package/bin/exiftool_files/lib/Image/ExifTool/TagNames.pod +457 -336
- package/bin/exiftool_files/lib/Image/ExifTool/Trailer.pm +3 -3
- package/bin/exiftool_files/lib/Image/ExifTool/Validate.pm +4 -4
- package/bin/exiftool_files/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/WriteExif.pl +9 -4
- package/bin/exiftool_files/lib/Image/ExifTool/WritePDF.pl +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/WriteQuickTime.pl +58 -5
- package/bin/exiftool_files/lib/Image/ExifTool/Writer.pl +14 -13
- package/bin/exiftool_files/lib/Image/ExifTool/XMP.pm +55 -20
- package/bin/exiftool_files/lib/Image/ExifTool/XMP2.pl +7 -1
- package/bin/exiftool_files/lib/Image/ExifTool.pm +63 -29
- package/bin/exiftool_files/lib/Image/ExifTool.pod +84 -86
- package/bin/exiftool_files/windows_exiftool.txt +96 -72
- package/package.json +4 -4
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
#
|
|
8
8
|
# References: 1) https://github.com/gopro/gpmf-parser
|
|
9
9
|
# 2) https://github.com/stilldavid/gopro-utils
|
|
10
|
+
# 3) https://github.com/gopro/gpmf-parser
|
|
10
11
|
#------------------------------------------------------------------------------
|
|
11
12
|
|
|
12
13
|
package Image::ExifTool::GoPro;
|
|
@@ -16,7 +17,7 @@ use vars qw($VERSION);
|
|
|
16
17
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
17
18
|
use Image::ExifTool::QuickTime;
|
|
18
19
|
|
|
19
|
-
$VERSION = '1.
|
|
20
|
+
$VERSION = '1.12';
|
|
20
21
|
|
|
21
22
|
sub ProcessGoPro($$$);
|
|
22
23
|
sub ProcessString($$$);
|
|
@@ -59,6 +60,8 @@ my %addUnits = (
|
|
|
59
60
|
PrintConv => 'Image::ExifTool::GoPro::AddUnits($self, $val, $tag)',
|
|
60
61
|
);
|
|
61
62
|
|
|
63
|
+
my %noYes = ( N => 'No', Y => 'Yes' );
|
|
64
|
+
|
|
62
65
|
# Tags found in the GPMF box of Hero6 mp4 videos (ref PH), and
|
|
63
66
|
# the gpmd-format timed metadata of Hero5 and Hero6 videos (ref 1)
|
|
64
67
|
%Image::ExifTool::GoPro::GPMF = (
|
|
@@ -72,7 +75,7 @@ my %addUnits = (
|
|
|
72
75
|
let me know if you discover the meaning of any of these unknown tags. See
|
|
73
76
|
L<https://github.com/gopro/gpmf-parser> for details about this format.
|
|
74
77
|
},
|
|
75
|
-
|
|
78
|
+
ABSC => 'AutoBoostScore', #3
|
|
76
79
|
ACCL => { #2 (gpmd)
|
|
77
80
|
Name => 'Accelerometer',
|
|
78
81
|
Notes => 'accelerator readings in m/s2',
|
|
@@ -82,9 +85,9 @@ my %addUnits = (
|
|
|
82
85
|
# ANGY (GPMF-GEOC) - seen 179.9 (fmt d, Max)
|
|
83
86
|
# ANGZ (GPMF-GEOC) - seen 0.152 (fmt d, Max)
|
|
84
87
|
ALLD => 'AutoLowLightDuration', #1 (gpmd) (untested)
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
+
APTO => 'AudioProtuneOption', #3
|
|
89
|
+
ARUW => 'AspectRatioUnwarped', #3
|
|
90
|
+
ARWA => 'AspectRatioWarped', #3
|
|
88
91
|
ATTD => { #PH (Karma)
|
|
89
92
|
Name => 'Attitude',
|
|
90
93
|
# UNIT=s,rad,rad,rad,rad/s,rad/s,rad/s,
|
|
@@ -99,10 +102,10 @@ my %addUnits = (
|
|
|
99
102
|
# SCAL=1000 1 1 1 1
|
|
100
103
|
Binary => 1,
|
|
101
104
|
},
|
|
102
|
-
|
|
105
|
+
AUBT => { Name => 'AudioBlueTooth', PrintConv => \%noYes }, #3
|
|
103
106
|
AUDO => 'AudioSetting', #PH (GPMF - seen: 'WIND', fmt c)
|
|
104
|
-
|
|
105
|
-
|
|
107
|
+
AUPT => { Name => 'AutoProtune', PrintConv => \%noYes },
|
|
108
|
+
BITR => 'BitrateSetting', #3
|
|
106
109
|
BPOS => { #PH (Karma)
|
|
107
110
|
Name => 'Controller',
|
|
108
111
|
Unknown => 1,
|
|
@@ -116,16 +119,22 @@ my %addUnits = (
|
|
|
116
119
|
# CALH (GPMF-GEOC) - seen 3040 (fmt L, Max)
|
|
117
120
|
# CALW (GPMF-GEOC) - seen 4056 (fmt L, Max)
|
|
118
121
|
CASN => 'CameraSerialNumber', #PH (GPMF - seen: 'C3221324545448', fmt c)
|
|
119
|
-
|
|
120
|
-
|
|
122
|
+
CDAT => { #3
|
|
123
|
+
Name => 'CreationDate',
|
|
124
|
+
Groups => { 2 => 'Time' },
|
|
125
|
+
RawConv => 'ConvertUnixTime($val)',
|
|
126
|
+
PrintConv => '$self->ConvertDateTime($val)',
|
|
127
|
+
},
|
|
128
|
+
CDTM => 'CaptureDelayTimer', #3
|
|
121
129
|
# CINF (GPMF) - seen: 0x67376be7709bc8876a8baf3940908618, 0xe230988539b30cf5f016627ae8fc5395,
|
|
122
130
|
# 0x8bcbe424acc5b37d7d77001635198b3b (fmt B) (Camera INFormation?)
|
|
123
|
-
|
|
131
|
+
CLDP => { Name => 'ClassificationDataPresent', PrintConv => \%noYes },
|
|
124
132
|
# CLKC (GPMF) - seen: 0 (fmt L)
|
|
125
133
|
# CLKS (GPMF) - seen: 2 (fmt B)
|
|
126
|
-
# CMOD (GPMF) - seen: 12,13,17 [12 360 video, 13 time-laps video, 17 JPEG] (fmt B)
|
|
134
|
+
# CMOD (GPMF) - seen: 12,13,17 [12 360 video, 13 time-laps video, 17 JPEG] (fmt B) - CameraMode (ref 3)
|
|
127
135
|
# CPID (GPMF) - seen: '1194885996 3387225026 733916448 2433577768' (fmt L)
|
|
128
136
|
# CPIN (GPMF) - seen: 1
|
|
137
|
+
CPIN => 'ChapterNumber',
|
|
129
138
|
# CRTX (GPMF-BACK/FRNT) - double[1]
|
|
130
139
|
# CRTY (GPMF-BACK/FRNT) - double[1]
|
|
131
140
|
CSEN => { #PH (Karma)
|
|
@@ -135,7 +144,7 @@ my %addUnits = (
|
|
|
135
144
|
# SCAL=1000 1 1 1 1 1 1 1 1 1 1
|
|
136
145
|
Binary => 1,
|
|
137
146
|
},
|
|
138
|
-
|
|
147
|
+
CTRL => 'ControlLevel', #3
|
|
139
148
|
CYTS => { #PH (Karma)
|
|
140
149
|
Name => 'CoyoteStatus',
|
|
141
150
|
# UNIT=s,,,,,rad,rad,rad,,
|
|
@@ -155,22 +164,22 @@ my %addUnits = (
|
|
|
155
164
|
# (Max) DVID='HLMT',DVNM='Highlights'
|
|
156
165
|
},
|
|
157
166
|
# DNSC (GPMF) - seen: 'HIGH' (fmt c)
|
|
158
|
-
|
|
167
|
+
DUST => 'DurationSetting', #3
|
|
159
168
|
# DVID (GPMF) - DeviceID; seen: 1 (fmt L), HLMT (fmt F), GEOC (fmt F), 'BACK' (fmt F, Max)
|
|
160
169
|
DVID => { Name => 'DeviceID', Unknown => 1 }, #2 (gpmd)
|
|
161
170
|
# DVNM (GPMF) seen: 'Video Global Settings' (fmt c), 'Highlights' (fmt c), 'Geometry Calibrations' (Max)
|
|
162
171
|
# DVNM (gpmd) seen: 'Camera' (Hero5), 'Hero6 Black' (Hero6), 'GoPro Karma v1.0' (Karma)
|
|
163
172
|
DVNM => 'DeviceName', #PH (n/c)
|
|
164
173
|
DZOM => { #PH (GPMF - seen: 'Y', fmt c)
|
|
165
|
-
Name => '
|
|
166
|
-
PrintConv =>
|
|
174
|
+
Name => 'DigitalZoomOn',
|
|
175
|
+
PrintConv => \%noYes,
|
|
167
176
|
},
|
|
168
|
-
|
|
169
|
-
|
|
177
|
+
DZMX => 'DigitalZoomAmount', #3
|
|
178
|
+
DZST => 'DigitalZoom', #3
|
|
170
179
|
EISA => { #PH (GPMF) - seen: 'Y','N','HS EIS','N/A' (fmt c) [N was for a time-lapse video]
|
|
171
180
|
Name => 'ElectronicImageStabilization',
|
|
172
181
|
},
|
|
173
|
-
|
|
182
|
+
EISE => { Name => 'ElectronicStabilizationOn', PrintConv => \%noYes }, #3
|
|
174
183
|
EMPT => { Name => 'Empty', Unknown => 1 }, #2 (gpmd)
|
|
175
184
|
ESCS => { #PH (Karma)
|
|
176
185
|
Name => 'EscapeStatus',
|
|
@@ -180,7 +189,7 @@ my %addUnits = (
|
|
|
180
189
|
Unknown => 1,
|
|
181
190
|
%addUnits,
|
|
182
191
|
},
|
|
183
|
-
|
|
192
|
+
EXPT => 'ExposureType', #3
|
|
184
193
|
FACE => 'FaceDetected', #PH (gpmd)
|
|
185
194
|
FCNM => 'FaceNumbers', #PH (gpmd) (faces counted per frame, ref 1)
|
|
186
195
|
FMWR => 'FirmwareVersion', #PH (GPMF - seen: HD6.01.01.51.00, fmt c)
|
|
@@ -242,10 +251,10 @@ my %addUnits = (
|
|
|
242
251
|
Notes => 'gyroscope readings in rad/s',
|
|
243
252
|
Binary => 1,
|
|
244
253
|
},
|
|
245
|
-
|
|
246
|
-
|
|
254
|
+
HCLT => 'HorizonControl', #3
|
|
255
|
+
HDRV => { Name => 'HDRVideo', PrintConv => \%noYes }, #3/PH (NC)
|
|
247
256
|
# HFLG (APP6) - seen: 0
|
|
248
|
-
|
|
257
|
+
HSGT => 'HindsightSettings', #3
|
|
249
258
|
ISOE => 'ISOSpeeds', #PH (gpmd)
|
|
250
259
|
ISOG => { #2 (gpmd)
|
|
251
260
|
Name => 'ImageSensorGain',
|
|
@@ -270,20 +279,20 @@ my %addUnits = (
|
|
|
270
279
|
Binary => 1,
|
|
271
280
|
},
|
|
272
281
|
MAGN => 'Magnetometer', #1 (gpmd) (units of uT)
|
|
273
|
-
|
|
274
|
-
|
|
282
|
+
MAPX => 'MappingXCoefficients', #3
|
|
283
|
+
MAPY => 'MappingYCoefficients', #3
|
|
275
284
|
# MFOV (GPMF-BACK/FRNT) - seen: 100 (fmt d, Max)
|
|
276
285
|
MINF => { #PH (GPMF - seen: HERO6 Black, fmt c)
|
|
277
286
|
Name => 'Model',
|
|
278
287
|
Groups => { 2 => 'Camera' },
|
|
279
288
|
Description => 'Camera Model Name',
|
|
280
289
|
},
|
|
281
|
-
|
|
282
|
-
# MTYP (GPMF) - seen: 0,1,5,11 [1 for time-lapse video, 5 for 360 video, 11 for JPEG] (fmt B)
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
290
|
+
MMOD => 'MediaMode', #3
|
|
291
|
+
# MTYP (GPMF) - seen: 0,1,5,11 [1 for time-lapse video, 5 for 360 video, 11 for JPEG] (fmt B) - MediaType (ref 3)
|
|
292
|
+
MUID => { Name => 'MediaUID', ValueConv => 'join("-", unpack("H8H4H4H4H12", $val))' },
|
|
293
|
+
MXCF => 'MappingXMode', #3
|
|
294
|
+
MYCF => 'MappingYMode', #3
|
|
295
|
+
ORDP => { Name => 'OrientationDataPresent', PrintConv => \%noYes }, #3
|
|
287
296
|
OREN => { #PH (GPMF - seen: 'U', fmt c)
|
|
288
297
|
Name => 'AutoRotation',
|
|
289
298
|
PrintConv => {
|
|
@@ -292,20 +301,20 @@ my %addUnits = (
|
|
|
292
301
|
A => 'Auto', # (NC)
|
|
293
302
|
},
|
|
294
303
|
},
|
|
295
|
-
# (most of the "P" tags are
|
|
304
|
+
# (most of the "P" tags are Protune settings - PH)
|
|
296
305
|
PHDR => 'HDRSetting', #PH (APP6 - seen: 0)
|
|
297
|
-
|
|
306
|
+
PIMD => 'ProtuneISOMode', #3
|
|
298
307
|
PIMN => 'AutoISOMin', #PH (GPMF - seen: 100, fmt L)
|
|
299
308
|
PIMX => 'AutoISOMax', #PH (GPMF - seen: 1600, fmt L)
|
|
300
|
-
|
|
309
|
+
POLY => 'PolynomialCoefficients', #3
|
|
301
310
|
# PRAW (APP6) - seen: 0, 'N', 'Y' (fmt c)
|
|
302
311
|
# PRCN (GPMF) - seen: 65 zeros (fmt B)
|
|
303
312
|
PRES => 'PhotoResolution', #PH (APP6 - seen: '12MP_W')
|
|
304
|
-
|
|
305
|
-
# PRNA (GPMF) - seen 10 (fmt B)
|
|
306
|
-
# PRNU (GPMF) - seen 0 (fmt B)
|
|
313
|
+
PRJT => 'LensProjection', #3
|
|
314
|
+
# PRNA (GPMF) - seen 10 (fmt B) - PresetIDs (ref 3)
|
|
315
|
+
# PRNU (GPMF) - seen 0 (fmt B) - PresetIDs (ref 3)
|
|
307
316
|
PRTN => { #PH (GPMF - seen: 'N', fmt c)
|
|
308
|
-
Name => '
|
|
317
|
+
Name => 'Protune',
|
|
309
318
|
PrintConv => {
|
|
310
319
|
N => 'Off',
|
|
311
320
|
Y => 'On', # (NC)
|
|
@@ -316,9 +325,9 @@ my %addUnits = (
|
|
|
316
325
|
PTSH => 'Sharpness', #PH (GPMF - seen: 'HIGH', fmt c)
|
|
317
326
|
PTWB => 'WhiteBalance', #PH (GPMF - seen: 'AUTO', fmt c)
|
|
318
327
|
# PVUL (APP6) - seen: 'F' (fmt c, Hero8, Max)
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
328
|
+
PWPR => 'PowerProfile', #3
|
|
329
|
+
PYCF => 'PolynomialPower', #3
|
|
330
|
+
RAMP => 'SpeedRampSetting', #3
|
|
322
331
|
RATE => 'Rate', #PH (GPMF - seen: '0_5SEC', fmt c; APP6 - seen: '4_1SEC')
|
|
323
332
|
RMRK => { #2 (gpmd)
|
|
324
333
|
Name => 'Comments',
|
|
@@ -328,7 +337,7 @@ my %addUnits = (
|
|
|
328
337
|
Name => 'ScaleFactor',
|
|
329
338
|
Unknown => 1,
|
|
330
339
|
},
|
|
331
|
-
|
|
340
|
+
SCAP => { Name => 'ScheduleCapture', PrintConv => \%noYes }, #3
|
|
332
341
|
SCPR => { #PH (Karma) [stream was empty]
|
|
333
342
|
Name => 'ScaledPressure',
|
|
334
343
|
# UNIT=s,Pa,Pa,degC
|
|
@@ -336,7 +345,7 @@ my %addUnits = (
|
|
|
336
345
|
# SCAL=1000 0.00999999977648258 0.00999999977648258 100
|
|
337
346
|
%addUnits,
|
|
338
347
|
},
|
|
339
|
-
|
|
348
|
+
SCTM => 'ScheduleCaptureTime', #3 (seconds since UTC midnight)
|
|
340
349
|
# SFTR (GPMF-BACK/FRNT) - seen 0.999,1.00004 (fmt d, Max)
|
|
341
350
|
# SHFX (GPMF-GEOC) - seen 22.92 (fmt d, Max)
|
|
342
351
|
# SHFY (GPMF-GEOC) - seen 0.123 (fmt d, Max)
|
|
@@ -361,9 +370,9 @@ my %addUnits = (
|
|
|
361
370
|
Unknown => 1,
|
|
362
371
|
ValueConv => '$self->Decode($val, "Latin")',
|
|
363
372
|
},
|
|
364
|
-
|
|
373
|
+
SMTR => { Name => 'SpotMeter', PrintConv => \%noYes }, #3
|
|
365
374
|
# SOFF (APP6) - seen: 0 (fmt L, Hero8, Max)
|
|
366
|
-
|
|
375
|
+
SROT => 'SensorReadoutTime', #3
|
|
367
376
|
STMP => { #1 (gpmd)
|
|
368
377
|
Name => 'TimeStamp',
|
|
369
378
|
ValueConv => '$val / 1e6',
|
|
@@ -437,8 +446,8 @@ my %addUnits = (
|
|
|
437
446
|
Name => 'WhiteBalanceRGB',
|
|
438
447
|
Binary => 1,
|
|
439
448
|
},
|
|
440
|
-
|
|
441
|
-
|
|
449
|
+
ZFOV => 'DiagonalFieldOfView', #3
|
|
450
|
+
ZMPL => 'ZoomScaleNormalization', #3
|
|
442
451
|
#
|
|
443
452
|
# the following ref forum12825
|
|
444
453
|
#
|
|
@@ -450,7 +459,6 @@ my %addUnits = (
|
|
|
450
459
|
return join('', @a);
|
|
451
460
|
},
|
|
452
461
|
},
|
|
453
|
-
EXPT => 'MaximumShutterAngle',
|
|
454
462
|
MTRX => 'AccelerometerMatrix',
|
|
455
463
|
ORIN => 'InputOrientation',
|
|
456
464
|
ORIO => 'OutputOrientation',
|
|
@@ -753,6 +761,32 @@ sub ProcessString($$$)
|
|
|
753
761
|
return 1;
|
|
754
762
|
}
|
|
755
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
|
+
|
|
756
790
|
#------------------------------------------------------------------------------
|
|
757
791
|
# Process GoPro metadata (gpmd samples, GPMF box, or APP6) (ref PH/1/2)
|
|
758
792
|
# Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref
|
|
@@ -770,6 +804,7 @@ sub ProcessGoPro($$$)
|
|
|
770
804
|
my ($size, $type, $unit, $scal, $setGroup0);
|
|
771
805
|
|
|
772
806
|
$et->VerboseDir($$dirInfo{DirName} || 'GPMF', undef, $dirEnd-$pos) if $verbose;
|
|
807
|
+
$$et{FoundEmbedded} = 1;
|
|
773
808
|
if ($pos) {
|
|
774
809
|
my $parent = $$dirInfo{Parent};
|
|
775
810
|
$setGroup0 = $$et{SET_GROUP0} = 'APP6' if $parent and $parent eq 'APP6';
|
|
@@ -827,6 +862,7 @@ sub ProcessGoPro($$$)
|
|
|
827
862
|
ScaleValues($val, $scal) if $scal and $tag ne 'SCAL' and $pos+$size+3>=$dirEnd;
|
|
828
863
|
my $key = $et->HandleTag($tagTablePtr, $tag, $val,
|
|
829
864
|
DataPt => $dataPt,
|
|
865
|
+
DataPos => $$dirInfo{DataPos},
|
|
830
866
|
Base => $base,
|
|
831
867
|
Start => $pos,
|
|
832
868
|
Size => $size,
|
|
@@ -873,6 +909,8 @@ under the same terms as Perl itself.
|
|
|
873
909
|
|
|
874
910
|
=item L<https://github.com/stilldavid/gopro-utils>
|
|
875
911
|
|
|
912
|
+
=item L<https://github.com/gopro/gpmf-parser>
|
|
913
|
+
|
|
876
914
|
=back
|
|
877
915
|
|
|
878
916
|
=head1 SEE ALSO
|
|
@@ -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.
|
|
17
|
+
$VERSION = '1.01';
|
|
18
18
|
|
|
19
19
|
%Image::ExifTool::ICO::Main = (
|
|
20
20
|
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
|
|
@@ -95,7 +95,7 @@ sub ProcessICO($$$)
|
|
|
95
95
|
$et->HandleTag($tagTbl, 4, $num);
|
|
96
96
|
for ($i=0; $i<$num; ++$i) {
|
|
97
97
|
$raf->Read($buff, 16) == 16 or $et->Warn('Truncated file'), last;
|
|
98
|
-
$$et{DOC_NUM} = ++$$et{DOC_COUNT}
|
|
98
|
+
$$et{DOC_NUM} = ++$$et{DOC_COUNT};
|
|
99
99
|
$et->HandleTag($tagTbl, 6, $buff);
|
|
100
100
|
}
|
|
101
101
|
delete $$et{DOC_NUM};
|
|
@@ -134,6 +134,10 @@ sub ProcessJPEG_HDR($$$);
|
|
|
134
134
|
Name => 'FPXR', # (non-standard location written by some HP models)
|
|
135
135
|
Condition => '$$valPt =~ /^FPXR\0/',
|
|
136
136
|
SubDirectory => { TagTable => 'Image::ExifTool::FlashPix::Main' },
|
|
137
|
+
}, {
|
|
138
|
+
Name => 'QualcommDualCamera',
|
|
139
|
+
Condition => '$$valPt =~ /^Qualcomm Dual Camera Attributes/',
|
|
140
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Qualcomm::DualCamera' },
|
|
137
141
|
}, {
|
|
138
142
|
Name => 'InfiRayFactory',
|
|
139
143
|
Condition => '$$self{HasIJPEG}"',
|
|
@@ -202,7 +206,7 @@ sub ProcessJPEG_HDR($$$);
|
|
|
202
206
|
Groups => { 0 => 'APP6', 1 => 'DJI' },
|
|
203
207
|
Notes => 'DJI Thermal Analysis Tool record',
|
|
204
208
|
ValueConv => 'substr($val,7)',
|
|
205
|
-
# also seen Motorola APP6 "MMIMETA\0", with sub-types: AL3A,ALED,MMI0,MOTD,QC3A
|
|
209
|
+
# also seen Motorola APP6 "MMIMETA\0", with sub-types: AL3A,ALED,MMI0,MOTD,QC3A,LMB1
|
|
206
210
|
}],
|
|
207
211
|
APP7 => [{
|
|
208
212
|
Name => 'Pentax',
|
|
@@ -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
|
#------------------------------------------------------------------------------
|
|
@@ -25,7 +25,7 @@ use vars qw($VERSION);
|
|
|
25
25
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
26
26
|
use Image::ExifTool::Exif;
|
|
27
27
|
|
|
28
|
-
$VERSION = '1.
|
|
28
|
+
$VERSION = '1.48';
|
|
29
29
|
|
|
30
30
|
sub ProcessKodakIFD($$$);
|
|
31
31
|
sub ProcessKodakText($$$);
|
|
@@ -2983,7 +2983,8 @@ my %sceneModeUsed = (
|
|
|
2983
2983
|
Priority => 0, # (only integer seconds)
|
|
2984
2984
|
PrintConv => 'ConvertDuration($val)',
|
|
2985
2985
|
},
|
|
2986
|
-
|
|
2986
|
+
# (save KodakVersion to recognize Rexing Dashcam video for GPS scaling)
|
|
2987
|
+
'ver '=> { Name => 'KodakVersion', RawConv => '$$self{KodakVersion} = $val' },
|
|
2987
2988
|
thma => { Name => 'ThumbnailImage', Groups => { 2 => 'Preview' }, Binary => 1 },
|
|
2988
2989
|
scra => { Name => 'PreviewImage', Groups => { 2 => 'Preview' }, Binary => 1 },
|
|
2989
2990
|
);
|