From a33d97a8777f357764c81c34d7e5c87ba537f406 Mon Sep 17 00:00:00 2001 From: Christoph Hasse Date: Fri, 10 Jun 2022 16:42:17 +0200 Subject: [PATCH] fix naming of canon EF 35-80mm.closes #2247 (cherry picked from commit 16d72c9945b732ada4796809dbe82d0254af1f47) # Conflicts: # src/canonmn_int.cpp --- src/canonmn_int.cpp | 1723 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1723 insertions(+) diff --git a/src/canonmn_int.cpp b/src/canonmn_int.cpp index a315478cd8..bdf356aa5f 100644 --- a/src/canonmn_int.cpp +++ b/src/canonmn_int.cpp @@ -665,6 +665,7 @@ namespace Exiv2 { return tagInfoMv_; } +<<<<<<< HEAD // MyColors, tag 0x001d extern const TagDetails canonMyColors[] = { { 0, N_("Off") }, @@ -2821,6 +2822,1728 @@ namespace Exiv2 { return ( td.val_ == ltfl.lensType_ && std::string(td.label_).find(ltfl.focalLength_) != std::string::npos && std::string(td.label_).find(ltfl.maxAperture_) != std::string::npos); +======= +/* +// Canon Aspect Info, tag 0x001d +constexpr TagDetails canonAspectInfo[] = { + { 0, N_("3:2") }, + { 1, N_("1:1") }, + { 2, N_("4:3") }, + { 7, N_("16:9") }, + { 8, N_("4:5") }, + { 12, N_("3:2 (APS-H crop)") }, + { 13, N_("3:2 (APS-C crop)") } +}; +*/ + +// Canon Aspect Info Tag +constexpr TagInfo CanonMakerNote::tagInfoAs_[] = { + {0x0000, "AspectRatio", N_("Aspect Ratio"), N_("Aspect Ratio"), canonAsId, makerTags, unsignedLong, -1, printValue}, + {0x0001, "CroppedImageWidth", N_("Cropped Image Width"), N_("Cropped Image Width"), canonAsId, makerTags, + unsignedLong, -1, printValue}, + {0x0002, "CroppedImageHeight", N_("Cropped Image Height"), N_("Cropped Image Height"), canonAsId, makerTags, + unsignedLong, -1, printValue}, + {0x0003, "CroppedImageLeft", N_("Cropped Image Left"), N_("Cropped Image Left"), canonAsId, makerTags, unsignedLong, + -1, printValue}, + {0x0004, "CroppedImageTop", N_("Cropped Image Top"), N_("Cropped Image Top"), canonAsId, makerTags, unsignedLong, + -1, printValue}, +}; + +const TagInfo* CanonMakerNote::tagListAs() { + return tagInfoAs_; +} + +// Canon Color Balance Info Tag +constexpr TagInfo CanonMakerNote::tagInfoCbi_[] = { + {0x0001, "WB_RGGBLevelsAuto", N_("WB_RGGB Levels Auto"), N_("WB_RGGB Levels Auto"), canonCbId, makerTags, + signedShort, -1, printValue}, + {0x0005, "WB_RGGBLevelsDaylight", N_("WB_RGGB Levels Daylight"), N_("WB_RGGB Levels Daylight"), canonCbId, + makerTags, signedShort, -1, printValue}, + {0x000d, "WB_RGGBLevelsShade", N_("WB_RGGB Levels Shade"), N_("WB_RGGB Levels Shade"), canonCbId, makerTags, + signedShort, -1, printValue}, + {0x001a, "WB_RGGBLevelsCloudy", N_("WB_RGGB Levels Cloudy"), N_("WB_RGGB Levels Cloudy"), canonCbId, makerTags, + signedShort, -1, printValue}, + {0x0011, "WB_RGGBLevelsTungsten", N_("WB_RGGB Levels Tungsten"), N_("WB_RGGB Levels Tungsten"), canonCbId, + makerTags, signedShort, -1, printValue}, + {0x0015, "WB_RGGBLevelsFluorescent", N_("WB_RGGB Levels Fluorescent"), N_("WB_RGGB Levels Fluorescent"), canonCbId, + makerTags, signedShort, -1, printValue}, + {0x0032, "WB_RGGBLevelsFlash", N_("WB_RGGB Levels Flash"), N_("WB_RGGB Levels Flash"), canonCbId, makerTags, + signedShort, -1, printValue}, + {0x001d, "WB_RGGBLevelsCustomBlackLevels", N_("WB_RGGB Levels Custom Black Levels"), + N_("WB_RGGB Levels Custom Black Levels"), canonCbId, makerTags, signedShort, -1, printValue}, + {0x0021, "WB_RGGBLevelsKelvin", N_("WB_RGGB Levels Kelvin"), N_("WB_RGGB Levels Kelvin"), canonCbId, makerTags, + signedShort, -1, printValue}, + {0x0025, "WB_RGGBBlackLevels", N_("WB_RGGB Black Levels"), N_("WB_RGGB Black Levels"), canonCbId, makerTags, + signedShort, -1, printValue}, +}; + +const TagInfo* CanonMakerNote::tagListCbi() { + return tagInfoCbi_; +} + +// Canon Flags Tag +constexpr TagInfo CanonMakerNote::tagInfoFl_[] = { + {0x0001, "ModifiedParamFlag", N_("Modified Param Flag"), N_("Modified Param Flag"), canonFlId, makerTags, + signedShort, -1, printValue}, +}; + +const TagInfo* CanonMakerNote::tagListFl() { + return tagInfoFl_; +} + +// Canon Modified ToneCurve Info, tag 0x0001 +constexpr TagDetails canonModifiedToneCurve[] = {{0, N_("Standard")}, {1, N_("Manual")}, {2, N_("Custom")}}; + +// Canon Modified Sharpness Freq Info, tag 0x0002 +constexpr TagDetails canonModifiedSharpnessFreq[] = {{0, N_("n/a")}, {1, N_("Lowest")}, {2, N_("Low")}, + {3, N_("Standard")}, {4, N_("High")}, {5, N_("Highest")}}; + +// Canon ModifiedInfo Tag +constexpr TagInfo CanonMakerNote::tagInfoMo_[] = { + {0x0001, "ModifiedToneCurve", N_("Modified ToneCurve"), N_("Modified ToneCurve"), canonMoID, makerTags, signedShort, + -1, EXV_PRINT_TAG(canonModifiedToneCurve)}, + {0x0002, "ModifiedSharpness", N_("Modified Sharpness"), N_("Modified Sharpness"), canonMoID, makerTags, signedShort, + -1, EXV_PRINT_TAG(canonModifiedSharpnessFreq)}, + {0x0003, "ModifiedSharpnessFreq", N_("Modified Sharpness Freq"), N_("Modified Sharpness Freq"), canonMoID, + makerTags, signedShort, -1, printValue}, + {0x0004, "ModifiedSensorRedLevel", N_("Modified Sensor Red Level"), N_("Modified Sensor Red Level"), canonMoID, + makerTags, signedShort, -1, printValue}, + {0x0005, "ModifiedSensorBlueLevel", N_("Modified Sensor Blue Level"), N_("Modified Sensor Blue Level"), canonMoID, + makerTags, signedShort, -1, printValue}, + {0x0006, "ModifiedWhiteBalanceRed", N_("Modified White Balance Red"), N_("Modified White Balance Red"), canonMoID, + makerTags, signedShort, -1, printValue}, + {0x0007, "ModifiedWhiteBalanceBlue", N_("Modified White Balance Blue"), N_("Modified White Balance Blue"), + canonMoID, makerTags, signedShort, -1, printValue}, + {0x0008, "ModifiedWhiteBalance", N_("Modified White Balance"), N_("Modified White Balance"), canonMoID, makerTags, + signedShort, -1, EXV_PRINT_TAG(canonSiWhiteBalance)}, + {0x0009, "ModifiedColorTemp", N_("Modified Color Temp"), N_("Modified Color Temp"), canonMoID, makerTags, + signedShort, -1, printValue}, + {0x000a, "ModifiedPictureStyle", N_("Modified Picture Style"), N_("Modified Picture Style"), canonMoID, makerTags, + signedShort, -1, EXV_PRINT_TAG(canonPictureStyle)}, + {0x000b, "ModifiedDigitalGain", N_("Modified Param Flag"), N_("Modified Param Flag"), canonMoID, makerTags, + signedShort, -1, printValue}, +}; + +const TagInfo* CanonMakerNote::tagListMo() { + return tagInfoMo_; +} + +// Canon Preview Quality Info, tag 0x0001 +constexpr TagDetails canonPreviewQuality[] = { + {-1, N_("n/a")}, {1, N_("Economy")}, {2, N_("Normal")}, {3, N_("Fine")}, {4, N_("RAW")}, + {5, N_("Superfine")}, {7, N_("CRAW")}, {130, N_("Normal Movie")}, {131, N_("Movie (2)")}}; + +// Canon Preview Image Info Tag +constexpr TagInfo CanonMakerNote::tagInfoPreI_[] = { + {0x0001, "PreviewQuality", N_("Preview Quality"), N_("Preview Quality"), canonPreID, makerTags, unsignedLong, -1, + EXV_PRINT_TAG(canonPreviewQuality)}, + {0x0002, "PreviewImageLength", N_("Preview Image Length"), N_("Preview Image Length"), canonPreID, makerTags, + unsignedLong, -1, printValue}, + {0x0003, "PreviewImageWidth", N_("Preview Image Width"), N_("Preview Image Width"), canonPreID, makerTags, + unsignedLong, -1, printValue}, + {0x0004, "PreviewImageHeight", N_("Preview Image Height"), N_("Preview Image Height"), canonPreID, makerTags, + unsignedLong, -1, printValue}, + {0x0005, "PreviewImageStart", N_("Preview Image Start"), N_("Preview Image Start"), canonPreID, makerTags, + unsignedLong, -1, printValue}, +}; + +const TagInfo* CanonMakerNote::tagListPreI() { + return tagInfoPreI_; +} + +// Canon Color Info Tag +constexpr TagInfo CanonMakerNote::tagInfoCi_[] = { + {0x0001, "Saturation", N_("Saturation"), N_("Saturation"), canonCiId, makerTags, signedShort, -1, printValue}, + {0x0002, "ColorTone", N_("Color Tone"), N_("Color Tone"), canonCiId, makerTags, signedShort, -1, printValue}, + {0x0003, "ColorSpace", N_("Color Space"), N_("Color Space"), canonCiId, makerTags, signedShort, -1, + EXV_PRINT_TAG(canonColorSpace)}, +}; + +const TagInfo* CanonMakerNote::tagListCi() { + return tagInfoCi_; +} + +// Canon AFMicroAdjMode Quality Info, tag 0x0001 +constexpr TagDetails canonAFMicroAdjMode[] = { + {0, N_("Disable")}, {1, N_("Adjust all by the same amount")}, {2, N_("Adjust by lens")}}; + +// Canon AFMicroAdj Info Tag +constexpr TagInfo CanonMakerNote::tagInfoAfMiAdj_[] = { + {0x0001, "AFMicroAdjMode", N_("AFMicroAdjMode"), N_("AFMicroAdjMode"), canonAfMiAdjId, makerTags, signedLong, -1, + EXV_PRINT_TAG(canonAFMicroAdjMode)}, + {0x0002, "AFMicroAdjValue", N_("AF Micro Adj Value"), N_("AF Micro Adj Value"), canonAfMiAdjId, makerTags, + signedRational, -1, printValue}, + {0xffff, "(UnknownCanonAFMicroAdjTag)", "(UnknownCanonAFMicroAdjTag)", N_("Unknown Canon AFMicroAdj tag"), + canonAfMiAdjId, makerTags, signedShort, 1, printValue}}; + +const TagInfo* CanonMakerNote::tagListAfMiAdj() { + return tagInfoAfMiAdj_; +} + +// Canon VignettingCorr Tag +constexpr TagInfo CanonMakerNote::tagInfoVigCor_[] = { + {0x0000, "VignettingCorrVersion", N_("Vignetting Corr Version"), N_("Vignetting Corr Version"), canonVigCorId, + makerTags, unsignedShort, -1, printValue}, + {0x0002, "PeripheralLighting", N_("Peripheral Lighting"), N_("Peripheral Lighting"), canonVigCorId, makerTags, + signedShort, -1, EXV_PRINT_TAG(canonOffOn)}, + {0x0003, "DistortionCorrection", N_("Distortion Correction"), N_("Distortion Correction"), canonVigCorId, makerTags, + signedShort, -1, EXV_PRINT_TAG(canonOffOn)}, + {0x0004, "ChromaticAberrationCorr", N_("Chromatic Aberration Corr"), N_("Chromatic Aberration Corr"), canonVigCorId, + makerTags, signedShort, -1, EXV_PRINT_TAG(canonOffOn)}, + {0x0005, "ChromaticAberrationCorr", N_("Chromatic Aberration Corr"), N_("Chromatic Aberration Corr"), canonVigCorId, + makerTags, signedShort, -1, EXV_PRINT_TAG(canonOffOn)}, + {0x0006, "PeripheralLightingValue", N_("Peripheral Lighting Value"), N_("Peripheral Lighting Value"), canonVigCorId, + makerTags, signedShort, -1, printValue}, + {0x0009, "DistortionCorrectionValue", N_("Distortion Correction Value"), N_("Distortion Correction Value"), + canonVigCorId, makerTags, signedShort, -1, printValue}, + {0x000b, "OriginalImageWidth", N_("Original Image Width"), N_("Original Image Width"), canonVigCorId, makerTags, + signedShort, -1, printValue}, + {0x000c, "OriginalImageHeight", N_("Original Image Height"), N_("Original Image Height"), canonVigCorId, makerTags, + signedShort, -1, printValue}, +}; + +const TagInfo* CanonMakerNote::tagListVigCor() { + return tagInfoVigCor_; +} + +// Canon VignettingCorr2 Tag +constexpr TagInfo CanonMakerNote::tagInfoVigCor2_[] = { + {0x0005, "PeripheralLightingSetting", N_("Peripheral Lighting Setting"), N_("Peripheral Lighting Setting"), + canonVigCor2Id, makerTags, signedLong, -1, EXV_PRINT_TAG(canonOffOn)}, + {0x0006, "ChromaticAberrationSetting", N_("Chromatic Aberration Setting"), N_("Chromatic Aberration Setting"), + canonVigCor2Id, makerTags, signedLong, -1, EXV_PRINT_TAG(canonOffOn)}, + {0x0007, "DistortionCorrectionSetting", N_("Distortion Correction Setting"), N_("Distortion Correction Setting"), + canonVigCor2Id, makerTags, signedLong, -1, EXV_PRINT_TAG(canonOffOn)}, + {0xffff, "(UnknownVignettingCorr2Tag)", "(UnknownVignettingCorr2Tag)", N_("UnknownVignettingCorr2Tag Tag"), + canonVigCor2Id, makerTags, signedLong, 1, printValue} // important to add end of tag +}; + +const TagInfo* CanonMakerNote::tagListVigCor2() { + return tagInfoVigCor2_; +} + +// Canon AutoLightingOptimizer, tag 0x0002 +constexpr TagDetails canonAutoLightingOptimizer[] = { + {0, N_("Standard")}, {1, N_("Low")}, {2, N_("Strong")}, {3, N_("Off")}}; + +// Canon HighISONoiseReduction, tag 0x0004 +constexpr TagDetails canonLongExposureNoiseReduction[] = {{0, N_("Off")}, {1, N_("Auto")}, {2, N_("On")}}; + +// Canon HighISONoiseReduction, tag 0x0005 +constexpr TagDetails canonHighISONoiseReduction[] = { + {0, N_("Standard")}, {1, N_("Low")}, {2, N_("Strong")}, {3, N_("off")}}; + +// Canon LightingOpt Tag +constexpr TagInfo CanonMakerNote::tagInfoLiOp_[] = { + {0x0001, "PeripheralIlluminationCorr", N_("Peripheral Lighting Setting"), N_("Peripheral Lighting Setting"), + canonLiOpId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonOffOn)}, + {0x0002, "AutoLightingOptimizer", N_("Chromatic Aberration Setting"), N_("Chromatic Aberration Setting"), + canonLiOpId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonAutoLightingOptimizer)}, + {0x0003, "HighlightTonePriority", N_("Distortion Correction Setting"), N_("Distortion Correction Setting"), + canonLiOpId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonOffOn)}, + {0x0004, "LongExposureNoiseReduction", N_("Distortion Correction Setting"), N_("Distortion Correction Setting"), + canonLiOpId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonLongExposureNoiseReduction)}, + {0x0005, "HighISONoiseReduction", N_("Distortion Correction Setting"), N_("Distortion Correction Setting"), + canonLiOpId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonHighISONoiseReduction)}, + {0xffff, "(UnknownLightingOptimizationTag)", "(UnknownLightingOptimizationTag)", + N_("UnknownLightingOptimizationTag Selection Tag"), canonLiOpId, makerTags, signedLong, 1, + printValue} // important to add end of tag +}; + +const TagInfo* CanonMakerNote::tagListLiOp() { + return tagInfoLiOp_; +} + +// Canon LensInfo Tag +constexpr TagInfo CanonMakerNote::tagInfoLe_[] = { + {0x0000, "LensSerialNumber", N_("Lens Seria lNumber"), N_("Lens Serial Number"), canonLeId, makerTags, asciiString, + -1, printValue}, + {0xffff, "(UnkownCanonLensInfoTag)", "(UnkownCanonLensInfoTag)", N_("UnkownCanonLensInfoTag"), canonLeId, makerTags, + undefined, 1, printValue} // important to add end of tag +}; + +const TagInfo* CanonMakerNote::tagListLe() { + return tagInfoLe_; +} + +// Canon AmbienceSelection, tag 0x0001 +constexpr TagDetails canonAmbienceSelection[] = {{0, N_("Standard")}, {1, N_("Vivid")}, {2, N_("Warm")}, + {3, N_("Soft")}, {4, N_("Cool")}, {5, N_("Intense")}, + {6, N_("Brighter")}, {7, N_("Darker")}, {8, N_("Monochrome")}}; + +// Canon Ambience Tag +constexpr TagInfo CanonMakerNote::tagInfoAm_[] = { + {0x0001, "AmbienceSelection", N_("Ambience Selection"), N_("Ambience Selection"), canonAmId, makerTags, signedLong, + -1, EXV_PRINT_TAG(canonAmbienceSelection)}, + {0xffff, "(AmbienceSelectionTag)", "(AmbienceSelectionTag)", N_("UAmbience Selection Tag"), canonAmId, makerTags, + signedLong, 1, printValue} // important to add end of tag +}; + +const TagInfo* CanonMakerNote::tagListAm() { + return tagInfoAm_; +} + +// Canon MultiExposure, tag 0x0001 +constexpr TagDetails canonMultiExposure[] = {{0, N_("Off")}, {1, N_("On")}, {2, N_("On (RAW)")}}; + +// Canon MultiExposureControl, tag 0x0001 +constexpr TagDetails canonMultiExposureControl[] = { + {0, N_("Additive")}, {1, N_("Average")}, {2, N_("Bright (comparative)")}, {3, N_("Dark (comparative)")}}; + +// Canon MultiExp Tag +constexpr TagInfo CanonMakerNote::tagInfoMe_[] = { + {0x0001, "MultiExposure", N_("Multi Exposure"), N_("Multi Exposure"), canonMeId, makerTags, signedLong, -1, + EXV_PRINT_TAG(canonMultiExposure)}, + {0x0002, "MultiExposureControl", N_("Multi Exposure Control"), N_("Multi Exposure Control"), canonMeId, makerTags, + signedLong, -1, EXV_PRINT_TAG(canonMultiExposureControl)}, + {0x0003, "MultiExposureShots", N_("Multi Exposure Shots"), N_("Multi Exposure Shots"), canonMeId, makerTags, + signedLong, -1, EXV_PRINT_TAG(canonMultiExposure)}, + {0xffff, "(UnknownMultiExposureTag)", "(UnknownMultiExposureTag)", N_("UnknownMultiExposureTag"), canonMeId, + makerTags, signedLong, 1, printValue} // important to add end of tag +}; + +const TagInfo* CanonMakerNote::tagListMe() { + return tagInfoMe_; +} + +// Canon FilterInfo, tag 0x0001 +constexpr TagDetails canonFilterInfo[] = {{-1, N_("Off")}}; + +// Canon MiniatureFilterOrientation, tag 0x0001 +constexpr TagDetails canonMiniatureFilterOrientation[] = {{0, N_("Horizontal")}, {1, N_("Vertical")}}; + +// Canon Filter Info Tag +constexpr TagInfo CanonMakerNote::tagInfoFil_[] = { + {0x0101, "GrainyBWFilter", N_("Grainy BW Filter"), N_("Grainy BW Filter"), canonFilId, makerTags, asciiString, -1, + EXV_PRINT_TAG(canonFilterInfo)}, + {0x0201, "SoftFocusFilter", N_("Soft Focus Filter"), N_("Soft Focus Filter"), canonFilId, makerTags, asciiString, + -1, EXV_PRINT_TAG(canonFilterInfo)}, + {0x0301, "ToyCameraFilter", N_("Toy Camera Filter"), N_("Toy Camera Filter"), canonFilId, makerTags, asciiString, + -1, EXV_PRINT_TAG(canonFilterInfo)}, + {0x0401, "MiniatureFilter", N_("Miniature Filter"), N_("Miniature Filter"), canonFilId, makerTags, asciiString, -1, + EXV_PRINT_TAG(canonFilterInfo)}, + {0x0402, "MiniatureFilterOrientation", N_("Miniature Filter Orientation"), N_("Miniature Filter Orientation"), + canonFilId, makerTags, asciiString, -1, EXV_PRINT_TAG(canonMiniatureFilterOrientation)}, + {0x0403, "MiniatureFilterPosition", N_("Miniature Filter Position"), N_("Miniature Filter Position"), canonFilId, + makerTags, asciiString, -1, printValue}, + {0x0404, "MiniatureFilterParameter", N_("Miniature Filter Parameter"), N_("Miniature Filter Parameter"), canonFilId, + makerTags, asciiString, -1, printValue}, + {0x0501, "FisheyeFilter", N_("Fisheye Filter"), N_("Fisheye Filter"), canonFilId, makerTags, asciiString, -1, + EXV_PRINT_TAG(canonFilterInfo)}, + {0x0601, "PaintingFilter", N_("Painting Filter"), N_("Painting Filter"), canonFilId, makerTags, asciiString, -1, + EXV_PRINT_TAG(canonFilterInfo)}, + {0x0701, "WatercolorFilter", N_("Watercolor Filter"), N_("Watercolor Filter"), canonFilId, makerTags, asciiString, + -1, EXV_PRINT_TAG(canonFilterInfo)}, + {0xffff, "(UnknownFilterTag)", "(UnknownFilterTag)", N_("UnknownFilterTag"), canonFilId, makerTags, signedLong, 1, + printValue} // important to add end of tag +}; + +const TagInfo* CanonMakerNote::tagListFil() { + return tagInfoFil_; +} + +// Canon HDR, tag 0x0001 +constexpr TagDetails canonHdr[] = {{0, N_("Off")}, {1, N_("On")}, {2, N_("On (RAW")}}; + +// Canon HDREffect, tag 0x0001 +constexpr TagDetails canonHdrEffect[] = {{0, N_("Natural")}, + {1, N_("Art (standard)")}, + {2, N_("Art (vivid)")}, + {3, N_("Art (bold)")}, + {4, N_("Art (embossed)")}}; + +// Canon HDR Info Tag +constexpr TagInfo CanonMakerNote::tagInfoHdr_[] = { + {0x0001, "HDR", N_("HDR"), N_("HDR"), canonHdrId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonHdr)}, + {0x0002, "HDREffect", N_("HDR Effect"), N_("HDR Effect"), canonHdrId, makerTags, signedLong, -1, + EXV_PRINT_TAG(canonHdrEffect)}, + {0xffff, "(UnknownHDRTag)", "(UnknownHDRTag)", N_("Unknown Canon HDR Tag"), canonHdrId, makerTags, signedLong, 1, + printValue}}; + +const TagInfo* CanonMakerNote::tagListHdr() { + return tagInfoHdr_; +} + +// Canon AIServoFirstImage, tag 0x0001 +constexpr TagDetails canonAIServoFirstImage[] = { + {0, N_("Equal Priority")}, {1, N_("Release Priority")}, {2, N_("Focus Priority")}}; + +// Canon AIServoSecondImage, tag 0x0001 +constexpr TagDetails canonAIServoSecondImage[] = { + {0, N_("Equal Priority")}, {1, N_("Release Priority")}, {2, N_("Focus Priority")}, + {3, N_("Release High Priority")}, {4, N_("Focus High Priority")}, +}; + +// Canon USMLensElectronicMF, tag 0x0001 +constexpr TagDetails canonUSMLensElectronicMF[] = { + {0, N_("Enable After AF")}, {1, N_("Disable After AF")}, {2, N_("Disable in AF Mode")}}; + +// Canon AFAssistBeam, tag 0x0001 +constexpr TagDetails canonAFAssistBeam[] = {{0, N_("Enable")}, {1, N_("Disable")}, {2, N_("IR AF Assist Beam Mode")}}; + +// Canon OneShotAFRelease, tag 0x0001 +constexpr TagDetails canonOneShotAFRelease[] = {{0, N_("Focus Priority")}, {1, N_("Release Priority")}}; + +// Canon AutoAFPointSelEOSiTRAF, tag 0x0001 +constexpr TagDetails canonAutoAFPointSelEOSiTRAF[] = {{0, N_("Enable")}, {1, N_("Disable")}}; + +// Canon LensDriveWhenAFImpossible, tag 0x0001 +constexpr TagDetails canonLensDriveWhenAFImpossible[] = {{0, N_("Continue Focus Search")}, + {1, N_("Stop Focus Search")}}; + +// Canon SelectAFAreaSelectionMode, tag 0x0001 +constexpr TagDetails canonSelectAFAreaSelectionMode[] = { + {0, N_("Single-Point-AF")}, {1, N_("Auto")}, + {2, N_("Zone AF")}, {3, N_("AF Point Expansion (4 point)")}, + {4, N_("Spot AF")}, {5, N_("AF Point Expansion (8 point)")}}; + +// Canon AFAreaSelectionMethod, tag 0x0001 +constexpr TagDetails canonAFAreaSelectionMethod[] = {{0, N_("M-Fn Button")}, {1, N_("Main Dial")}}; + +// Canon OrientationLinkedAF, tag 0x0001 +constexpr TagDetails canonOrientationLinkedAF[] = { + {0, N_("Same for Vert/Horiz Points")}, {1, N_("Separate for Vert/Horiz Points")}, {2, N_("Separate Area+Points")}}; + +// Canon ManualAFPointSelPattern, tag 0x0001 +constexpr TagDetails canonManualAFPointSelPattern[] = {{0, N_("Stops at AF Area Edges")}, {1, N_("Continuous")}}; + +// Canon AFPointDisplayDuringFocus, tag 0x0001 +constexpr TagDetails canonAFPointDisplayDuringFocus[] = {{0, N_("Selected (constant)")}, + {1, N_("All (constant)")}, + {1, N_("Selected (pre-AF, focused)")}, + {1, N_("Selected (focused)")}, + {1, N_("Disabled")}}; + +// Canon VFDisplayIllumination, tag 0x0001 +constexpr TagDetails canonAVFDisplayIllumination[] = { + {0, N_("Auto")}, + {1, N_("Enable")}, + {2, N_("Disable")}, +}; + +// Canon AFStatusViewfinder, tag 0x0001 +constexpr TagDetails canonAFStatusViewfinder[] = { + {0, N_("Auto")}, + {1, N_("Enable")}, + {2, N_("Disable")}, +}; + +// Canon InitialAFPointInServo, tag 0x0001 +constexpr TagDetails canonInitialAFPointInServo[] = { + {0, N_("Initial AF Point Selected")}, + {1, N_("Manual AF Point")}, + {2, N_("Auto")}, +}; + +// Canon AFConfig Tags +constexpr TagInfo CanonMakerNote::tagInfoAfC_[] = { + {0x0001, "AFConfigTool", N_("AF Config Tool"), N_("AF Config Tool"), canonAfCId, makerTags, signedLong, -1, + printValue}, + {0x0002, "AFTrackingSensitivity", N_("AF Tracking Sensitivity"), N_("AFTrackingSensitivity"), canonAfCId, makerTags, + signedLong, -1, printValue}, + {0x0003, "AFAccelDecelTracking", N_("AF Accel Decel Tracking"), N_("AF Accel Decel Tracking"), canonAfCId, + makerTags, signedLong, -1, printValue}, + {0x0004, "AFPointSwitching", N_("AF PointS witching"), N_("AF Point Switching"), canonAfCId, makerTags, signedLong, + -1, printValue}, + {0x0005, "AIServoFirstImage", N_("AI Servo First Image"), N_("AI Servo First Image"), canonAfCId, makerTags, + signedLong, -1, EXV_PRINT_TAG(canonAIServoFirstImage)}, + {0x0006, "AIServoSecondImage", N_("AI Servo Second Image"), N_("AI Servo Second Image"), canonAfCId, makerTags, + signedLong, -1, EXV_PRINT_TAG(canonAIServoSecondImage)}, + {0x0007, "USMLensElectronicMF", N_("USM Lens Electronic MF"), N_("USM Lens Electronic MF"), canonAfCId, makerTags, + signedLong, -1, EXV_PRINT_TAG(canonUSMLensElectronicMF)}, + {0x0008, "AFAssistBeam", N_("AF Assist Beam"), N_("AF Assist Beam"), canonAfCId, makerTags, signedLong, -1, + EXV_PRINT_TAG(canonAFAssistBeam)}, + {0x0009, "OneShotAFRelease", N_("One Shot AF Release"), N_("One Shot AF Release"), canonAfCId, makerTags, + signedLong, -1, EXV_PRINT_TAG(canonOneShotAFRelease)}, + {0x000a, "AutoAFPointSelEOSiTRAF", N_("Auto AF Point Sel EOS iTRAF"), N_("Auto AF Point Sel EOS iTRAF"), canonAfCId, + makerTags, signedLong, -1, EXV_PRINT_TAG(canonAutoAFPointSelEOSiTRAF)}, + {0x000b, "LensDriveWhenAFImpossible", N_("Lens Drive When AF Impossible"), N_("Lens Drive When AF Impossible"), + canonAfCId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonLensDriveWhenAFImpossible)}, + {0x000c, "SelectAFAreaSelectionMode", N_("Select AF Area Selection Mode"), N_("Select AF Area Selection Mode"), + canonAfCId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonSelectAFAreaSelectionMode)}, + {0x000d, "AFAreaSelectionMethod", N_("AF Area Selection Method"), N_("AF Area Selection Method"), canonAfCId, + makerTags, signedLong, -1, EXV_PRINT_TAG(canonAFAreaSelectionMethod)}, + {0x000e, "OrientationLinkedAF", N_("Orientation Linked AF"), N_("Orientation Linked AF"), canonAfCId, makerTags, + signedLong, -1, EXV_PRINT_TAG(canonOrientationLinkedAF)}, + {0x000f, "ManualAFPointSelPattern", N_("Manual AF Point Sel Pattern"), N_("Manual AF Point Sel Pattern"), + canonAfCId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonManualAFPointSelPattern)}, + {0x0010, "AFPointDisplayDuringFocus", N_("AF Point Display During Focus"), N_("AF Point Display During Focus"), + canonAfCId, makerTags, signedLong, -1, EXV_PRINT_TAG(canonAFPointDisplayDuringFocus)}, + {0x0011, "VFDisplayIllumination", N_("VF Display Illumination"), N_("VF Display Illumination"), canonAfCId, + makerTags, signedLong, -1, EXV_PRINT_TAG(canonAVFDisplayIllumination)}, + {0x0012, "AFStatusViewfinder", N_("AF Status Viewfinder"), N_("AF Status Viewfinder"), canonAfCId, makerTags, + signedLong, -1, EXV_PRINT_TAG(canonAFStatusViewfinder)}, + {0x0013, "InitialAFPointInServo", N_("Initial AF Point In Servo"), N_("Initial AF Point In Servo"), canonAfCId, + makerTags, signedLong, -1, EXV_PRINT_TAG(canonInitialAFPointInServo)}, + {0xffff, "(UnknownCanonAFTag)", "(UnknownCanonAFTag)", N_("UnknownCanonAFTag"), canonAfCId, makerTags, signedLong, + 1, printValue} // important to add end of tag +}; + +const TagInfo* CanonMakerNote::tagListAfC() { + return tagInfoAfC_; +} + +// Canon RawBurstInfo Info Tag +constexpr TagInfo CanonMakerNote::tagInfoRawB_[] = { + {0x0001, "RawBurstImageNum", N_("Raw Burst Image Num"), N_("Raw Burst Image Num"), canonRawBId, makerTags, + unsignedLong, -1, printValue}, + {0x0002, "RawBurstImageCount", N_("Raw Burst Image Count"), N_("Raw Burst Image Count"), canonRawBId, makerTags, + unsignedLong, -1, printValue}, + {0xffff, "(UnknownRawBurstTag)", "(UnknownRawBurstTag)", N_("UnknownRawBurstTag"), canonRawBId, makerTags, + signedLong, 1, printValue} // important to add end of tag +}; + +const TagInfo* CanonMakerNote::tagListRawB() { + return tagInfoRawB_; +} + +//! Macro, tag 0x0001 +constexpr TagDetails canonCsMacro[] = {{1, N_("On")}, {2, N_("Off")}}; + +//! Quality, tag 0x0003 +constexpr TagDetails canonCsQuality[] = { + {-1, N_("n/a")}, {0, N_("unkown")}, {1, N_("Economy")}, {2, N_("Normal")}, {3, N_("Fine")}, + {4, N_("RAW")}, {5, N_("Superfine")}, {7, N_("CRAW")}, {130, N_("Normal Movie")}, {131, N_("Movie (2)")}}; + +//! FlashMode, tag 0x0004 +constexpr TagDetails canonCsFlashMode[] = { + {0, N_("Off")}, {1, N_("Auto")}, {2, N_("On")}, + {3, N_("Red-eye")}, {4, N_("Slow sync")}, {5, N_("Auto + red-eye")}, + {6, N_("On + red-eye")}, {16, N_("External")}, {16, N_("External")} // To silence compiler warning +}; + +//! DriveMode, tag 0x0005 +constexpr TagDetails canonCsDriveMode[] = {{0, N_("Single / timer")}, + {1, N_("Continuous")}, + {2, N_("Movie")}, + {3, N_("Continuous, speed priority")}, + {3, N_("Continuous, tracking priority")}, + {4, N_("Continuous, low")}, + {5, N_("Continuous, high")}, + {6, N_("Silent Single")}, + {9, N_("Single, Silent")}, + {10, N_("Continuous, Silent")}}; + +//! FocusMode, tag 0x0007 +constexpr TagDetails canonCsFocusMode[] = { + {0, N_("One shot AF")}, {1, N_("AI servo AF")}, + {2, N_("AI focus AF")}, {3, N_("Manual focus (3)")}, + {4, N_("Single")}, {5, N_("Continuous")}, + {6, N_("Manual focus (6)")}, {16, N_("Pan focus")}, + {256, N_("AF + MF")}, {512, N_("Movie Snap Focus")}, + {519, N_("Movie Servo AF")}, {519, N_("Movie Servo AF")} // To silence compiler warning +}; + +//! RecordMode, tag 0x0009 +constexpr TagDetails canonCsRecordMode[] = { + {1, N_("JPEG")}, {2, N_("CRW+THM")}, {3, N_("AVI+THM")}, {4, N_("TIF")}, {5, N_("TIF+JPEG")}, + {6, N_("CR2")}, {7, N_("CR2+JPEG")}, {9, N_("MOV")}, {10, N_("MP4")}, {11, N_("CRM")}, + {12, N_("CR3")}, {13, N_("CR3+JPEG")}, {14, N_("HIF")}, {15, N_("CR3+HIF")}}; + +//! ImageSize, tag 0x000a +constexpr TagDetails canonCsImageSize[] = {{0, N_("Large")}, + {1, N_("Medium")}, + {2, N_("Small")}, + {5, N_("Medium 1")}, + {6, N_("Medium 2")}, + {7, N_("Medium 3")}, + {8, N_("Postcard")}, + {9, N_("Widescreen")}, + {10, N_("Medium Widescreen")}, + {14, N_("Small 1")}, + {15, N_("Small 2")}, + {16, N_("Small 3")}, + {128, N_("640x480 Movie")}, + {129, N_("Medium Movie")}, + {130, N_("Small Movie")}, + {137, N_("1280x720 Movie")}, + {142, N_("1920x1080 Movie")}, + {143, N_("4096x2160 Movie")}}; + +//! EasyMode, tag 0x000b +constexpr TagDetails canonCsEasyMode[] = {{0, N_("Full auto")}, + {1, N_("Manual")}, + {2, N_("Landscape")}, + {3, N_("Fast shutter")}, + {4, N_("Slow shutter")}, + {5, N_("Night")}, + {6, N_("Gray Scale")}, + {7, N_("Sepia")}, + {8, N_("Portrait")}, + {9, N_("Sports")}, + {10, N_("Macro")}, + {11, N_("Black & White")}, + {12, N_("Pan focus")}, + {13, N_("Vivid")}, + {14, N_("Neutral")}, + {15, N_("Flash Off")}, + {16, N_("Long Shutter")}, + {17, N_("Super Macro")}, + {18, N_("Foliage")}, + {19, N_("Indoor")}, + {20, N_("Fireworks")}, + {21, N_("Beach")}, + {22, N_("Underwater")}, + {23, N_("Snow")}, + {24, N_("Kids & Pets")}, + {25, N_("Night Snapshot")}, + {26, N_("Digital Macro")}, + {27, N_("My Colors")}, + {28, N_("Movie Snap")}, + {29, N_("Super Macro 2")}, + {30, N_("Color Accent")}, + {31, N_("Color Swap")}, + {32, N_("Aquarium")}, + {33, N_("ISO 3200")}, + {34, N_("ISO 6400")}, + {35, N_("Creative Light Effect")}, + {36, N_("Easy")}, + {37, N_("Quick Shot")}, + {38, N_("Creative Auto")}, + {39, N_("Zoom Blur")}, + {40, N_("Low Light")}, + {41, N_("Nostalgic")}, + {42, N_("Super Vivid")}, + {43, N_("Poster Effect")}, + {44, N_("Face Self-timer")}, + {45, N_("Smile")}, + {46, N_("Wink Self-timer")}, + {47, N_("Fisheye Effect")}, + {48, N_("Miniature Effect")}, + {49, N_("High-speed Burst")}, + {50, N_("Best Image Selection")}, + {51, N_("High Dynamic Range")}, + {52, N_("Handheld Night Scene")}, + {53, N_("Movie Digest")}, + {54, N_("Live View Control")}, + {55, N_("Discreet")}, + {56, N_("Blur Reduction")}, + {57, N_("Monochrome")}, + {58, N_("Toy Camera Effect")}, + {59, N_("Scene Intelligent Auto")}, + {60, N_("High-speed Burst HQ")}, + {61, N_("Smooth Skin")}, + {62, N_("Soft Focus")}, + {257, N_("Spotlight")}, + {258, N_("Night 2")}, + {259, N_("Night+")}, + {260, N_("Super Night")}, + {261, N_("Sunset")}, + {263, N_("Night Scene")}, + {264, N_("Surface")}, + {265, N_("Low Light 2")}}; + +//! DigitalZoom, tag 0x000c +constexpr TagDetails canonCsDigitalZoom[] = { + {0, N_("None")}, {1, "2x"}, {2, "4x"}, {3, N_("Other")}, {3, N_("Other")} // To silence compiler warning +}; + +//! Contrast, Saturation Sharpness, tags 0x000d, 0x000e, 0x000f +constexpr TagDetails canonCsLnh[] = {{0xffff, N_("Low")}, {0x0000, N_("Normal")}, {0x0001, N_("High")}}; + +//! ISOSpeeds, tag 0x0010 +constexpr TagDetails canonCsISOSpeed[] = { + {0, N_("n/a")}, {14, N_("Auto High")}, {15, N_("Auto")}, {16, "50"}, {17, "100"}, {18, "200"}, + {19, "400"}, {20, "800"}, {16464, "80"}, {16484, "100"}, {16509, "125"}, {16544, "160"}, + {16584, "200"}, {16634, "250"}, {16704, "320"}, {16784, "400"}, {16884, "500"}, {17024, "640"}, + {17184, "800"}, {17384, "1000"}, {17634, "1250"}, {17984, "1600"}, {18384, "2000"}, {18884, "2500"}, + {19584, "3200"}, {20384, "4000"}, {21384, "5000"}, {22784, "6400"}, {24384, "8000"}, {26384, "10000"}, + {29184, "12800"}, {29184, "16000"}, {29184, "20000"}, {29184, "25600"}, {29184, "32000"}, {29184, "40000"}, + {29184, "H1(51200)"}, {29184, "H2(102400)"}}; + +//! MeteringMode, tag 0x0011 +constexpr TagDetails canonCsMeteringMode[] = {{0, N_("Default")}, {1, N_("Spot")}, + {2, N_("Average")}, {3, N_("Evaluative")}, + {4, N_("Partial")}, {5, N_("Center-weighted average")}}; + +//! FocusType, tag 0x0012 +constexpr TagDetails canonCsFocusType[] = {{0, N_("Manual")}, {1, N_("Auto")}, {2, N_("Not known")}, + {3, N_("Macro")}, {4, N_("Very close")}, {5, N_("Close")}, + {6, N_("Middle range")}, {7, N_("Far range")}, {8, N_("Pan focus")}, + {9, N_("Super macro")}, {10, N_("Infinity")}}; + +//! AFPoint, tag 0x0013 +constexpr TagDetails canonCsAfPoint[] = {{0x2005, N_("Manual AF point selection")}, + {0x3000, N_("None (MF)")}, + {0x3001, N_("Auto-selected")}, + {0x3002, N_("Right")}, + {0x3003, N_("Center")}, + {0x3004, N_("Left")}, + {0x4001, N_("Auto AF point selection")}, + {0x4006, N_("Face Detect")}}; + +//! ExposureProgram, tag 0x0014 +constexpr TagDetails canonCsExposureProgram[] = {{0, N_("Easy shooting (Auto)")}, + {1, N_("Program (P)")}, + {2, N_("Shutter priority (Tv)")}, + {3, N_("Aperture priority (Av)")}, + {4, N_("Manual (M)")}, + {5, N_("A-DEP")}, + {6, N_("M-DEP")}, + {7, N_("Bulb")}}; + +//! LensType, tag 0x0016 +constexpr TagDetails canonCsLensType[] = {{1, "Canon EF 50mm f/1.8"}, + {2, "Canon EF 28mm f/2.8"}, + {2, "Sigma 24mm f/2.8 Super Wide II"}, // 1 + {3, "Canon EF 135mm f/2.8 Soft"}, + {4, "Canon EF 35-105mm f/3.5-4.5"}, + {4, "Sigma UC Zoom 35-135mm f/4-5.6"}, // 1 + {5, "Canon EF 35-70mm f/3.5-4.5"}, + {6, "Canon EF 28-70mm f/3.5-4.5"}, + {6, "Sigma 18-50mm f/3.5-5.6 DC"}, // 1 + {6, "Sigma 18-125mm f/3.5-5.6 DC IF ASP"}, // 2 + {6, "Tokina AF 193-2 19-35mm f/3.5-4.5"}, // 3 + {6, "Sigma 28-80mm f/3.5-5.6 II Macro"}, // 4 + {6, "Sigma 28-300mm f/3.5-6.3 DG Macro"}, // 5 + {7, "Canon EF 100-300mm f/5.6L"}, + {8, "Canon EF 100-300mm f/5.6"}, + {8, "Sigma 70-300mm f/4-5.6 [APO] DG Macro"}, // 1 + {8, "Tokina AT-X 242 AF 24-200mm f/3.5-5.6"}, // 2 + {9, "Canon EF 70-210mm f/4"}, + {9, "Sigma 55-200mm f/4-5.6 DC"}, // 1 + {10, "Canon EF 50mm f/2.5 Macro"}, + {10, "Sigma 50mm f/2.8 EX"}, // 1 + {10, "Sigma 28mm f/1.8"}, // 2 + {10, "Sigma 105mm f/2.8 Macro EX"}, // 3 + {10, "Sigma 70mm f/2.8 EX DG Macro EF"}, // 4 + {11, "Canon EF 35mm f/2"}, + {13, "Canon EF 15mm f/2.8 Fisheye"}, + {14, "Canon EF 50-200mm f/3.5-4.5L"}, + {15, "Canon EF 50-200mm f/3.5-4.5"}, + {16, "Canon EF 35-135mm f/3.5-4.5"}, + {17, "Canon EF 35-70mm f/3.5-4.5A"}, + {18, "Canon EF 28-70mm f/3.5-4.5"}, + {20, "Canon EF 100-200mm f/4.5A"}, + {21, "Canon EF 80-200mm f/2.8L"}, + {22, "Canon EF 20-35mm f/2.8L"}, + {22, "Tokina AT-X 280 AF Pro 28-80mm f/2.8 Aspherical"}, // 1 + {23, "Canon EF 35-105mm f/3.5-4.5"}, + {24, "Canon EF 35-80mm f/4-5.6 Power Zoom"}, + {25, "Canon EF 35-80mm f/4-5.6 Power Zoom"}, + {26, "Canon EF 100mm f/2.8 Macro"}, + {26, "Cosina 100mm f/3.5 Macro AF"}, // 1 + {26, "Tamron SP AF 90mm f/2.8 Di Macro"}, // 2 + {26, "Tamron SP AF 180mm f/3.5 Di Macro"}, // 3 + {26, "Carl Zeiss Planar T* 50mm f/1.4"}, // 4 + {26, "Voigtlander APO Lanthar 125mm f/2.5 SL Macro"}, // 5 + {26, "Carl Zeiss Planar T 85mm f/1.4 ZE"}, // 6 + {27, "Canon EF 35-80mm f/4-5.6"}, + {28, "Canon EF 80-200mm f/4.5-5.6"}, + {28, "Tamron SP AF 28-105mm f/2.8 LD Aspherical IF"}, // 1 + {28, "Tamron SP AF 28-75mm f/2.8 XR Di LD Aspherical [IF] Macro"}, // 2 + {28, "Tamron AF 70-300mm f/4-5.6 Di LD 1:2 Macro"}, // 3 + {28, "Tamron AF Aspherical 28-200mm f/3.8-5.6"}, // 4 + {29, "Canon EF 50mm f/1.8 II"}, + {30, "Canon EF 35-105mm f/4.5-5.6"}, + {31, "Canon EF 75-300mm f/4-5.6"}, + {31, "Tamron SP AF 300mm f/2.8 LD IF"}, // 1 + {32, "Canon EF 24mm f/2.8"}, + {32, "Sigma 15mm f/2.8 EX Fisheye"}, // 1 + {33, "Voigtlander Ultron 40mm f/2 SLII Aspherical"}, + {33, "Voigtlander Color Skopar 20mm f/3.5 SLII Aspherical"}, // 1 + {33, "Voigtlander APO-Lanthar 90mm f/3.5 SLII Close Focus"}, // 2 + {33, "Carl Zeiss Distagon T* 15mm f/2.8 ZE"}, // 3 + {33, "Carl Zeiss Distagon T* 18mm f/3.5 ZE"}, // 4 + {33, "Carl Zeiss Distagon T* 21mm f/2.8 ZE"}, // 5 + {33, "Carl Zeiss Distagon T* 25mm f/2 ZE"}, // 6 + {33, "Carl Zeiss Distagon T* 28mm f/2 ZE"}, // 7 + {33, "Carl Zeiss Distagon T* 35mm f/2 ZE"}, // 8 + {33, "Carl Zeiss Distagon T* 35mm f/1.4 ZE"}, // 9 + {33, "Carl Zeiss Planar T* 50mm f/1.4 ZE"}, // 10 + {33, "Carl Zeiss Makro-Planar T* 50mm f/2 ZE"}, // 11 + {33, "Carl Zeiss Makro-Planar T* 100mm f/2 ZE"}, // 12 + {33, "Carl Zeiss Apo-Sonnar T* 135mm f/2 ZE"}, // 13 + {35, "Canon EF 35-80mm f/4-5.6 II"}, + {36, "Canon EF 38-76mm f/4.5-5.6"}, + {37, "Canon EF 35-80mm f/4-5.6 III"}, + {37, "Tamron 70-200mm f/2.8 Di LD IF Macro"}, // 1 + {37, "Tamron AF 28-300mm f/3.5-6.3 XR Di VC LD Aspherical [IF] Macro"}, // 2 + {37, "Tamron SP AF 17-50mm f/2.8 XR Di II VC LD Aspherical [IF]"}, // 3 + {37, "Tamron AF 18-270mm f/3.5-6.3 Di II VC LD Aspherical [IF] Macro"}, // 4 + {38, "Canon EF 80-200mm f/4.5-5.6 II"}, + {39, "Canon EF 75-300mm f/4-5.6"}, + {40, "Canon EF 28-80mm f/3.5-5.6"}, + {41, "Canon EF 28-90mm f/4-5.6"}, + {42, "Canon EF 28-200mm f/3.5-5.6"}, + {42, "Tamron AF 28-300mm f/3.5-6.3 XR Di VC LD Aspherical [IF] Macro"}, // 1 + {43, "Canon EF 28-105mm f/4-5.6"}, + {44, "Canon EF 90-300mm f/4.5-5.6"}, + {45, "Canon EF-S 18-55mm f/3.5-5.6 [II]"}, + {46, "Canon EF 28-90mm f/4-5.6"}, + {47, "Zeiss Milvus 35mm f/2"}, + {47, "Zeiss Milvus 50mm f/2 Makro"}, // 1 + {47, "Zeiss Milvus 135mm f/2 ZE"}, // 2 + {48, "Canon EF-S 18-55mm f/3.5-5.6 IS"}, + {49, "Canon EF-S 55-250mm f/4-5.6 IS"}, + {50, "Canon EF-S 18-200mm f/3.5-5.6 IS"}, + {51, "Canon EF-S 18-135mm f/3.5-5.6 IS"}, + {52, "Canon EF-S 18-55mm f/3.5-5.6 IS II"}, + {53, "Canon EF-S 18-55mm f/3.5-5.6 III"}, + {54, "Canon EF-S 55-250mm f/4-5.6 IS II"}, + {60, "Irix 11mm f/4"}, + {80, "Canon TS-E 50mm f/2.8L Macro"}, + {81, "Canon TS-E 90mm f/2.8L Macro"}, + {82, "Canon TS-E 135mm f/4L Macro"}, + {94, "Canon TS-E 17mm f/4L"}, + {95, "Canon TS-E 24mm f/3.5L II"}, + {103, "Samyang AF 14mm f/2.8 EF"}, + {103, "Rokinon SP 14mm f/2.4"}, // 1 + {103, "Rokinon AF 14mm f/2.8 EF"}, // 2 + {106, "Rokinon SP / Samyang XP 35mm f/1.2"}, + {112, "Sigma 28mm f/1.5 FF High-speed Prime"}, + {112, "Sigma 40mm f/1.5 FF High-speed Prime"}, // 1 + {112, "Sigma 105mm f/1.5 FF High-speed Prime"}, // 2 + {117, "Tamron 35-150mm f/2.8-4.0 Di VC OSD"}, + {117, "Tamron SP 35mm f/1.4 Di USD"}, // 1 + {124, "Canon MP-E 65mm f/2.8 1-5x Macro Photo"}, + {125, "Canon TS-E 24mm f/3.5L"}, + {126, "Canon TS-E 45mm f/2.8"}, + {127, "Canon TS-E 90mm f/2.8"}, + {127, "Tamron 18-200mm f/3.5-6.3 Di II VC"}, // 1 + {129, "Canon EF 300mm f/2.8L USM"}, + {130, "Canon EF 50mm f/1.0L USM"}, + {131, "Canon EF 28-80mm f/2.8-4L USM"}, + {131, "Sigma 8mm f/3.5 EX DG Circular Fisheye"}, // 1 + {131, "Sigma 17-35mm f/2.8-4 EX DG Aspherical HSM"}, // 2 + {131, "Sigma 17-70mm f/2.8-4.5 DC Macro"}, // 3 + {131, "Sigma APO 50-150mm f/2.8 [II] EX DC HSM"}, // 4 + {131, "Sigma APO 120-300mm f/2.8 EX DG HSM"}, // 5 + {131, "Sigma 70-200mm f/2.8 APO EX HSM"}, // 6 + {131, "Sigma 28-70mm f/2.8-4 DG"}, // 7 + {132, "Canon EF 1200mm f/5.6L USM"}, + {134, "Canon EF 600mm f/4L IS USM"}, + {135, "Canon EF 200mm f/1.8L USM"}, + {136, "Canon EF 300mm f/2.8L USM"}, + {136, "Tamron SP 15-30mm f/2.8 Di VC USD"}, // 1 + {137, "Canon EF 85mm f/1.2L USM"}, + {137, "Sigma 18-50mm f/2.8-4.5 DC OS HSM"}, // 1 + {137, "Sigma 50-200mm f/4-5.6 DC OS HSM"}, // 2 + {137, "Sigma 18-250mm f/3.5-6.3 DC OS HSM"}, // 3 + {137, "Sigma 24-70mm f/2.8 IF EX DG HSM"}, // 4 + {137, "Sigma 18-125mm f/3.8-5.6 DC OS HSM"}, // 5 + {137, "Sigma 17-70mm f/2.8-4 DC Macro OS HSM | C"}, // 6 + {137, "Sigma 17-50mm f/2.8 OS HSM"}, // 7 + {137, "Sigma 18-200mm f/3.5-6.3 DC OS HSM [II]"}, // 8 + {137, "Tamron AF 18-270mm f/3.5-6.3 Di II VC PZD"}, // 9 + {137, "Sigma 8-16mm f/4.5-5.6 DC HSM"}, // 10 + {137, "Tamron SP 17-50mm f/2.8 XR Di II VC"}, // 11 + {137, "Tamron SP 60mm f/2 Macro Di II"}, // 12 + {137, "Sigma 10-20mm f/3.5 EX DC HSM"}, // 13 + {137, "Tamron SP 24-70mm f/2.8 Di VC USD"}, // 14 + {137, "Sigma 18-35mm f/1.8 DC HSM | A"}, // 15 + {137, "Sigma 12-24mm f/4.5-5.6 DG HSM II"}, // 16 + {137, "Sigma 70-300mm f/4-5.6 DG OS"}, // 17 + {138, "Canon EF 28-80mm f/2.8-4L"}, + {139, "Canon EF 400mm f/2.8L USM"}, + {140, "Canon EF 500mm f/4.5L USM"}, + {141, "Canon EF 500mm f/4.5L USM"}, + {142, "Canon EF 300mm f/2.8L IS USM"}, + {143, "Canon EF 500mm f/4L IS USM"}, + {143, "Sigma 17-70mm f/2.8-4 DC Macro OS HSM"}, // 1 + {143, "Sigma 24-105mm f/4 DG OS HSM | A"}, // 2 + {144, "Canon EF 35-135mm f/4-5.6 USM"}, + {145, "Canon EF 100-300mm f/4.5-5.6 USM"}, + {146, "Canon EF 70-210mm f/3.5-4.5 USM"}, + {147, "Canon EF 35-135mm f/4-5.6 USM"}, + {148, "Canon EF 28-80mm f/3.5-5.6 USM"}, + {149, "Canon EF 100mm f/2 USM"}, + {150, "Canon EF 14mm f/2.8L USM"}, + {150, "Sigma 20mm EX f/1.8"}, // 1 + {150, "Sigma 30mm f/1.4 DC HSM"}, // 2 + {150, "Sigma 24mm f/1.8 DG Macro EX"}, // 3 + {150, "Sigma 28mm f/1.8 DG Macro EX"}, // 4 + {150, "Sigma 18-35mm f/1.8 DC HSM | A"}, // 5 + {151, "Canon EF 200mm f/2.8L USM"}, + {152, "Canon EF 300mm f/4L IS USM"}, + {152, "Sigma 12-24mm f/4.5-5.6 EX DG ASPHERICAL HSM"}, // 1 + {152, "Sigma 14mm f/2.8 EX Aspherical HSM"}, // 2 + {152, "Sigma 10-20mm f/4-5.6"}, // 3 + {152, "Sigma 100-300mm f/4"}, // 4 + {152, "Sigma 300-800mm f/5.6 APO EX DG HSM"}, // 5 + {153, "Canon EF 35-350mm f/3.5-5.6L USM"}, + {153, "Sigma 50-500mm f/4-6.3 APO HSM EX"}, // 1 + {153, "Tamron AF 28-300mm f/3.5-6.3 XR LD Aspherical [IF] Macro"}, // 2 + {153, "Tamron AF 18-200mm f/3.5-6.3 XR Di II LD Aspherical [IF] Macro"}, // 3 + {153, "Tamron 18-250mm f/3.5-6.3 Di II LD Aspherical [IF] Macro"}, // 4 + {154, "Canon EF 20mm f/2.8 USM"}, + {154, "Zeiss Milvus 21mm f/2.8"}, // 1 + {154, "Zeiss Milvus 15mm f/2.8 ZE"}, // 2 + {154, "Zeiss Milvus 18mm f/2.8 ZE"}, // 3 + {155, "Canon EF 85mm f/1.8 USM"}, + {155, "Sigma 14mm f/1.8 DG HSM | A"}, // 1 + {156, "Canon EF 28-105mm f/3.5-4.5 USM"}, + {156, "Tamron SP 70-300mm f/4-5.6 Di VC USD"}, // 1 + {156, "Tamron SP AF 28-105mm f/2.8 LD Aspherical IF"}, // 2 + {160, "Canon EF 20-35mm f/3.5-4.5 USM"}, + {160, "Tamron AF 19-35mm f/3.5-4.5"}, // 1 + {160, "Tokina AT-X 124 AF Pro DX 12-24mm f/4"}, // 2 + {160, "Tokina AT-X 107 AF DX 10-17mm f/3.5-4.5 Fisheye"}, // 3 + {160, "Tokina AT-X 116 AF Pro DX 11-16mm f/2.8"}, // 4 + {160, "Tokina AT-X 11-20 f/2.8 PRO DX Aspherical 11-20mm f/2.8"}, // 5 + {161, "Canon EF 28-70mm f/2.8L USM"}, + {161, "Sigma 24-70mm f/2.8 EX"}, // 1 + {161, "Sigma 28-70mm f/2.8 EX"}, // 2 + {161, "Sigma 24-60mm f/2.8 EX DG"}, // 3 + {161, "Tamron AF 17-50mm f/2.8 Di-II LD Aspherical"}, // 4 + {161, "Tamron 90mm f/2.8"}, // 5 + {161, "Tamron SP AF 17-35mm f/2.8-4 Di LD Aspherical IF"}, // 6 + {161, "Tamron SP AF 28-75mm f/2.8 XR Di LD Aspherical [IF] Macro"}, // 7 + {161, "Tokina AT-X 24-70mm f/2.8 PRO FX (IF)"}, // 8 + {162, "Canon EF 200mm f/2.8L USM"}, + {163, "Canon EF 300mm f/4L"}, + {164, "Canon EF 400mm f/5.6L"}, + {165, "Canon EF 70-200mm f/2.8L USM"}, + {166, "Canon EF 70-200mm f/2.8L USM + 1.4x"}, + {167, "Canon EF 70-200mm f/2.8L USM + 2x"}, + {168, "Canon EF 28mm f/1.8 USM"}, + {168, "Sigma 50-100mm f/1.8 DC HSM | A"}, // 1 + {169, "Canon EF 17-35mm f/2.8L USM"}, + {169, "Sigma 18-200mm f/3.5-6.3 DC OS"}, // 1 + {169, "Sigma 15-30mm f/3.5-4.5 EX DG Aspherical"}, // 2 + {169, "Sigma 18-50mm f/2.8 Macro"}, // 3 + {169, "Sigma 50mm f/1.4 EX DG HSM"}, // 4 + {169, "Sigma 85mm f/1.4 EX DG HSM"}, // 5 + {169, "Sigma 30mm f/1.4 EX DC HSM"}, // 6 + {169, "Sigma 35mm f/1.4 DG HSM"}, // 7 + {169, "Sigma 35mm f/1.5 FF High-Speed Prime | 017"}, // 8 + {169, "Sigma 70mm f/2.8 Macro EX DG"}, // 9 + {170, "Canon EF 200mm f/2.8L II USM"}, + {170, "Sigma 300mm f/2.8 APO EX DG HSM"}, // 1 + {170, "Sigma 800mm f/5.6 APO EX DG HSM"}, // 2 + {171, "Canon EF 300mm f/4L USM"}, + {172, "Canon EF 400mm f/5.6L USM"}, + {172, "Sigma 150-600mm f/5-6.3 DG OS HSM | S"}, // 1 + {172, "Sigma 500mm f/4.5 APO EX DG HSM"}, // 2 + {173, "Canon EF 180mm Macro f/3.5L USM"}, + {173, "Sigma 180mm EX HSM Macro f/3.5"}, // 1 + {173, "Sigma APO Macro 150mm f/2.8 EX DG HSM"}, // 2 + {173, "Sigma 10mm f/2.8 EX DC Fisheye"}, // 3 + {173, "Sigma 15mm f/2.8 EX DG Diagonal Fisheye"}, // 4 + {173, "Venus Laowa 100mm f/2.8 2X Ultra Macro APO"}, // 5 + {173, "Sigma 150-500mm f/5-6.3 APO DG OS HSM + 2x"}, // 6 + {174, "Canon EF 135mm f/2L USM"}, + {174, "Sigma 70-200mm f/2.8 EX DG APO OS HSM"}, // 1 + {174, "Sigma 50-500mm f/4.5-6.3 APO DG OS HSM"}, // 2 + {174, "Sigma 150-500mm f/5-6.3 APO DG OS HSM"}, // 3 + {174, "Zeiss Milvus 100mm f/2 Makro"}, // 4 + {174, "Sigma APO 50-150mm f/2.8 EX DC OS HSM"}, // 5 + {174, "Sigma APO 120-300mm f/2.8 EX DG OS HSM"}, // 6 + {174, "Sigma 120-300mm f/2.8 DG OS HSM S013"}, // 7 + {174, "Sigma 120-400mm f/4.5-5.6 APO DG OS HSM"}, // 8 + {174, "Sigma 200-500mm f/2.8 APO EX DG"}, // 9 + {175, "Canon EF 400mm f/2.8L USM"}, + {176, "Canon EF 24-85mm f/3.5-4.5 USM"}, + {177, "Canon EF 300mm f/4L IS USM"}, + {178, "Canon EF 28-135mm f/3.5-5.6 IS"}, + {179, "Canon EF 24mm f/1.4L USM"}, + {180, "Canon EF 35mm f/1.4L USM"}, + {180, "Sigma 50mm f/1.4 DG HSM | A"}, // 1 + {180, "Sigma 24mm f/1.4 DG HSM | A"}, // 2 + {180, "Zeiss Milvus 50mm f/1.4"}, // 3 + {180, "Zeiss Milvus 85mm f/1.4"}, // 4 + {180, "Zeiss Otus 28mm f/1.4 ZE"}, // 5 + {180, "Sigma 24mm f/1.5 FF High-Speed Prime | 017"}, // 6 + {180, "Sigma 50mm f/1.5 FF High-Speed Prime | 017"}, // 7 + {180, "Sigma 85mm f/1.5 FF High-Speed Prime | 017"}, // 8 + {180, "Tokina Opera 50mm f/1.4 FF"}, // 9 + {180, "Sigma 20mm f/1.4 DG HSM | A"}, // 10 + {181, "Canon EF 100-400mm f/4.5-5.6L IS USM + 1.4x"}, + {181, "Sigma 150-600mm f/5-6.3 DG OS HSM | S + 1.4x"}, // 1 + {182, "Canon EF 100-400mm f/4.5-5.6L IS USM + 2x"}, + {182, "Sigma 150-600mm f/5-6.3 DG OS HSM | S + 2x"}, // 1 + {183, "Canon EF 100-400mm f/4.5-5.6L IS USM"}, + {183, "Sigma 150mm f/2.8 EX DG OS HSM APO Macro"}, // 1 + {183, "Sigma 105mm f/2.8 EX DG OS HSM Macro"}, // 2 + {183, "Sigma 180mm f/2.8 EX DG OS HSM APO Macro"}, // 3 + {183, "Sigma 150-600mm f/5-6.3 DG OS HSM | C"}, // 4 + {183, "Sigma 150-600mm f/5-6.3 DG OS HSM | S"}, // 5 + {183, "Sigma 100-400mm f/5-6.3 DG OS HSM"}, // 6 + {183, "Sigma 180mm f/3.5 APO Macro EX DG IF HSM"}, // 7 + {184, "Canon EF 400mm f/2.8L USM + 2x"}, + {185, "Canon EF 600mm f/4L IS USM"}, + {186, "Canon EF 70-200mm f/4L USM"}, + {187, "Canon EF 70-200mm f/4L USM + 1.4x"}, + {188, "Canon EF 70-200mm f/4L USM + 2x"}, + {189, "Canon EF 70-200mm f/4L USM + 2.8x"}, + {190, "Canon EF 100mm f/2.8 Macro USM"}, + {191, "Canon EF 400mm f/4 DO IS"}, + {191, "Sigma 500mm f/4 DG OS HSM"}, // 1 + {193, "Canon EF 35-80mm f/4-5.6 USM"}, + {194, "Canon EF 80-200mm f/4.5-5.6 USM"}, + {195, "Canon EF 35-105mm f/4.5-5.6 USM"}, + {196, "Canon EF 75-300mm f/4-5.6 USM"}, + {197, "Canon EF 75-300mm f/4-5.6 IS USM"}, + {197, "Sigma 18-300mm f/3.5-6.3 DC Macro OS HSM"}, // 1 + {198, "Canon EF 50mm f/1.4 USM"}, + {198, "Zeiss Otus 55mm f/1.4 ZE"}, // 1 + {198, "Zeiss Otus 85mm f/1.4 ZE"}, // 2 + {198, "Zeiss Milvus 25mm f/1.4"}, // 3 + {198, "Zeiss Otus 100mm f/1.4"}, // 4 + {198, "Zeiss Milvus 35mm f/1.4 ZE"}, // 5 + {198, "Yongnuo YN 35mm f/2"}, // 6 + {199, "Canon EF 28-80mm f/3.5-5.6 USM"}, + {200, "Canon EF 75-300mm f/4-5.6 USM"}, + {201, "Canon EF 28-80mm f/3.5-5.6 USM"}, + {202, "Canon EF 28-80mm f/3.5-5.6 USM IV"}, + {208, "Canon EF 22-55mm f/4-5.6 USM"}, + {209, "Canon EF 55-200mm f/4.5-5.6"}, + {210, "Canon EF 28-90mm f/4-5.6 USM"}, + {211, "Canon EF 28-200mm f/3.5-5.6 USM"}, + {212, "Canon EF 28-105mm f/4-5.6 USM"}, + {213, "Canon EF 90-300mm f/4.5-5.6 USM"}, + {213, "Tamron SP 150-600mm f/5-6.3 Di VC USD"}, // 1 + {213, "Tamron 16-300mm f/3.5-6.3 Di II VC PZD Macro"}, // 2 + {213, "Tamron SP 35mm f/1.8 Di VC USD"}, // 3 + {213, "Tamron SP 45mm f/1.8 Di VC USD"}, // 4 + {214, "Canon EF-S 18-55mm f/3.5-5.6 USM"}, + {215, "Canon EF 55-200mm f/4.5-5.6 II USM"}, + {217, "Tamron AF 18-270mm f/3.5-6.3 Di II VC PZD"}, + {220, "Yongnuo YN 50mm f/1.8"}, + {224, "Canon EF 70-200mm f/2.8L IS USM"}, + {225, "Canon EF 70-200mm f/2.8L IS USM + 1.4x"}, + {226, "Canon EF 70-200mm f/2.8L IS USM + 2x"}, + {227, "Canon EF 70-200mm f/2.8L IS USM + 2.8x"}, + {228, "Canon EF 28-105mm f/3.5-4.5 USM"}, + {229, "Canon EF 16-35mm f/2.8L USM"}, + {230, "Canon EF 24-70mm f/2.8L USM"}, + {231, "Canon EF 17-40mm f/4L USM"}, + {231, "Sigma 12-24mm f/4 DG HSM A016"}, // 1 + {232, "Canon EF 70-300mm f/4.5-5.6 DO IS USM"}, + {233, "Canon EF 28-300mm f/3.5-5.6L IS USM"}, + {234, "Canon EF-S 17-85mm f/4-5.6 IS USM"}, + {234, "Tokina AT-X 12-28 PRO DX 12-28mm f/4"}, // 1 + {235, "Canon EF-S 10-22mm f/3.5-4.5 USM"}, + {236, "Canon EF-S 60mm f/2.8 Macro USM"}, + {237, "Canon EF 24-105mm f/4L IS USM"}, + {238, "Canon EF 70-300mm f/4-5.6 IS USM"}, + {239, "Canon EF 85mm f/1.2L II USM"}, + {239, "Rokinon SP 85mm f/1.2"}, // 1 + {240, "Canon EF-S 17-55mm f/2.8 IS USM"}, + {240, "Sigma 17-50mm f/2.8 EX DC OS HSM"}, // 1 + {241, "Canon EF 50mm f/1.2L USM"}, + {242, "Canon EF 70-200mm f/4L IS USM"}, + {243, "Canon EF 70-200mm f/4L IS USM + 1.4x"}, + {244, "Canon EF 70-200mm f/4L IS USM + 2x"}, + {245, "Canon EF 70-200mm f/4L IS USM + 2.8x"}, + {246, "Canon EF 16-35mm f/2.8L II USM"}, + {247, "Canon EF 14mm f/2.8L II USM"}, + {248, "Canon EF 200mm f/2L IS USM"}, + {248, "Sigma 24-35mm f/2 DG HSM | A"}, // 1 + {248, "Sigma 135mm f/2 FF High-Speed Prime | 017"}, // 2 + {248, "Sigma 24-35mm f/2.2 FF Zoom | 017"}, // 3 + {248, "Sigma 135mm f/1.8 DG HSM A017"}, // 4 + {249, "Canon EF 800mm f/5.6L IS USM"}, + {250, "Canon EF 24mm f/1.4L II USM"}, + {250, "Sigma 20mm f/1.4 DG HSM | A"}, // 1 + {250, "Sigma 20mm f/1.5 FF High-Speed Prime | 017"}, // 2 + {250, "Tokina Opera 16-28mm f/2.8 FF"}, // 3 + {250, "Sigma 85mm f/1.4 DG HSM A016"}, // 4 + {251, "Canon EF 70-200mm f/2.8L IS II USM"}, + {251, "Canon EF 70-200mm f/2.8L IS III USM"}, // 1 + {252, "Canon EF 70-200mm f/2.8L IS II USM + 1.4x"}, + {252, "Canon EF 70-200mm f/2.8L IS III USM + 1.4x"}, // 1 + {253, "Canon EF 70-200mm f/2.8L IS II USM + 2x"}, + {253, "Canon EF 70-200mm f/2.8L IS III USM + 2x"}, // 1 + {254, "Canon EF 100mm f/2.8L Macro IS USM"}, // 1 + {254, "Tamron SP 90mm f/2.8 Di VC USD Macro 1:1"}, // 2 + {255, "Sigma 24-105mm f/4 DG OS HSM | A"}, + {255, "Sigma 180mm f/2.8 EX DG OS HSM APO Macro"}, // 1 + {368, "Sigma 14-24mm f/2.8 DG HSM | A"}, + {368, "Sigma 20mm f/1.4 DG HSM | A"}, // 1 + {368, "Sigma 50mm f/1.4 DG HSM | A"}, // 2 + {368, "Sigma 40mm f/1.4 DG HSM | A"}, // 3 + {368, "Sigma 60-600mm f/4.5-6.3 DG OS HSM | S"}, // 4 + {368, "Sigma 28mm f/1.4 DG HSM | A"}, // 5 + {368, "Sigma 150-600mm f/5-6.3 DG OS HSM | S"}, // 6 + {368, "Sigma 85mm f/1.4 DG HSM | A"}, // 7 + {368, "Sigma 105mm f/1.4 DG HSM"}, // 8 + {368, "Sigma 70mm f/2.8 DG Macro"}, // 9 + {368, "Sigma 18-35mm f/1.8 DC HSM | A"}, // 10 + {368, "Sigma 35mm f/1.4 DG HSM | A"}, // 11 + {488, "Canon EF-S 15-85mm f/3.5-5.6 IS USM"}, + {489, "Canon EF 70-300mm f/4-5.6L IS USM"}, + {490, "Canon EF 8-15mm f/4L Fisheye USM"}, + {491, "Canon EF 300mm f/2.8L IS II USM"}, + {491, "Tamron SP 70-200mm f/2.8 Di VC USD G2"}, // 1 + {491, "Tamron 18-400mm f/3.5-6.3 Di II VC HLD"}, // 2 + {491, "Tamron 100-400mm f/4.5-6.3 Di VC USD"}, // 3 + {491, "Tamron 70-210mm f/4 Di VC USD"}, // 4 + {491, "Tamron 70-210mm f/4 Di VC USD + 1.4x"}, // 5 + {491, "Tamron SP 24-70mm f/2.8 Di VC USD G2"}, // 6 + {492, "Canon EF 400mm f/2.8L IS II USM"}, + {493, "Canon EF 500mm f/4L IS II USM"}, + {493, "Canon EF 24-105mm f/4L IS USM"}, // 1 + {494, "Canon EF 600mm f/4L IS II USM"}, + {495, "Canon EF 24-70mm f/2.8L II USM"}, + {495, "Sigma 24-70mm f/2.8 DG OS HSM | A"}, // 1 + {496, "Canon EF 200-400mm f/4L IS USM"}, + {499, "Canon EF 200-400mm f/4L IS USM + 1.4x"}, + {502, "Canon EF 28mm f/2.8 IS USM"}, + {502, "Tamron 35mm f/1.8 Di VC USD"}, // 1 + {503, "Canon EF 24mm f/2.8 IS USM"}, + {504, "Canon EF 24-70mm f/4L IS USM"}, + {505, "Canon EF 35mm f/2 IS USM"}, + {506, "Canon EF 400mm f/4 DO IS II USM"}, + {507, "Canon EF 16-35mm f/4L IS USM"}, + {508, "Canon EF 11-24mm f/4L USM"}, + {508, "Tamron 10-24mm f/3.5-4.5 Di II VC HLD"}, // 1 + {624, "Sigma 70-200mm f/2.8 DG OS HSM | S"}, + {747, "Canon EF 100-400mm f/4.5-5.6L IS II USM"}, + {747, "Tamron SP 150-600mm f/5-6.3 Di VC USD G2"}, // 1 + {748, "Canon EF 100-400mm f/4.5-5.6L IS II USM + 1.4x"}, + {748, "Tamron 100-400mm f/4.5-6.3 Di VC USD + 1.4x"}, // 1 + {748, "Tamron 70-210mm f/4 Di VC USD + 2x"}, // 2 + {749, "Tamron 100-400mm f/4.5-6.3 Di VC USD + 2x"}, + {749, "Canon EF 100-400mm f/4.5-5.6L IS II USM + 2x"}, // 1 + {750, "Canon EF 35mm f/1.4L II USM"}, + {750, "Tamron SP 85mm f/1.8 Di VC USD"}, // 1 + {750, "Tamron SP 45mm f/1.8 Di VC USD"}, // 2 + {751, "Canon EF 16-35mm f/2.8L III USM"}, + {752, "Canon EF 24-105mm f/4L IS II USM"}, + {753, "Canon EF 85mm f/1.4L IS USM"}, + {754, "Canon EF 70-200mm f/4L IS II USM"}, + {757, "Canon EF 400mm f/2.8L IS III USM"}, + {758, "Canon EF 600mm f/4L IS III USM"}, + {1136, "Sigma 24-70mm f/2.8 DG OS HSM | Art 017"}, + {4142, "Canon EF-S 18-135mm f/3.5-5.6 IS STM"}, + {4143, "Canon EF-M 18-55mm f/3.5-5.6 IS STM"}, + {4143, "Tamron 18-200mm f/3.5-6.3 Di III VC"}, // 1 + {4144, "Canon EF 40mm f/2.8 STM"}, + {4145, "Canon EF-M 22mm f/2 STM"}, + {4146, "Canon EF-S 18-55mm f/3.5-5.6 IS STM"}, + {4147, "Canon EF-M 11-22mm f/4-5.6 IS STM"}, + {4148, "Canon EF-S 55-250mm f/4-5.6 IS STM"}, + {4149, "Canon EF-M 55-200mm f/4.5-6.3 IS STM"}, + {4150, "Canon EF-S 10-18mm f/4.5-5.6 IS STM"}, + {4152, "Canon EF 24-105mm f/3.5-5.6 IS STM"}, + {4153, "Canon EF-M 15-45mm f/3.5-6.3 IS STM"}, + {4154, "Canon EF-S 24mm f/2.8 STM"}, + {4155, "Canon EF-M 28mm f/3.5 Macro IS STM"}, + {4156, "Canon EF 50mm f/1.8 STM"}, + {4157, "Canon EF-M 18-150mm f/3.5-6.3 IS STM"}, + {4158, "Canon EF-S 18-55mm f/4-5.6 IS STM"}, + {4159, "Canon EF-M 32mm f/1.4 STM"}, + {4160, "Canon EF-S 35mm f/2.8 Macro IS STM"}, + {4208, "Sigma 56mm f/1.4 DC DN | C"}, + {4208, "Sigma 30mm f/1.4 DC DN | C"}, + {36910, "Canon EF 70-300mm f/4-5.6 IS II USM"}, + {36912, "Canon EF-S 18-135mm f/3.5-5.6 IS USM"}, + {61491, "Canon CN-E 14mm T3.1 L F"}, + {61492, "Canon CN-E 24mm T1.5 L F"}, + {61494, "Canon CN-E 85mm T1.3 L F"}, + {61495, "Canon CN-E 135mm T2.2 L F"}, + {61496, "Canon CN-E 35mm T1.5 L F"}, + {61182, "Canon RF 35mm F1.8 MACRO IS STM"}, + {61182, "Canon RF 50mm F1.2L USM"}, // 1 + {61182, "Canon RF 24-105mm F4L IS USM"}, // 2 + {61182, "Canon RF 28-70mm F2L USM"}, // 3 + {61182, "Canon RF 85mm F1.2L USM"}, // 4 + {61182, "Canon RF 24-240mm F4-6.3 IS USM"}, // 5 + {61182, "Canon RF 24-70mm F2.8L IS USM"}, // 6 + {61182, "Canon RF 15-35mm F2.8L IS USM"}, // 7 + {61182, "Canon RF 50mm F1.8 STM"}, // 8 + {61182, "Canon RF 70-200mm F4L IS USM"}, // 9 + {61182, "Canon RF 28-70mm F2L USM"}, // 10 + {61182, "Canon RF 85mm F2 MACRO IS STM"}, // 11 + {61182, "Canon RF 100-500mm F4.5-7.1L IS USM + RF1.4x"}, // 12 + {61182, "Canon RF 35mm F1.8 MACRO IS STM"}, // 13 + {61182, "Canon RF 85mm F1.2L USM DS"}, // 14 + {61182, "Canon RF 24-70mm F2.8L IS USM"}, // 15 + {61182, "Canon RF 15-35mm F2.8L IS USM"}, // 16 + {61182, "Canon RF 24-240mm F4-6.3 IS USM"}, // 17 + {61182, "Canon RF 70-200mm F2.8L IS USM"}, // 18 + {61182, "Canon RF 600mm F11 IS STM"}, // 19 + {61182, "Canon RF 600mm F11 IS STM + RF1.4x"}, // 20 + {61182, "Canon RF 600mm F11 IS STM + RF2x"}, // 21 + {61182, "Canon RF 800mm F11 IS STM"}, // 22 + {61182, "Canon RF 800mm F11 IS STM + RF1.4x"}, // 23 + {61182, "Canon RF 800mm F11 IS STM + RF2x"}, // 24 + {61182, "Canon RF 24-105mm F4-7.1 IS STM"}, // 25 + {61182, "Canon RF 100-500mm F4.5-7.1L IS USM"}, // 26 + {61182, "Canon RF 100-500mm F4.5-7.1L IS USM + RF2x"}, // 27 + {65535, "n/a"}}; + +//! FlashActivity, tag 0x001c +constexpr TagDetails canonCsFlashActivity[] = {{0, N_("Did not fire")}, {1, N_("Fired")}}; + +//! FlashDetails, tag 0x001d +constexpr TagDetailsBitmask canonCsFlashDetails[] = { + {0x4000, N_("External flash")}, {0x2000, N_("Internal flash")}, + {0x0001, N_("Manual")}, {0x0002, N_("TTL")}, + {0x0004, N_("A-TTL")}, {0x0008, N_("E-TTL")}, + {0x0010, N_("FP sync enabled")}, {0x0080, N_("2nd-curtain sync used")}, + {0x0800, N_("FP sync used")}}; + +//! FocusContinuous, tag 0x0020 +constexpr TagDetails canonCsFocusContinuous[] = {{0, N_("Single")}, {1, N_("Continuous")}, {8, N_("Manual")}}; + +//! AESetting, tag 0x0021 +constexpr TagDetails canonCsAESetting[] = {{0, N_("Normal AE")}, {1, N_("Exposure compensation")}, + {2, N_("AE lock")}, {3, N_("AE lock + exposure compensation")}, + {4, N_("No AE")}, {65535, N_("n/a")}}; + +//! ImageStabilization, tag 0x0022 +constexpr TagDetails canonCsImageStabilization[] = { + {0, N_("Off")}, {1, N_("On")}, {2, N_("Shoot Only")}, {3, N_("Panning")}, + {4, N_("Dynamic")}, {256, N_("Off (2)")}, {257, N_("On (2)")}, {258, N_("Shoot Only (2)")}, + {259, N_("Panning (2)")}, {260, N_("Dynamic (2)")}}; + +//! SpotMeteringMode, tag 0x0027 +constexpr TagDetails canonCsSpotMeteringMode[] = {{0, N_("Center")}, {1, N_("AF Point")}, {65535, N_("n/a")}}; + +//! PhotoEffect, tag 0x0028 +constexpr TagDetails canonCsPhotoEffect[] = {{0, N_("Off")}, {1, N_("Vivid")}, {2, N_("Neutral")}, + {3, N_("Smooth")}, {4, N_("Sepia")}, {5, N_("B&W")}, + {6, N_("Custom")}, {100, N_("My color data")}, {65535, N_("n/a")}}; + +//! ManualFlashOutput, tag 0x0029 +[[maybe_unused]] constexpr TagDetails canonCsManualFlashOutput[] = { + {0x0000, N_("n/a")}, {0x0500, N_("Full")}, {0x0502, N_("Medium")}, {0x0504, N_("Low")}, {0x7fff, N_("n/a")}}; + +//! SRAWQuality, tag 0x002e +constexpr TagDetails canonCsSRAWQuality[] = {{0, N_("n/a")}, {1, N_("sRAW1 (mRAW)")}, {2, N_("sRAW2 (sRAW)")}}; + +// Canon Camera Settings Tag Info +constexpr TagInfo CanonMakerNote::tagInfoCs_[] = { + {0x0001, "Macro", N_("Macro"), N_("Macro mode"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsMacro)}, + {0x0002, "Selftimer", N_("Selftimer"), N_("Self timer"), canonCsId, makerTags, signedShort, 1, printCs0x0002}, + {0x0003, "Quality", N_("Quality"), N_("Quality"), canonCsId, makerTags, signedShort, 1, + EXV_PRINT_TAG(canonCsQuality)}, + {0x0004, "FlashMode", N_("Flash Mode"), N_("Flash mode setting"), canonCsId, makerTags, signedShort, 1, + EXV_PRINT_TAG(canonCsFlashMode)}, + {0x0005, "DriveMode", N_("Drive Mode"), N_("Drive mode setting"), canonCsId, makerTags, signedShort, 1, + EXV_PRINT_TAG(canonCsDriveMode)}, + {0x0006, "0x0006", "0x0006", N_("Unknown"), canonCsId, makerTags, unsignedShort, 1, printValue}, + {0x0007, "FocusMode", N_("Focus Mode"), N_("Focus mode setting"), canonCsId, makerTags, signedShort, 1, + EXV_PRINT_TAG(canonCsFocusMode)}, + {0x0008, "0x0008", "0x0008", N_("Unknown"), canonCsId, makerTags, signedShort, 1, printValue}, + {0x0009, "RecordMode", "RecordMode", N_("Record Mode"), canonCsId, makerTags, signedShort, 1, + EXV_PRINT_TAG(canonCsRecordMode)}, + {0x000a, "ImageSize", N_("Image Size"), N_("Image size"), canonCsId, makerTags, signedShort, 1, + EXV_PRINT_TAG(canonCsImageSize)}, + {0x000b, "EasyMode", N_("Easy Mode"), N_("Easy shooting mode"), canonCsId, makerTags, signedShort, 1, + EXV_PRINT_TAG(canonCsEasyMode)}, + {0x000c, "DigitalZoom", N_("Digital Zoom"), N_("Digital zoom"), canonCsId, makerTags, signedShort, 1, + EXV_PRINT_TAG(canonCsDigitalZoom)}, + {0x000d, "Contrast", N_("Contrast"), N_("Contrast setting"), canonCsId, makerTags, signedShort, 1, + EXV_PRINT_TAG(canonCsLnh)}, + {0x000e, "Saturation", N_("Saturation"), N_("Saturation setting"), canonCsId, makerTags, signedShort, 1, + EXV_PRINT_TAG(canonCsLnh)}, + {0x000f, "Sharpness", N_("Sharpness"), N_("Sharpness setting"), canonCsId, makerTags, signedShort, 1, + EXV_PRINT_TAG(canonCsLnh)}, + {0x0010, "ISOSpeed", N_("ISO Speed Mode"), N_("ISO speed setting"), canonCsId, makerTags, signedShort, 1, + EXV_PRINT_TAG(canonCsISOSpeed)}, + {0x0011, "MeteringMode", N_("Metering Mode"), N_("Metering mode setting"), canonCsId, makerTags, signedShort, 1, + EXV_PRINT_TAG(canonCsMeteringMode)}, + {0x0012, "FocusType", N_("Focus Type"), N_("Focus type setting"), canonCsId, makerTags, signedShort, 1, + EXV_PRINT_TAG(canonCsFocusType)}, + {0x0013, "AFPoint", N_("AF Point"), N_("AF point selected"), canonCsId, makerTags, signedShort, 1, + EXV_PRINT_TAG(canonCsAfPoint)}, + {0x0014, "ExposureProgram", N_("Exposure Program"), N_("Exposure mode setting"), canonCsId, makerTags, signedShort, + 1, EXV_PRINT_TAG(canonCsExposureProgram)}, + {0x0015, "0x0015", "0x0015", N_("Unknown"), canonCsId, makerTags, signedShort, 1, printValue}, + {0x0016, "LensType", N_("Lens Type"), N_("Lens type"), canonCsId, makerTags, signedShort, 1, printCsLensType}, + {0x0017, "Lens", N_("Lens"), + N_("'long' and 'short' focal length of lens (in 'focal units') and 'focal units' per mm"), canonCsId, makerTags, + unsignedShort, 3, printCsLens}, + {0x0018, "ShortFocal", N_("Short Focal"), N_("Short focal"), canonCsId, makerTags, unsignedShort, 1, printValue}, + {0x0019, "FocalUnits", N_("Focal Units"), N_("Focal units"), canonCsId, makerTags, signedShort, 1, printValue}, + {0x001a, "MaxAperture", N_("Max Aperture"), N_("Max aperture"), canonCsId, makerTags, signedShort, 1, + printSi0x0015}, + {0x001b, "MinAperture", N_("Min Aperture"), N_("Min aperture"), canonCsId, makerTags, signedShort, 1, + printSi0x0015}, + {0x001c, "FlashActivity", N_("Flash Activity"), N_("Flash activity"), canonCsId, makerTags, signedShort, 1, + EXV_PRINT_TAG(canonCsFlashActivity)}, + {0x001d, "FlashDetails", N_("Flash Details"), N_("Flash details"), canonCsId, makerTags, signedShort, 1, + EXV_PRINT_TAG_BITMASK(canonCsFlashDetails)}, + {0x001e, "0x001e", "0x001e", N_("Unknown"), canonCsId, makerTags, signedShort, 1, printValue}, + {0x001f, "0x001f", "0x001f", N_("Unknown"), canonCsId, makerTags, signedShort, 1, printValue}, + {0x0020, "FocusContinuous", N_("Focus Continuous"), N_("Focus continuous setting"), canonCsId, makerTags, + signedShort, 1, EXV_PRINT_TAG(canonCsFocusContinuous)}, + {0x0021, "AESetting", N_("AESetting"), N_("AE setting"), canonCsId, makerTags, signedShort, 1, + EXV_PRINT_TAG(canonCsAESetting)}, + {0x0022, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), canonCsId, makerTags, + signedShort, 1, EXV_PRINT_TAG(canonCsImageStabilization)}, + {0x0023, "DisplayAperture", N_("Display Aperture"), N_("Display aperture"), canonCsId, makerTags, signedShort, 1, + printValue}, + {0x0024, "ZoomSourceWidth", N_("Zoom Source Width"), N_("Zoom source width"), canonCsId, makerTags, signedShort, 1, + printValue}, + {0x0025, "ZoomTargetWidth", N_("Zoom Target Width"), N_("Zoom target width"), canonCsId, makerTags, signedShort, 1, + printValue}, + {0x0026, "0x0026", "0x0026", N_("Unknown"), canonCsId, makerTags, signedShort, 1, printValue}, + {0x0027, "SpotMeteringMode", N_("Spot Metering Mode"), N_("Spot metering mode"), canonCsId, makerTags, signedShort, + 1, EXV_PRINT_TAG(canonCsSpotMeteringMode)}, + {0x0028, "PhotoEffect", N_("Photo Effect"), N_("Photo effect"), canonCsId, makerTags, signedShort, 1, + EXV_PRINT_TAG(canonCsPhotoEffect)}, + {0x0029, "ManualFlashOutput", N_("Manual Flash Output"), N_("Manual flash output"), canonCsId, makerTags, + signedShort, 1, EXV_PRINT_TAG(canonCsSRAWQuality)}, + {0x002a, "ColorTone", N_("Color Tone"), N_("Color tone"), canonCsId, makerTags, signedShort, 1, printValue}, + {0x002e, "SRAWQuality", N_("SRAW Quality Tone"), N_("SRAW quality"), canonCsId, makerTags, signedShort, 1, + EXV_PRINT_TAG(canonCsSRAWQuality)}, + // End of list marker + {0xffff, "(UnknownCanonCsTag)", "(UnknownCanonCsTag)", N_("Unknown Canon Camera Settings 1 tag"), canonCsId, + makerTags, signedShort, 1, printValue}, +}; + +const TagInfo* CanonMakerNote::tagListCs() { + return tagInfoCs_; +} + +//! AFPointUsed, tag 0x000e +constexpr TagDetailsBitmask canonSiAFPointUsed[] = { + {0x0004, N_("left")}, {0x0002, N_("center")}, {0x0001, N_("right")}}; + +//! FlashBias, tag 0x000f +constexpr TagDetails canonSiFlashBias[] = { + {0xffc0, "-2 EV"}, {0xffcc, "-1.67 EV"}, {0xffd0, "-1.50 EV"}, {0xffd4, "-1.33 EV"}, {0xffe0, "-1 EV"}, + {0xffec, "-0.67 EV"}, {0xfff0, "-0.50 EV"}, {0xfff4, "-0.33 EV"}, {0x0000, "0 EV"}, {0x000c, "0.33 EV"}, + {0x0010, "0.50 EV"}, {0x0014, "0.67 EV"}, {0x0020, "1 EV"}, {0x002c, "1.33 EV"}, {0x0030, "1.50 EV"}, + {0x0034, "1.67 EV"}, {0x0040, "2 EV"}}; + +constexpr TagDetails cameraType[] = { + {0, "n/a"}, {248, "EOS High-end"}, {250, "Compact"}, {252, "EOS Mid-range"}, {255, "DV Camera"}, +}; + +constexpr TagDetails autoExposureBracketing[] = { + {65535, "On"}, {0, "Off"}, {1, "On (shot 1)"}, {2, "On (shot 2)"}, {3, "On (shot 3)"}, +}; + +constexpr TagDetails slowShutter[] = {{65535, "n/a"}, {0, "Off"}, {1, "Night Scene"}, {2, "On"}, {3, "None"}}; + +constexpr TagDetails autoRotate[] = { + {-1, "n/a"}, {0, "None"}, {1, "Rotate 90 CW"}, {2, "Rotate 180"}, {3, "Rotate 270 CW"}}; + +constexpr TagDetails ndRotate[] = {{65535, "n/a"}, {0, "Off"}, {1, "On"}}; + +constexpr TagDetails selfTimer2[] = {{65535, "n/a"}, {0, "Selftimer 2s"}, {1, "Selftimer 10s"}}; + +// Canon Shot Info Tag +constexpr TagInfo CanonMakerNote::tagInfoSi_[] = { + {0x0001, "AutoISO", N_("AutoISO"), N_("AutoISO"), canonSiId, makerTags, unsignedShort, 1, printSi0x0001}, + {0x0002, "ISOSpeed", N_("ISO Speed Used"), N_("ISO speed used"), canonSiId, makerTags, unsignedShort, 1, + printSi0x0002}, + {0x0003, "MeasuredEV", N_("Measured EV"), N_("Measured EV"), canonSiId, makerTags, unsignedShort, 1, printSi0x0003}, + {0x0004, "TargetAperture", N_("Target Aperture"), N_("Target Aperture"), canonSiId, makerTags, unsignedShort, 1, + printSi0x0015}, + {0x0005, "TargetShutterSpeed", N_("Target Shutter Speed"), N_("Target shutter speed"), canonSiId, makerTags, + unsignedShort, 1, printSi0x0016}, + {0x0006, "ExposureCompensation", "Exposure Compensation", N_("Exposure Compensation"), canonSiId, makerTags, + unsignedShort, 1, printValue}, + {0x0007, "WhiteBalance", N_("White Balance"), N_("White balance setting"), canonSiId, makerTags, unsignedShort, 1, + EXV_PRINT_TAG(canonSiWhiteBalance)}, + {0x0008, "SlowShutter", N_("Slow Shutter"), N_("Slow shutter"), canonSiId, makerTags, unsignedShort, 1, + EXV_PRINT_TAG(slowShutter)}, + {0x0009, "Sequence", N_("Sequence"), N_("Sequence number (if in a continuous burst)"), canonSiId, makerTags, + unsignedShort, 1, printSi0x0009}, + {0x000a, "OpticalZoomCode", "Optical Zoom Code", N_("Optical Zoom Code"), canonSiId, makerTags, unsignedShort, 1, + printValue}, + {0x000b, "0x000b", "0x000b", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue}, + {0x000c, "CameraTemperature", N_("Camera Temperature"), N_("Camera temperature"), canonSiId, makerTags, signedShort, + 1, printSi0x000c}, + {0x000d, "FlashGuideNumber", N_("Flash Guide Number"), N_("Flash guide number"), canonSiId, makerTags, + unsignedShort, 1, printSi0x000d}, + {0x000e, "AFPointUsed", N_("AF Point Used"), N_("AF point used"), canonSiId, makerTags, unsignedShort, 1, + printSi0x000e}, + {0x000f, "FlashBias", N_("Flash Bias"), N_("Flash bias"), canonSiId, makerTags, unsignedShort, 1, + EXV_PRINT_TAG(canonSiFlashBias)}, + {0x0010, "AutoExposureBracketing", N_("Auto Exposure Bracketing"), N_("Auto exposure bracketing"), canonSiId, + makerTags, unsignedShort, 1, EXV_PRINT_TAG(autoExposureBracketing)}, + {0x0011, "AEBBracketValue", "AEB Bracket Value", N_("AEB Bracket Value"), canonSiId, makerTags, unsignedShort, 1, + printValue}, + {0x0012, "ControlMode", "Control Mode", N_("Control Mode"), canonSiId, makerTags, unsignedShort, 1, printValue}, + {0x0013, "SubjectDistance", N_("Subject Distance"), N_("Subject distance"), canonSiId, makerTags, unsignedShort, 1, + printSi0x0013}, + {0x0014, "0x0014", "0x0014", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue}, + {0x0015, "ApertureValue", N_("Aperture Value"), N_("Aperture"), canonSiId, makerTags, unsignedShort, 1, + printSi0x0015}, + {0x0016, "ShutterSpeedValue", N_("Shutter Speed Value"), N_("Shutter speed"), canonSiId, makerTags, unsignedShort, + 1, printSi0x0016}, + {0x0017, "MeasuredEV2", N_("Measured EV 2"), N_("Measured EV 2"), canonSiId, makerTags, unsignedShort, 1, + printSi0x0017}, + {0x0018, "BulbDuration", N_("Bulb Duration"), N_("Bulb duration"), canonSiId, makerTags, unsignedShort, 1, + printSi0x0018}, + {0x0019, "0x0019", "0x0019", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue}, + {0x001a, "CameraType", N_("Camera Type"), N_("Camera type"), canonSiId, makerTags, unsignedShort, 1, + EXV_PRINT_TAG(cameraType)}, + {0x001b, "AutoRotate", N_("Auto Rotate"), N_("Auto rotate"), canonSiId, makerTags, signedShort, 1, + EXV_PRINT_TAG(autoRotate)}, + {0x001c, "NDFilter", N_("ND Filter"), N_("ND filter"), canonSiId, makerTags, signedShort, 1, + EXV_PRINT_TAG(ndRotate)}, + {0x001d, "SelfTimer2", N_("Self Timer 2"), N_("Self timer2"), canonSiId, makerTags, signedShort, 1, + EXV_PRINT_TAG(selfTimer2)}, + {0x0021, "FlashOutput", N_("Flash Output"), N_("Flash output"), canonSiId, makerTags, signedShort, 1, printValue}, + // End of list marker + {0xffff, "(UnknownCanonCsTag)", "(UnknownCanonCsTag)", N_("Unknown Canon Camera Settings 1 tag"), canonCsId, + makerTags, unsignedShort, 1, printValue}, +}; + +const TagInfo* CanonMakerNote::tagListSi() { + return tagInfoSi_; +} + +//! PanoramaDirection, tag 0x0005 +constexpr TagDetails canonPaDirection[] = {{0, N_("Left to right")}, + {1, N_("Right to left")}, + {2, N_("Bottom to top")}, + {3, N_("Top to bottom")}, + {4, N_("2x2 matrix (Clockwise)")}}; + +// Canon Panorama Info +constexpr TagInfo CanonMakerNote::tagInfoPa_[] = { + {0x0002, "PanoramaFrame", N_("Panorama Frame"), N_("Panorama frame number"), canonPaId, makerTags, unsignedShort, 1, + printValue}, + {0x0005, "PanoramaDirection", N_("Panorama Direction"), N_("Panorama direction"), canonPaId, makerTags, + unsignedShort, 1, EXV_PRINT_TAG(canonPaDirection)}, + // End of list marker + {0xffff, "(UnknownCanonCs2Tag)", "(UnknownCanonCs2Tag)", N_("Unknown Canon Panorama tag"), canonPaId, makerTags, + unsignedShort, 1, printValue}, +}; + +const TagInfo* CanonMakerNote::tagListPa() { + return tagInfoPa_; +} + +// Canon Custom Function Tag Info +constexpr TagInfo CanonMakerNote::tagInfoCf_[] = { + {0x0001, "NoiseReduction", N_("Noise Reduction"), N_("Long exposure noise reduction"), canonCfId, makerTags, + unsignedShort, 1, printValue}, + {0x0002, "ShutterAeLock", N_("Shutter Ae Lock"), N_("Shutter/AE lock buttons"), canonCfId, makerTags, unsignedShort, + 1, printValue}, + {0x0003, "MirrorLockup", N_("Mirror Lockup"), N_("Mirror lockup"), canonCfId, makerTags, unsignedShort, 1, + printValue}, + {0x0004, "ExposureLevelIncrements", N_("Exposure Level Increments"), N_("Tv/Av and exposure level"), canonCfId, + makerTags, unsignedShort, 1, printValue}, + {0x0005, "AFAssist", N_("AF Assist"), N_("AF assist light"), canonCfId, makerTags, unsignedShort, 1, printValue}, + {0x0006, "FlashSyncSpeedAv", N_("Flash Sync Speed Av"), N_("Shutter speed in Av mode"), canonCfId, makerTags, + unsignedShort, 1, printValue}, + {0x0007, "AEBSequence", N_("AEB Sequence"), N_("AEB sequence/auto cancellation"), canonCfId, makerTags, + unsignedShort, 1, printValue}, + {0x0008, "ShutterCurtainSync", N_("Shutter Curtain Sync"), N_("Shutter curtain sync"), canonCfId, makerTags, + unsignedShort, 1, printValue}, + {0x0009, "LensAFStopButton", N_("Lens AF Stop Button"), N_("Lens AF stop button Fn. Switch"), canonCfId, makerTags, + unsignedShort, 1, printValue}, + {0x000a, "FillFlashAutoReduction", N_("Fill Flash Auto Reduction"), N_("Auto reduction of fill flash"), canonCfId, + makerTags, unsignedShort, 1, printValue}, + {0x000b, "MenuButtonReturn", N_("Menu Button Return"), N_("Menu button return position"), canonCfId, makerTags, + unsignedShort, 1, printValue}, + {0x000c, "SetButtonFunction", N_("Set Button Function"), N_("SET button func. when shooting"), canonCfId, makerTags, + unsignedShort, 1, printValue}, + {0x000d, "SensorCleaning", N_("Sensor Cleaning"), N_("Sensor cleaning"), canonCfId, makerTags, unsignedShort, 1, + printValue}, + {0x000e, "SuperimposedDisplay", N_("Superimposed Display"), N_("Superimposed display"), canonCfId, makerTags, + unsignedShort, 1, printValue}, + {0x000f, "ShutterReleaseNoCFCard", N_("Shutter Release No CF Card"), N_("Shutter Release W/O CF Card"), canonCfId, + makerTags, unsignedShort, 1, printValue}, + // End of list marker + {0xffff, "(UnknownCanonCfTag)", "(UnknownCanonCfTag)", N_("Unknown Canon Custom Function tag"), canonCfId, + makerTags, unsignedShort, 1, printValue}, +}; + +const TagInfo* CanonMakerNote::tagListCf() { + return tagInfoCf_; +} + +//! AFPointsUsed, tag 0x0016 +constexpr TagDetailsBitmask canonPiAFPointsUsed[] = { + {0x01, N_("right")}, {0x02, N_("mid-right")}, {0x04, N_("bottom")}, {0x08, N_("center")}, + {0x10, N_("top")}, {0x20, N_("mid-left")}, {0x40, N_("left")}}; + +//! AFPointsUsed20D, tag 0x001a +constexpr TagDetailsBitmask canonPiAFPointsUsed20D[] = { + {0x001, N_("top")}, {0x002, N_("upper-left")}, {0x004, N_("upper-right")}, + {0x008, N_("left")}, {0x010, N_("center")}, {0x020, N_("right")}, + {0x040, N_("lower-left")}, {0x080, N_("lower-right")}, {0x100, N_("bottom")}}; + +// Canon Picture Info Tag +constexpr TagInfo CanonMakerNote::tagInfoPi_[] = { + {0x0002, "ImageWidth", N_("Image Width"), N_("Image width"), canonPiId, makerTags, unsignedShort, 1, printValue}, + {0x0003, "ImageHeight", N_("Image Height"), N_("Image height"), canonPiId, makerTags, unsignedShort, 1, printValue}, + {0x0004, "ImageWidthAsShot", N_("Image Width As Shot"), N_("Image width (as shot)"), canonPiId, makerTags, + unsignedShort, 1, printValue}, + {0x0005, "ImageHeightAsShot", N_("Image Height As Shot"), N_("Image height (as shot)"), canonPiId, makerTags, + unsignedShort, 1, printValue}, + {0x0016, "AFPointsUsed", N_("AF Points Used"), N_("AF points used"), canonPiId, makerTags, unsignedShort, 1, + EXV_PRINT_TAG_BITMASK(canonPiAFPointsUsed)}, + {0x001a, "AFPointsUsed20D", N_("AF Points Used 20D"), N_("AF points used (20D)"), canonPiId, makerTags, + unsignedShort, 1, EXV_PRINT_TAG_BITMASK(canonPiAFPointsUsed20D)}, + // End of list marker + {0xffff, "(UnknownCanonPiTag)", "(UnknownCanonPiTag)", N_("Unknown Canon Picture Info tag"), canonPiId, makerTags, + unsignedShort, 1, printValue}, +}; + +const TagInfo* CanonMakerNote::tagListPi() { + return tagInfoPi_; +} + +//! BracketMode, tag 0x0003 +constexpr TagDetails canonBracketMode[] = { + {0, N_("Off")}, {1, N_("AEB")}, {2, N_("FEB")}, {3, N_("ISO")}, {4, N_("WB")}}; + +//! RawJpgSize, tag 0x0007 +constexpr TagDetails canonRawJpgSize[] = {{-1, N_("n/a")}, + {0, N_("Large")}, + {1, N_("Medium")}, + {2, N_("Small")}, + {5, N_("Medium 1")}, + {6, N_("Medium 2")}, + {7, N_("Medium 3")}, + {8, N_("Postcard")}, + {9, N_("Widescreen")}, + {10, N_("Medium Widescreen")}, + {14, N_("Small 1")}, + {15, N_("Small 2")}, + {16, N_("Small 3")}, + {128, N_("640x480 Movie")}, + {129, N_("Medium Movie")}, + {130, N_("Small Movie")}, + {137, N_("1280x720 Movie")}, + {142, N_("1920x1080 Movie")}, + {143, N_("4096x2160 Movie")}}; + +//! NoiseReduction, tag 0x0008 +constexpr TagDetails canonNoiseReduction[] = { + {0, N_("Off")}, {1, N_("On 1")}, {2, N_("On 2")}, {3, N_("On")}, {4, N_("Auto")}}; + +//! WBBracketMode, tag 0x0009 +constexpr TagDetails canonWBBracketMode[] = {{0, N_("Off")}, {1, N_("On (shift AB)")}, {2, N_("On (shift GM)")}}; + +//! FilterEffect, tag 0x000e +constexpr TagDetails canonFilterEffect[] = { + {0, N_("None")}, {1, N_("Yellow")}, {2, N_("Orange")}, {3, N_("Red")}, {4, N_("Green")}}; + +//! ToningEffect, tag 0x000e +constexpr TagDetails canonToningEffect[] = { + {0, N_("None")}, {1, N_("Sepia")}, {2, N_("Blue")}, {3, N_("Purple")}, {4, N_("Green")}}; + +//! RFLensType, tag 0x003D +constexpr TagDetails canonRFLensType[] = {{0, N_("n/a")}, + {257, N_("Canon RF 50mm F1.2L USM")}, + {258, N_("Canon RF 24-105mm F4L IS USM")}, + {259, N_("Canon RF 28-70mm F2L USM")}, + {260, N_("Canon RF 35mm F1.8 MACRO IS STM")}, + {261, N_("Canon RF 85mm F1.2L USM")}, + {262, N_("Canon RF 85mm F1.2L USM DS")}, + {263, N_("Canon RF 24-70mm F2.8L IS USM")}, + {264, N_("Canon RF 15-35mm F2.8L IS USM")}, + {265, N_("Canon RF 24-240mm F4-6.3 IS USM")}, + {266, N_("Canon RF 70-200mm F2.8L IS USM")}, + {267, N_("Canon RF 85mm F2 MACRO IS STM")}, + {268, N_("Canon RF 600mm F11 IS STM")}, + {269, N_("Canon RF 600mm F11 IS STM + RF1.4x")}, + {270, N_("Canon RF 600mm F11 IS STM + RF2x")}, + {271, N_("Canon RF 800mm F11 IS STM")}, + {272, N_("Canon RF 800mm F11 IS STM + RF1.4x")}, + {273, N_("Canon RF 800mm F11 IS STM + RF2x")}, + {274, N_("Canon RF 24-105mm F4-7.1 IS STM")}, + {275, N_("Canon RF 100-500mm F4.5-7.1L IS USM")}, + {276, N_("Canon RF 100-500mm F4.5-7.1L IS USM + RF1.4x")}, + {277, N_("Canon RF 100-500mm F4.5-7.1L IS USM + RF2x")}, + {278, N_("Canon RF 70-200mm F4L IS USM")}, + {280, N_("Canon RF 50mm F1.8 STM")}}; + +// Canon File Info Tag +constexpr TagInfo CanonMakerNote::tagInfoFi_[] = { + {0x0001, "FileNumber", N_("File Number"), N_("File Number"), canonFiId, makerTags, unsignedLong, 1, + printFiFileNumber}, + {0x0003, "BracketMode", N_("Bracket Mode"), N_("Bracket Mode"), canonFiId, makerTags, signedShort, 1, + EXV_PRINT_TAG(canonBracketMode)}, + {0x0004, "BracketValue", N_("Bracket Value"), N_("Bracket Value"), canonFiId, makerTags, signedShort, 1, + printValue}, + {0x0005, "BracketShotNumber", N_("Bracket Shot Number"), N_("Bracket Shot Number"), canonFiId, makerTags, + signedShort, 1, printValue}, + {0x0006, "RawJpgQuality", N_("Raw Jpg Quality"), N_("Raw Jpg Quality"), canonFiId, makerTags, signedShort, 1, + EXV_PRINT_TAG(canonCsQuality)}, + {0x0007, "RawJpgSize", N_("Raw Jpg Size"), N_("Raw Jpg Size"), canonFiId, makerTags, signedShort, 1, + EXV_PRINT_TAG(canonRawJpgSize)}, + {0x0008, "NoiseReduction", N_("Noise Reduction"), N_("Noise Reduction"), canonFiId, makerTags, signedShort, 1, + EXV_PRINT_TAG(canonNoiseReduction)}, + {0x0009, "WBBracketMode", N_("WB Bracket Mode"), N_("WB Bracket Mode"), canonFiId, makerTags, signedShort, 1, + EXV_PRINT_TAG(canonWBBracketMode)}, + {0x000c, "WBBracketValueAB", N_("WB Bracket Value AB"), N_("WB Bracket Value AB"), canonFiId, makerTags, + signedShort, 1, printValue}, + {0x000d, "WBBracketValueGM", N_("WB Bracket Value GM"), N_("WB Bracket Value GM"), canonFiId, makerTags, + signedShort, 1, printValue}, + {0x000e, "FilterEffect", N_("Filter Effect"), N_("Filter Effect"), canonFiId, makerTags, signedShort, 1, + EXV_PRINT_TAG(canonFilterEffect)}, + {0x000f, "ToningEffect", N_("Toning Effect"), N_("Toning Effect"), canonFiId, makerTags, signedShort, 1, + EXV_PRINT_TAG(canonToningEffect)}, + {0x0010, "MacroMagnification", N_("Macro Magnification"), N_("Macro magnification"), canonFiId, makerTags, + signedShort, 1, printValue}, + {0x0013, "LiveViewShooting", N_("Live View Shooting"), N_("Live view shooting"), canonFiId, makerTags, signedShort, + 1, EXV_PRINT_TAG(canonOffOn)}, + {0x0014, "FocusDistanceUpper", N_("Focus Distance Upper"), N_("Focus Distance Upper"), canonFiId, makerTags, + unsignedShort, 1, printFiFocusDistance}, + {0x0015, "FocusDistanceLower", N_("Focus Distance Lower"), N_("Focus Distance Lower"), canonFiId, makerTags, + unsignedShort, 1, printFiFocusDistance}, + {0x0019, "FlashExposureLock", N_("Flash Exposure Lock"), N_("Flash exposure lock"), canonFiId, makerTags, + signedShort, 1, EXV_PRINT_TAG(canonOffOn)}, + {0x003D, "RFLensType", N_("RF Lens Type"), N_("RF Lens Type"), canonFiId, makerTags, unsignedShort, 1, + EXV_PRINT_TAG(canonRFLensType)}, + // End of list marker + {0xffff, "(UnknownCanonFiTag)", "(UnknownCanonFiTag)", N_("Unknown Canon File Info tag"), canonFiId, makerTags, + signedShort, 1, printValue}, +}; + +const TagInfo* CanonMakerNote::tagListFi() { + return tagInfoFi_; +} + +//! Tone Curve Values +constexpr TagDetails canonToneCurve[] = {{0, N_("Standard")}, {1, N_("Manual")}, {2, N_("Custom")}}; + +//! Sharpness Frequency Values +constexpr TagDetails canonSharpnessFrequency[] = {{0, N_("n/a")}, {1, N_("Lowest")}, {2, N_("Low")}, + {3, N_("Standard")}, {4, N_("High")}, {5, N_("Highest")}}; + +// Canon Processing Info Tag +constexpr TagInfo CanonMakerNote::tagInfoPr_[] = { + {0x0001, "ToneCurve", N_("ToneCurve"), N_("Tone curve"), canonPrId, makerTags, signedShort, 1, + EXV_PRINT_TAG(canonToneCurve)}, + {0x0002, "Sharpness", N_("Sharpness"), N_("Sharpness"), canonPrId, makerTags, signedShort, 1, printValue}, + {0x0003, "SharpnessFrequency", N_("SharpnessFrequency"), N_("Sharpness frequency"), canonPrId, makerTags, + signedShort, 1, EXV_PRINT_TAG(canonSharpnessFrequency)}, + {0x0004, "SensorRedLevel", N_("SensorRedLevel"), N_("Sensor red level"), canonPrId, makerTags, signedShort, 1, + printValue}, + {0x0005, "SensorBlueLevel", N_("SensorBlueLevel"), N_("Sensor blue level"), canonPrId, makerTags, signedShort, 1, + printValue}, + {0x0006, "WhiteBalanceRed", N_("WhiteBalanceRed"), N_("White balance red"), canonPrId, makerTags, signedShort, 1, + printValue}, + {0x0007, "WhiteBalanceBlue", N_("WhiteBalanceBlue"), N_("White balance blue"), canonPrId, makerTags, signedShort, 1, + printValue}, + {0x0008, "WhiteBalance", N_("WhiteBalance"), N_("White balance"), canonPrId, makerTags, signedShort, 1, + EXV_PRINT_TAG(canonSiWhiteBalance)}, + {0x0009, "ColorTemperature", N_("ColorTemperature"), N_("Color Temperature"), canonPrId, makerTags, signedShort, 1, + printValue}, + {0x000a, "PictureStyle", N_("PictureStyle"), N_("Picture style"), canonPrId, makerTags, signedShort, 1, + EXV_PRINT_TAG(canonPictureStyle)}, + {0x000b, "DigitalGain", N_("DigitalGain"), N_("Digital gain"), canonPrId, makerTags, signedShort, 1, printValue}, + {0x000c, "WBShiftAB", N_("WBShiftAB"), N_("WBShift AB"), canonPrId, makerTags, signedShort, 1, printValue}, + {0x000d, "WBShiftGM", N_("WBShiftGM"), N_("WB Shift GM"), canonPrId, makerTags, signedShort, 1, printValue}, + {0xffff, "(UnknownCanonPrTag)", "(UnknownCanonPrTag)", N_("Unknown Canon Processing Info tag"), canonPrId, + makerTags, signedShort, 1, printValue}, +}; + +const TagInfo* CanonMakerNote::tagListPr() { + return tagInfoPr_; +} + +//! canonTimeZoneCity - array of cityID/cityName used by Canon +constexpr TagDetails canonTimeZoneCity[] = { + {0x0000, N_("n/a")}, + {0x0001, N_("Chatham Islands")}, + {0x0002, N_("Wellington")}, + {0x0003, N_("Solomon Islands")}, + {0x0004, N_("Sydney")}, + {0x0005, N_("Adelaide")}, + {0x0006, N_("Tokyo")}, + {0x0007, N_("Hong Kong")}, + {0x0008, N_("Bangkok")}, + {0x0009, N_("Yangon")}, + {0x000a, N_("Dhaka")}, + {0x000b, N_("Kathmandu")}, + {0x000c, N_("Delhi")}, + {0x000d, N_("Karachi")}, + {0x000e, N_("Kabul")}, + {0x000f, N_("Dubai")}, + {0x0010, N_("Tehran")}, + {0x0011, N_("Moscow")}, + {0x0012, N_("Cairo")}, + {0x0013, N_("Paris")}, + {0x0014, N_("London")}, + {0x0015, N_("Azores")}, + {0x0016, N_("Fernando de Noronha")}, + {0x0017, N_("Sao Paulo")}, + {0x0018, N_("Newfoundland")}, + {0x0019, N_("Santiago")}, + {0x001a, N_("Caracas")}, + {0x001b, N_("New York")}, + {0x001c, N_("Chicago")}, + {0x001d, N_("Denver")}, + {0x001e, N_("Los Angeles")}, + {0x001f, N_("Anchorage")}, + {0x0020, N_("Honolulu")}, + {0x0021, N_("Samoa")}, + {0x7ffe, N_("(not set)")}, +}; + +// Canon Time Info Tag +constexpr TagInfo CanonMakerNote::tagInfoTi_[] = { + {0x0001, "TimeZone", N_("Time zone offset"), N_("Time zone offset in minutes"), canonTiId, makerTags, signedLong, 1, + printValue}, + {0x0002, "TimeZoneCity", N_("Time zone city"), N_("Time zone city"), canonTiId, makerTags, signedLong, 1, + EXV_PRINT_TAG(canonTimeZoneCity)}, + {0x0003, "DaylightSavings", N_("Daylight Savings"), N_("Daylight Saving Time"), canonTiId, makerTags, signedLong, 1, + printValue}, + {0xffff, "(UnknownCanonTiTag)", "(UnknownCanonTiTag)", N_("Unknown Canon Time Info tag"), canonTiId, makerTags, + signedLong, 1, printValue}, +}; + +const TagInfo* CanonMakerNote::tagListTi() { + return tagInfoTi_; +} + +std::ostream& CanonMakerNote::printFiFileNumber(std::ostream& os, const Value& value, const ExifData* metadata) { + std::ios::fmtflags f(os.flags()); + if (!metadata || value.typeId() != unsignedLong || value.count() == 0) { + os << "(" << value << ")"; + os.flags(f); + return os; + } + + auto pos = metadata->findKey(ExifKey("Exif.Image.Model")); + if (pos == metadata->end()) + return os << "(" << value << ")"; + + // Ported from Exiftool + std::string model = pos->toString(); + if (model.find("20D") != std::string::npos || model.find("350D") != std::string::npos || + model.substr(model.size() - 8, 8) == "REBEL XT" || model.find("Kiss Digital N") != std::string::npos) { + uint32_t val = value.toUint32(); + uint32_t dn = (val & 0xffc0) >> 6; + uint32_t fn = ((val >> 16) & 0xff) + ((val & 0x3f) << 8); + os << std::dec << dn << "-" << std::setw(4) << std::setfill('0') << fn; + os.flags(f); + return os; + } + if (model.find("30D") != std::string::npos || model.find("400D") != std::string::npos || + model.find("REBEL XTi") != std::string::npos || model.find("Kiss Digital X") != std::string::npos || + model.find("K236") != std::string::npos) { + uint32_t val = value.toUint32(); + uint32_t dn = (val & 0xffc00) >> 10; + while (dn < 100) + dn += 0x40; + uint32_t fn = ((val & 0x3ff) << 4) + ((val >> 20) & 0x0f); + os << std::dec << dn << "-" << std::setw(4) << std::setfill('0') << fn; + os.flags(f); + return os; + } + + os.flags(f); + return os << "(" << value << ")"; +} + +std::ostream& CanonMakerNote::printFocalLength(std::ostream& os, const Value& value, const ExifData* metadata) { + std::ios::fmtflags f(os.flags()); + if (!metadata || value.count() < 4 || value.typeId() != unsignedShort) { + os.flags(f); + return os << value; + } + + ExifKey key("Exif.CanonCs.Lens"); + auto pos = metadata->findKey(key); + if (pos != metadata->end() && pos->value().count() >= 3 && pos->value().typeId() == unsignedShort) { + float fu = pos->value().toFloat(2); + if (fu != 0.0F) { + float fl = value.toFloat(1) / fu; + std::ostringstream oss; + oss.copyfmt(os); + os << std::fixed << std::setprecision(1); + os << fl << " mm"; + os.copyfmt(oss); + os.flags(f); + return os; +>>>>>>> 16d72c99 (fix naming of canon EF 35-80mm.closes #2247) } //! extractLensFocalLength from metadata