exiftool_vendored 13.21.0 → 13.24.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.
@@ -217,7 +217,9 @@ sub ProcessProtobuf($$$;$)
217
217
  } elsif (length($buff) % 4) {
218
218
  $val = '0x' . unpack('H*', $buff);
219
219
  } else {
220
- $val = '0x' . join(' ', unpack('(H8)*', $buff)); # (group in 4-byte blocks)
220
+ my $n = length($buff) / 4;
221
+ # (do this instead of '(H8)*' because older Perl version didn't support this)
222
+ $val = '0x' . join(' ', unpack("(H8)$n", $buff)); # (group in 4-byte blocks)
221
223
  }
222
224
  $val .= $rat if $rat;
223
225
  }
@@ -12,9 +12,10 @@ use strict;
12
12
  use vars qw($VERSION);
13
13
  use Image::ExifTool qw(:DataAccess :Utils);
14
14
 
15
- $VERSION = '1.01';
15
+ $VERSION = '1.02';
16
16
 
17
17
  sub ProcessQualcomm($$$);
18
+ sub ProcessDualCamera($$$);
18
19
  sub MakeNameAndDesc($$);
19
20
 
20
21
  # Qualcomm format codes (ref PH (NC))
@@ -1224,6 +1225,59 @@ my @qualcommFormat = (
1224
1225
  'HJR_texture_threshold' => { },
1225
1226
  );
1226
1227
 
1228
+ %Image::ExifTool::Qualcomm::DualCamera = (
1229
+ PROCESS_PROC => \&ProcessDualCamera,
1230
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
1231
+ VARS => { NO_ID => 1, NO_LOOKUP => 1 }, # too long, too many, and too obscure
1232
+ NOTES => q{
1233
+ Found in JPEG APP4 "Qualcomm Dual Camera Attributes" written by some Nokia
1234
+ phones.
1235
+ },
1236
+ 'Sensor Crop left' => 'SensorCropLeft',
1237
+ 'Sensor Crop top' => 'SensorCropTop',
1238
+ 'Sensor Crop width' => 'SensorCropWidth',
1239
+ 'Sensor Crop height' => 'SensorCropHeight',
1240
+ 'Sensor ROI Map left' => 'SensorROIMapLeft',
1241
+ 'Sensor ROI Map top' => 'SensorROIMapTop',
1242
+ 'Sensor ROI Map width' => 'SensorROIMapWidth',
1243
+ 'Sensor ROI Map height' => 'SensorROIMapHeight',
1244
+ 'CAMIF Crop left' => 'CAMIFCropLeft',
1245
+ 'CAMIF Crop top' => 'CAMIFCropTop',
1246
+ 'CAMIF Crop width' => 'CAMIFCropWidth',
1247
+ 'CAMIF Crop height' => 'CAMIFCropHeight',
1248
+ 'CAMIF ROI Map left' => 'CAMIF_ROIMapLeft',
1249
+ 'CAMIF ROI Map top' => 'CAMIF_ROIMapTop',
1250
+ 'CAMIF ROI Map width' => 'CAMIF_ROIMapWidth',
1251
+ 'CAMIF ROI Map height' => 'CAMIF_ROIMapHeight',
1252
+ 'ISP Crop left' => 'ISPCropLeft',
1253
+ 'ISP Crop top' => 'ISPCropTop',
1254
+ 'ISP Crop width' => 'ISPCropWidth',
1255
+ 'ISP Crop height' => 'ISPCropHeight',
1256
+ 'ISP ROI Map left' => 'ISP_ROIMapLeft',
1257
+ 'ISP ROI Map top' => 'ISP_ROIMapTop',
1258
+ 'ISP ROI Map width' => 'ISP_ROIMapWidth',
1259
+ 'ISP ROI Map height' => 'ISP_ROIMapHeight',
1260
+ 'CPP Crop left' => 'CPPCropLeft',
1261
+ 'CPP Crop top' => 'CPPCropTop',
1262
+ 'CPP Crop width' => 'CPPCropWidth',
1263
+ 'CPP Crop height' => 'CPPCropHeight',
1264
+ 'CPP ROI Map left' => 'CPP_ROIMapLeft',
1265
+ 'CPP ROI Map top' => 'CPP_ROIMapTop',
1266
+ 'CPP ROI Map width' => 'CPP_ROIMapWidth',
1267
+ 'CPP ROI Map height' => 'CPP_ROIMapHeight',
1268
+ 'DDM Crop left' => 'DDMCropLeft',
1269
+ 'DDM Crop top' => 'DDMCropTop',
1270
+ 'DDM Crop width' => 'DDMCropWidth',
1271
+ 'DDM Crop height' => 'DDMCropHeight',
1272
+ 'Focal length Ratio' => 'FocalLengthRatio',
1273
+ 'Current pipeline mirror flip setting' => 'CurrentPipelineMirrorFlipSetting',
1274
+ 'Current pipeline rotation setting' => 'CurrentPipelineRotationSetting',
1275
+ 'AF ROI left' => 'AF_ROILeft',
1276
+ 'AF ROI top' => 'AF_ROITop',
1277
+ 'AF ROI width' => 'AF_ROIWidth',
1278
+ 'AF ROI height' => 'AF_ROIHeight',
1279
+ );
1280
+
1227
1281
  # generate tag names and descriptions
1228
1282
  {
1229
1283
  local $_;
@@ -1258,6 +1312,29 @@ sub MakeNameAndDesc($$)
1258
1312
  return 1;
1259
1313
  }
1260
1314
 
1315
+ #------------------------------------------------------------------------------
1316
+ # Process Qualcomm Dual Camera APP4 metadata (ref PH)
1317
+ # Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref
1318
+ # Returns: 1 on success
1319
+ sub ProcessDualCamera($$$)
1320
+ {
1321
+ my ($et, $dirInfo, $tagTablePtr) = @_;
1322
+ my $dataPt = $$dirInfo{DataPt};
1323
+ my $dataPos = $$dirInfo{DataPos};
1324
+ my $pos = $$dirInfo{DirStart};
1325
+
1326
+ $et->VerboseDir('Qualcomm Dual Camera', undef, $$dirInfo{DirLen});
1327
+ pos($$dataPt) = $pos;
1328
+ while ($$dataPt =~ /\x0a/g) {
1329
+ my $str = substr($$dataPt, $pos, pos($$dataPt) - $pos - 1);
1330
+ next unless $str =~ /^(.*?)\s*=\s*(.*)/;
1331
+ my ($tag, $val) = ($1, $2);
1332
+ $et->HandleTag($tagTablePtr, $tag, $val, MakeTagInfo => 1);
1333
+ $pos = pos($$dataPt);
1334
+ }
1335
+ return 1;
1336
+ }
1337
+
1261
1338
  #------------------------------------------------------------------------------
1262
1339
  # Process Qualcomm APP7 metadata (ref PH)
1263
1340
  # Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref
@@ -30,7 +30,7 @@ use strict;
30
30
  use vars qw($VERSION $AUTOLOAD);
31
31
  use Image::ExifTool qw(:DataAccess :Utils);
32
32
 
33
- $VERSION = '1.71';
33
+ $VERSION = '1.70';
34
34
 
35
35
  sub ConvertTimecode($);
36
36
  sub ProcessSGLT($$$);
@@ -1319,9 +1319,9 @@ my %code2charset = (
1319
1319
  Name => 'ImageWidth',
1320
1320
  Format => 'int16u',
1321
1321
  Priority => 0,
1322
- # add " Lossless" to FileType since image has a VP8L (lossless) chunk
1322
+ # add " (lossless)" to FileType since image has a VP8L (lossless) chunk
1323
1323
  RawConv => q{
1324
- $self->OverrideFileType($$self{VALUE}{FileType} . ' Lossless', undef, 'webp');
1324
+ $self->OverrideFileType($$self{VALUE}{FileType} . ' (lossless)', undef, 'webp');
1325
1325
  return $val;
1326
1326
  },
1327
1327
  ValueConv => '($val & 0x3fff) + 1',
@@ -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.72';
37
+ $VERSION = '3.73';
38
38
 
39
39
  sub ProcessSRF($$$);
40
40
  sub ProcessSR2($$$);
@@ -76,7 +76,9 @@ sub PrintInvLensSpec($;$$);
76
76
  6 => 'Sony LA-EA4 Adapter',
77
77
  7 => 'Sony LA-EA5 Adapter', #JR
78
78
  13 => 'Samyang AF 35-150mm F2-2.8',
79
- # 27 => Venus Optics Laowa 12mm f2.8 Zero-D or 105mm f2 (T3.2) Smooth Trans Focus (ref IB)
79
+ 20 => 'Samyang AF 35mm F1.4 P FE', #JR
80
+ 21 => 'Samyang AF 14-24mm F2.8', #JR
81
+ # 27 => Venus Optics Laowa 12mm f2.8 Zero-D or 105mm f2 (T3.2) Smooth Trans Focus (ref IB)
80
82
  44 => 'Metabones Canon EF Smart Adapter', #JR
81
83
  78 => 'Metabones Canon EF Smart Adapter Mark III or Other Adapter', #PH/JR (also Mark IV, Fotodiox and Viltrox)
82
84
  184 => 'Metabones Canon EF Speed Booster Ultra', #JR ('Green' mode, LensMount reported as A-mount)
@@ -164,6 +166,7 @@ sub PrintInvLensSpec($;$$);
164
166
  32877 => 'Sony E 15mm F1.4 G', #JR
165
167
  32878 => 'Sony FE 20-70mm F4 G', #JR
166
168
  32879 => 'Sony FE 50mm F1.4 GM', #JR
169
+ 32880 => 'Sony FE 16mm F1.8 G', #JR
167
170
  32881 => 'Sony FE 24-50mm F2.8 G', #JR
168
171
  32882 => 'Sony FE 16-25mm F2.8 G', #JR
169
172
  32884 => 'Sony FE 70-200mm F4 Macro G OSS II', #JR
@@ -172,6 +175,7 @@ sub PrintInvLensSpec($;$$);
172
175
  32887 => 'Sony E PZ 16-50mm F3.5-5.6 OSS II', #JR
173
176
  32888 => 'Sony FE 85mm F1.4 GM II', #JR
174
177
  32889 => 'Sony FE 28-70mm F2 GM',
178
+ 32890 => 'Sony FE 400-800mm F6.3-8 G OSS', #JR
175
179
 
176
180
  # (comment this out so LensID will report the LensModel, which is more useful)
177
181
  # 32952 => 'Metabones Canon EF Speed Booster Ultra', #JR (corresponds to 184, but 'Advanced' mode, LensMount reported as E-mount)
@@ -194,6 +198,8 @@ sub PrintInvLensSpec($;$$);
194
198
  33088 => 'Sony FE 70-200mm F4 Macro G OSS II + 2X Teleconverter', #JR
195
199
  33089 => 'Sony FE 300mm F2.8 GM OSS + 1.4X Teleconverter', #JR (NC)
196
200
  33090 => 'Sony FE 300mm F2.8 GM OSS + 2X Teleconverter', #JR
201
+ 33091 => 'Sony FE 400-800mm F6.3-8 G OSS + 1.4X Teleconverter', #JR
202
+ 33092 => 'Sony FE 400-800mm F6.3-8 G OSS + 2X Teleconverter', #JR
197
203
 
198
204
  49201 => 'Zeiss Touit 12mm F2.8', #JR (lens firmware Ver.02)
199
205
  49202 => 'Zeiss Touit 32mm F1.8', #JR (lens firmware Ver.02)
@@ -305,6 +311,11 @@ sub PrintInvLensSpec($;$$);
305
311
  50549 => 'Sigma 50mm F1.2 DG DN | A', #JR (024)
306
312
  50550 => 'Sigma 28-105mm F2.8 DG DN | A', #JR (024)
307
313
  50551 => 'Sigma 28-45mm F1.8 DG DN | A', #JR (024)
314
+ 50553 => 'Sigma 300-600mm F4 DG OS | S', #JR (025)
315
+
316
+ # lenses listed in the Sigma MC-11 list, but not yet seen:
317
+ # 504xx => 'Sigma 18-200mm F3.5-6.3 DC MACRO OS HSM | C + MC-11', # (014)
318
+ # 504xx => 'Sigma 30mm F1.4 DC HSM | A + MC-11', # (013)
308
319
 
309
320
  50992 => 'Voigtlander SUPER WIDE-HELIAR 15mm F4.5 III', #JR
310
321
  50993 => 'Voigtlander HELIAR-HYPER WIDE 10mm F5.6', #IB
@@ -321,10 +332,10 @@ sub PrintInvLensSpec($;$$);
321
332
  51006 => 'Voigtlander APO-LANTHAR 35mm F2 Aspherical', #JR
322
333
  51007 => 'Voigtlander NOKTON 50mm F1 Aspherical', #JR
323
334
  51008 => 'Voigtlander NOKTON 75mm F1.5 Aspherical', #JR
335
+ 51009 => 'Voigtlander NOKTON 28mm F1.5 Aspherical', #JR
324
336
 
325
- # lenses listed in the Sigma MC-11 list, but not yet seen:
326
- # 504xx => 'Sigma 18-200mm F3.5-6.3 DC MACRO OS HSM | C + MC-11', # (014)
327
- # 504xx => 'Sigma 30mm F1.4 DC HSM | A + MC-11', # (013)
337
+ 51072 => 'ZEISS Otus ML 50mm F1.4', #JR
338
+ 51073 => 'ZEISS Otus ML 85mm F1.4', #JR
328
339
 
329
340
  # Note: For Samyang lenses, the "FE" designation isn't written to
330
341
  # EXIF:LensModel, so it isn't included in these strings either - JR/PH
@@ -344,6 +355,8 @@ sub PrintInvLensSpec($;$$);
344
355
  51518 => 'Samyang AF 135mm F1.8', #JR
345
356
 
346
357
  61569 => 'LAOWA FFII 10mm F2.8 C&D Dreamer', #JR
358
+
359
+ 61761 => 'Viltrox 28mm F4.5 FE', #JR
347
360
  );
348
361
 
349
362
  # ExposureProgram values (ref PH, mainly decoded from A200)