1177
1177
24 => 'PF27Value',
1181
# Custom functions for the 1D Mark III (ref PH)
1182
%Image::ExifTool::CanonCustom::Functions1DmkIII = (
1180
# Custom functions used by the 1D Mark III and later models (ref PH)
1181
%Image::ExifTool::CanonCustom::Functions2 = (
1183
1182
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
1184
1183
PROCESS_PROC => \&ProcessCanonCustom2,
1185
1184
CHECK_PROC => \&Image::ExifTool::Exif::CheckExif,
1186
1185
WRITE_PROC => \&WriteCanonCustom2,
1187
WRITABLE => 'int32u',
1186
WRITABLE => 'int32s',
1189
The EOS 1D Mark III has 57 custom function tags divided into four main
1190
groups: 1. Exposure (0x0101-0x010f), 2. Image (0x0201-0x0203), Flash
1191
Exposure (0x0304-0x0306) and Display (0x0407-0x0409), 3. Auto Focus
1192
(0x0501-0x050e) and Drive (0x060f-0x0611), and 4. Operation (0x0701-0x070a)
1193
and Others (0x080b-0x0810).
1188
Beginning with the EOS 1D Mark III, Canon finally created a set of custom
1189
function tags which are consistent across models. The EOS 1D Mark III has
1190
57 custom function tags divided into four main groups: 1. Exposure
1191
(0x0101-0x010f), 2. Image (0x0201-0x0203), Flash Exposure (0x0304-0x0306)
1192
and Display (0x0407-0x0409), 3. Auto Focus (0x0501-0x050e) and Drive
1193
(0x060f-0x0611), and 4. Operation (0x0701-0x070a) and Others
1194
(0x080b-0x0810). The table below lists tags used by the EOS 1D Mark III, as
1195
well as newer values and tags used by the EOS 40D. It is expected that
1196
future models will re-use some of these tags (possibly with minor value
1197
changes), as well as defining additional new tags of their own.
1195
1199
# grouped in 4 groups:
1198
Name => 'ExposureLevelIncrements',
1200
0 => '1/3-stop set, 1/3-stop comp.',
1201
1 => '1-stop set, 1/3-stop comp.',
1202
2 => '1/2-stop set, 1/2-stop comp.',
1203
Name => 'ExposureLevelIncrements',
1204
Condition => '$$self{CameraModel} =~ /\b40D\b/',
1212
Name => 'ExposureLevelIncrements',
1213
Notes => '1D Mark III',
1215
0 => '1/3-stop set, 1/3-stop comp.',
1216
1 => '1-stop set, 1/3-stop comp.',
1217
2 => '1/2-stop set, 1/2-stop comp.',
1206
1222
Name => 'ISOSpeedIncrements',
1213
Name => 'ISOSpeedRange',
1215
# (this decoding may not be valid for CR2 images?)
1218
'$val < 1000 ? exp(($val/8-9)*log(2))*100 : 0', # (educated guess)
1219
'$val < 1000 ? exp(($val/8-9)*log(2))*100 : 0', # (educated guess)
1223
'$val ? int(8*(log($val/100)/log(2)+9) + 0.5) : 0xffffffff',
1224
'$val ? int(8*(log($val/100)/log(2)+9) + 0.5) : 0xffffffff',
1228
'sprintf("Max %.0f",$val)',
1229
'sprintf("Min %.0f",$val)',
1233
'$val=~/([\d.]+)/ ? $1 : 0',
1234
'$val=~/([\d.]+)/ ? $1 : 0',
1230
Name => 'ISOExpansion',
1231
Condition => '$$self{CameraModel} =~ /\b40D\b/',
1239
Name => 'ISOSpeedRange',
1240
Notes => '1D Mark III',
1242
# (this decoding may not be valid for CR2 images?)
1245
'$val < 1000 ? exp(($val/8-9)*log(2))*100 : 0', # (educated guess)
1246
'$val < 1000 ? exp(($val/8-9)*log(2))*100 : 0', # (educated guess)
1250
'$val ? int(8*(log($val/100)/log(2)+9) + 0.5) : 0xffffffff',
1251
'$val ? int(8*(log($val/100)/log(2)+9) + 0.5) : 0xffffffff',
1255
'sprintf("Max %.0f",$val)',
1256
'sprintf("Min %.0f",$val)',
1260
'$val=~/([\d.]+)/ ? $1 : 0',
1261
'$val=~/([\d.]+)/ ? $1 : 0',
1238
1266
Name => 'AEBAutoCancel',
1239
1267
PrintConv => \%onOff,
1242
1270
Name => 'AEBSequence',
1271
Notes => 'value of 2 not used by 40D',
1359
1389
\%disableEnable,
1363
Name => 'FlashSyncSpeedAv',
1394
Name => 'FlashSyncSpeedAv',
1395
Condition => '$$self{CameraModel} =~ /\b40D\b/',
1403
Name => 'FlashSyncSpeedAv',
1404
Notes => '1D Mark III',
1371
1413
Name => 'LongExposureNoiseReduction',
1427
1469
Name => 'USMLensElectronicMF',
1429
0 => 'Turns on after one-shot AF',
1430
1 => 'Turns off after one-shot AF',
1431
2 => 'Always turned off',
1471
0 => 'Enable after one-shot AF',
1472
1 => 'Disable after one-shot AF',
1473
2 => 'Disable in AF mode',
1435
1477
Name => 'AIServoTrackingSensitivity',
1436
PrintConv => { # (needs verification)
1480
-1 => 'Medium Slow',
1437
1481
0 => 'Standard',
1439
2 => 'Moderately slow',
1440
3 => 'Moderately fast',
1467
1509
Name => 'LensAFStopButton',
1510
Notes => 'value of 6 not used by 40D',
1469
1512
0 => 'AF stop',
1470
1513
1 => 'AF start',
1471
1514
2 => 'AE lock',
1472
1515
3 => 'AF point: M->Auto/Auto->ctr',
1473
1516
4 => 'One Shot <-> AI servo',
1474
# MORE ENTRIES HERE?
1518
6 => 'Switch to registered AF point',
1533
1577
Name => 'AFAssistBeam',
1578
Notes => 'value of 2 not used by 1D Mark III',
1536
1581
1 => 'Does not emit',
1582
2 => 'Only ext. flash emits',
1585
0x050f => { # new for 40D
1586
Name => 'AFPointSelectionMethod',
1589
1 => 'Multi-controller direct',
1590
2 => 'Quick Control Dial direct',
1593
0x0510 => { # new for 40D
1594
Name => 'SuperimposedDisplay',
1595
PrintConv => \%onOff,
1597
0x0511 => { # new for 40D
1598
Name => 'AFDuringLiveView',
1599
PrintConv => \%disableEnable,
1541
1603
Name => 'MirrorLockup',
1604
Notes => 'value of 2 not used by 40D',
1543
1606
0 => 'Disable',
1594
1657
2 => 'ISO speed',
1598
Name => 'SetButtonWhenShooting',
1600
0 => 'Normal (disabled)',
1601
1 => 'White balance',
1604
4 => 'Picture style',
1605
5 => 'Record func. + media/folder',
1606
6 => 'Menu display',
1607
7 => 'Image playback',
1662
Name => 'SetButtonWhenShooting',
1663
Condition => '$$self{CameraModel} =~ /\b40D\b/',
1666
0 => 'Normal (disabled)',
1667
1 => 'Image quality',
1668
2 => 'Picture style',
1669
3 => 'Menu display',
1670
4 => 'Image playback',
1674
Name => 'SetButtonWhenShooting',
1675
Notes => '1D Mark III',
1677
0 => 'Normal (disabled)',
1678
1 => 'White balance',
1681
4 => 'Picture style',
1682
5 => 'Record func. + media/folder',
1683
6 => 'Menu display',
1684
7 => 'Image playback',
1611
1689
Name => 'ManualTv',
1612
1690
Description => 'Manual Tv/Av For M',
1650
1728
#### 4b) Others
1652
Name => 'FocusingScreen',
1655
1 => 'Ec-A,B,C,CII,CIII,D,H,I,L',
1731
Name => 'FocusingScreen',
1732
Condition => '$$self{CameraModel} =~ /\b40D\b/',
1741
Name => 'FocusingScreen',
1742
Notes => '1D Mark III',
1745
1 => 'Ec-A,B,C,CII,CIII,D,H,I,L',
1661
1752
Name => 'TimerLength',
1768
1859
$num = Get32u($dataPt, $recPos + 4);
1770
1861
last if $recPos + $num * 4 > $recEnd;
1771
my $val = ReadValue($dataPt, $recPos, 'int32u', $num, $num * 4);
1862
my $val = ReadValue($dataPt, $recPos, 'int32s', $num, $num * 4);
1773
1864
# write new value
1774
1865
my $tagInfo = $$newTags{$tag};
1777
1868
next unless Image::ExifTool::IsOverwriting($newValueHash, $val);
1778
1869
my $newVal = Image::ExifTool::GetNewValues($newValueHash);
1779
1870
next unless defined $newVal; # can't delete from a custom table
1780
WriteValue($newVal, 'int32u', $num, $dataPt, $recPos);
1871
WriteValue($newVal, 'int32s', $num, $dataPt, $recPos);
1781
1872
if ($verbose > 1) {
1782
1873
$exifTool->VPrint(0, " - CanonCustom:$$tagInfo{Name} = '$val'\n",
1783
1874
" + CanonCustom:$$tagInfo{Name} = '$newVal'\n");