| 20 | 
  20 | 
  
     */ 
   | 
  | 21 | 
  21 | 
  
    /* 
   | 
  | 22 | 
  22 | 
  
      File:      tags.cpp 
   | 
  | 23 | 
   | 
  
      Version:   $Rev$ 
   | 
   | 
  23 | 
  
      Version:   $Rev: 2455 $ 
   | 
  | 24 | 
  24 | 
  
      Author(s): Andreas Huggel (ahu) <ahuggel@gmx.net> 
   | 
  | 25 | 
  25 | 
  
                 Gilles Caulier (gc) <caulier dot gilles at gmail dot com> 
   | 
  | 26 | 
  26 | 
  
      History:   15-Jan-04, ahu: created 
   | 
  | ... | ... |  | 
  | 28 | 
  28 | 
  
     */ 
   | 
  | 29 | 
  29 | 
  
    // ***************************************************************************** 
   | 
  | 30 | 
  30 | 
  
    #include "rcsid_int.hpp" 
   | 
  | 31 | 
   | 
  
    EXIV2_RCSID("@(#) $Id$")
   | 
   | 
  31 | 
  
    EXIV2_RCSID("@(#) $Id: tags.cpp 2455 2011-02-13 14:39:15Z ahuggel $")
   | 
  | 32 | 
  32 | 
  
    
   | 
  | 33 | 
  33 | 
  
    // ***************************************************************************** 
   | 
  | 34 | 
  34 | 
  
    // included header files 
   | 
  | ... | ... |  | 
  | 1207 | 
  1207 | 
  
                       "tag pair, except they are for use by raw file editors rather than " 
   | 
  | 1208 | 
  1208 | 
  
                       "camera manufacturers."), 
   | 
  | 1209 | 
  1209 | 
  
                    ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag 
   | 
   | 
  1210 | 
  
            TagInfo(0xc6bf, "ColorimetricReference", N_("Colorimetric Reference"),
   | 
   | 
  1211 | 
  
                    N_("The DNG color model documents a transform between camera colors and "
   | 
   | 
  1212 | 
  
                    "CIE XYZ values. This tag describes the colorimetric reference for the " 
   | 
   | 
  1213 | 
  
                    "CIE XYZ values. 0 = The XYZ values are scene-referred. 1 = The XYZ values " 
   | 
   | 
  1214 | 
  
                    "are output-referred, using the ICC profile perceptual dynamic range. This " 
   | 
   | 
  1215 | 
  
                    "tag allows output-referred data to be stored in DNG files and still processed " 
   | 
   | 
  1216 | 
  
                    "correctly by DNG readers."), 
   | 
   | 
  1217 | 
  
                    ifd0Id, dngTags, unsignedShort, 0, printValue), // DNG tag 
   | 
   | 
  1218 | 
  
            TagInfo(0xc6f3, "CameraCalibrationSignature", N_("Camera Calibration Signature"),
   | 
   | 
  1219 | 
  
                    N_("A UTF-8 encoded string associated with the CameraCalibration1 and "
   | 
   | 
  1220 | 
  
                    "CameraCalibration2 tags. The CameraCalibration1 and CameraCalibration2 tags " 
   | 
   | 
  1221 | 
  
                    "should only be used in the DNG color transform if the string stored in the " 
   | 
   | 
  1222 | 
  
                    "CameraCalibrationSignature tag exactly matches the string stored in the " 
   | 
   | 
  1223 | 
  
                    "ProfileCalibrationSignature tag for the selected camera profile."), 
   | 
   | 
  1224 | 
  
                    ifd0Id, dngTags, unsignedByte, 0, printValue), // DNG tag 
   | 
   | 
  1225 | 
  
            TagInfo(0xc6f4, "ProfileCalibrationSignature", N_("Profile Calibration Signature"),
   | 
   | 
  1226 | 
  
                    N_("A UTF-8 encoded string associated with the camera profile tags. The "
   | 
   | 
  1227 | 
  
                    "CameraCalibration1 and CameraCalibration2 tags should only be used in the " 
   | 
   | 
  1228 | 
  
                    "DNG color transfer if the string stored in the CameraCalibrationSignature " 
   | 
   | 
  1229 | 
  
                    "tag exactly matches the string stored in the ProfileCalibrationSignature tag " 
   | 
   | 
  1230 | 
  
                    "for the selected camera profile."), 
   | 
   | 
  1231 | 
  
                    ifd0Id, dngTags, unsignedByte, 0, printValue), // DNG tag 
   | 
   | 
  1232 | 
  
            TagInfo(0xc6f6, "AsShotProfileName", N_("As Shot Profile Name"),
   | 
   | 
  1233 | 
  
                    N_("A UTF-8 encoded string containing the name of the \"as shot\" camera "
   | 
   | 
  1234 | 
  
                    "profile, if any."), 
   | 
   | 
  1235 | 
  
                    ifd0Id, dngTags, unsignedByte, 0, printValue), // DNG tag 
   | 
   | 
  1236 | 
  
            TagInfo(0xc6f7, "NoiseReductionApplied", N_("Noise Reduction Applied"),
   | 
   | 
  1237 | 
  
                    N_("This tag indicates how much noise reduction has been applied to the raw "
   | 
   | 
  1238 | 
  
                    "data on a scale of 0.0 to 1.0. A 0.0 value indicates that no noise reduction " 
   | 
   | 
  1239 | 
  
                    "has been applied. A 1.0 value indicates that the \"ideal\" amount of noise " 
   | 
   | 
  1240 | 
  
                    "reduction has been applied, i.e. that the DNG reader should not apply " 
   | 
   | 
  1241 | 
  
                    "additional noise reduction by default. A value of 0/0 indicates that this " 
   | 
   | 
  1242 | 
  
                    "parameter is unknown."), 
   | 
   | 
  1243 | 
  
                    ifd0Id, dngTags, unsignedRational, 1, printValue), // DNG tag 
   | 
   | 
  1244 | 
  
            TagInfo(0xc6f8, "ProfileName", N_("Profile Name"),
   | 
   | 
  1245 | 
  
                    N_("A UTF-8 encoded string containing the name of the camera profile. This "
   | 
   | 
  1246 | 
  
                    "tag is optional if there is only a single camera profile stored in the file " 
   | 
   | 
  1247 | 
  
                    "but is required for all camera profiles if there is more than one camera " 
   | 
   | 
  1248 | 
  
                    "profile stored in the file."), 
   | 
   | 
  1249 | 
  
                    ifd0Id, dngTags, unsignedByte, 0, printValue), // DNG tag 
   | 
   | 
  1250 | 
  
            TagInfo(0xc6f9, "ProfileHueSatMapDims", N_("Profile Hue Sat Map Dims"),
   | 
   | 
  1251 | 
  
                    N_("This tag specifies the number of input samples in each dimension of the "
   | 
   | 
  1252 | 
  
                    "hue/saturation/value mapping tables. The data for these tables are stored " 
   | 
   | 
  1253 | 
  
                    "in ProfileHueSatMapData1 and ProfileHueSatMapData2 tags. The most common " 
   | 
   | 
  1254 | 
  
                    "case has ValueDivisions equal to 1, so only hue and saturation are used as " 
   | 
   | 
  1255 | 
  
                    "inputs to the mapping table."), 
   | 
   | 
  1256 | 
  
                    ifd0Id, dngTags, unsignedLong, 3, printValue), // DNG tag 
   | 
   | 
  1257 | 
  
            TagInfo(0xc6fa, "ProfileHueSatMapData1", N_("Profile Hue Sat Map Data 1"),
   | 
   | 
  1258 | 
  
                    N_("This tag contains the data for the first hue/saturation/value mapping "
   | 
   | 
  1259 | 
  
                    "table. Each entry of the table contains three 32-bit IEEE floating-point " 
   | 
   | 
  1260 | 
  
                    "values. The first entry is hue shift in degrees; the second entry is " 
   | 
   | 
  1261 | 
  
                    "saturation scale factor; and the third entry is a value scale factor. The " 
   | 
   | 
  1262 | 
  
                    "table entries are stored in the tag in nested loop order, with the value " 
   | 
   | 
  1263 | 
  
                    "divisions in the outer loop, the hue divisions in the middle loop, and the " 
   | 
   | 
  1264 | 
  
                    "saturation divisions in the inner loop. All zero input saturation entries " 
   | 
   | 
  1265 | 
  
                    "are required to have a value scale factor of 1.0."), 
   | 
   | 
  1266 | 
  
                    ifd0Id, dngTags, tiffFloat, 0, printValue), // DNG tag 
   | 
   | 
  1267 | 
  
            TagInfo(0xc6fb, "ProfileHueSatMapData2", N_("Profile Hue Sat Map Data 2"),
   | 
   | 
  1268 | 
  
                    N_("This tag contains the data for the second hue/saturation/value mapping "
   | 
   | 
  1269 | 
  
                    "table. Each entry of the table contains three 32-bit IEEE floating-point " 
   | 
   | 
  1270 | 
  
                    "values. The first entry is hue shift in degrees; the second entry is a " 
   | 
   | 
  1271 | 
  
                    "saturation scale factor; and the third entry is a value scale factor. The " 
   | 
   | 
  1272 | 
  
                    "table entries are stored in the tag in nested loop order, with the value " 
   | 
   | 
  1273 | 
  
                    "divisions in the outer loop, the hue divisions in the middle loop, and the " 
   | 
   | 
  1274 | 
  
                    "saturation divisions in the inner loop. All zero input saturation entries " 
   | 
   | 
  1275 | 
  
                    "are required to have a value scale factor of 1.0."), 
   | 
   | 
  1276 | 
  
                    ifd0Id, dngTags, tiffFloat, 0, printValue), // DNG tag 
   | 
   | 
  1277 | 
  
            TagInfo(0xc6fc, "ProfileToneCurve", N_("Profile Tone Curve"),
   | 
   | 
  1278 | 
  
                    N_("This tag contains a default tone curve that can be applied while "
   | 
   | 
  1279 | 
  
                    "processing the image as a starting point for user adjustments. The curve " 
   | 
   | 
  1280 | 
  
                    "is specified as a list of 32-bit IEEE floating-point value pairs in linear " 
   | 
   | 
  1281 | 
  
                    "gamma. Each sample has an input value in the range of 0.0 to 1.0, and an " 
   | 
   | 
  1282 | 
  
                    "output value in the range of 0.0 to 1.0. The first sample is required to be " 
   | 
   | 
  1283 | 
  
                    "(0.0, 0.0), and the last sample is required to be (1.0, 1.0). Interpolated " 
   | 
   | 
  1284 | 
  
                    "the curve using a cubic spline."), 
   | 
   | 
  1285 | 
  
                    ifd0Id, dngTags, tiffFloat, -1, printValue), // DNG tag 
   | 
   | 
  1286 | 
  
            TagInfo(0xc6fd, "ProfileEmbedPolicy", N_("Profile Embed Policy"),
   | 
   | 
  1287 | 
  
                    N_("This tag contains information about the usage rules for the associated "
   | 
   | 
  1288 | 
  
                    "camera profile."), 
   | 
   | 
  1289 | 
  
                    ifd0Id, dngTags, unsignedLong, 1, printValue), // DNG tag 
   | 
   | 
  1290 | 
  
            TagInfo(0xc6fe, "ProfileCopyright", N_("Profile Copyright"),
   | 
   | 
  1291 | 
  
                    N_("A UTF-8 encoded string containing the copyright information for the "
   | 
   | 
  1292 | 
  
                    "camera profile. This string always should be preserved along with the other " 
   | 
   | 
  1293 | 
  
                    "camera profile tags."), 
   | 
   | 
  1294 | 
  
                    ifd0Id, dngTags, unsignedByte, 0, printValue), // DNG tag 
   | 
   | 
  1295 | 
  
            TagInfo(0xc714, "ForwardMatrix1", N_("Forward Matrix 1"),
   | 
   | 
  1296 | 
  
                    N_("This tag defines a matrix that maps white balanced camera colors to XYZ "
   | 
   | 
  1297 | 
  
                    "D50 colors."), 
   | 
   | 
  1298 | 
  
                    ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag 
   | 
   | 
  1299 | 
  
            TagInfo(0xc715, "ForwardMatrix2", N_("Forward Matrix 2"),
   | 
   | 
  1300 | 
  
                    N_("This tag defines a matrix that maps white balanced camera colors to XYZ "
   | 
   | 
  1301 | 
  
                    "D50 colors."), 
   | 
   | 
  1302 | 
  
                    ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag 
   | 
   | 
  1303 | 
  
            TagInfo(0xc716, "PreviewApplicationName", N_("Preview Application Name"),
   | 
   | 
  1304 | 
  
                    N_("A UTF-8 encoded string containing the name of the application that "
   | 
   | 
  1305 | 
  
                    "created the preview stored in the IFD."), 
   | 
   | 
  1306 | 
  
                    ifd0Id, dngTags, unsignedByte, 0, printValue), // DNG tag 
   | 
   | 
  1307 | 
  
            TagInfo(0xc717, "PreviewApplicationVersion", N_("Preview Application Version"),
   | 
   | 
  1308 | 
  
                    N_("A UTF-8 encoded string containing the version number of the application "
   | 
   | 
  1309 | 
  
                    "that created the preview stored in the IFD."), 
   | 
   | 
  1310 | 
  
                    ifd0Id, dngTags, unsignedByte, 0, printValue), // DNG tag 
   | 
   | 
  1311 | 
  
            TagInfo(0xc718, "PreviewSettingsName", N_("Preview Settings Name"),
   | 
   | 
  1312 | 
  
                    N_("A UTF-8 encoded string containing the name of the conversion settings "
   | 
   | 
  1313 | 
  
                    "(for example, snapshot name) used for the preview stored in the IFD."), 
   | 
   | 
  1314 | 
  
                    ifd0Id, dngTags, unsignedByte, 0, printValue), // DNG tag 
   | 
   | 
  1315 | 
  
            TagInfo(0xc719, "PreviewSettingsDigest", N_("Preview Settings Digest"),
   | 
   | 
  1316 | 
  
                    N_("A unique ID of the conversion settings (for example, MD5 digest) used "
   | 
   | 
  1317 | 
  
                    "to render the preview stored in the IFD."), 
   | 
   | 
  1318 | 
  
                    ifd0Id, dngTags, unsignedByte, 16, printValue), // DNG tag 
   | 
   | 
  1319 | 
  
            TagInfo(0xc71a, "PreviewColorSpace", N_("Preview Color Space"),
   | 
   | 
  1320 | 
  
                    N_("This tag specifies the color space in which the rendered preview in this "
   | 
   | 
  1321 | 
  
                    "IFD is stored. The default value for this tag is sRGB for color previews " 
   | 
   | 
  1322 | 
  
                    "and Gray Gamma 2.2 for monochrome previews."), 
   | 
   | 
  1323 | 
  
                    ifd0Id, dngTags, unsignedLong, 1, printValue), // DNG tag 
   | 
   | 
  1324 | 
  
            TagInfo(0xc71b, "PreviewDateTime", N_("Preview Date Time"),
   | 
   | 
  1325 | 
  
                    N_("This tag is an ASCII string containing the name of the date/time at which "
   | 
   | 
  1326 | 
  
                    "the preview stored in the IFD was rendered. The date/time is encoded using " 
   | 
   | 
  1327 | 
  
                    "ISO 8601 format."), 
   | 
   | 
  1328 | 
  
                    ifd0Id, dngTags, asciiString, 0, printValue), // DNG tag 
   | 
   | 
  1329 | 
  
            TagInfo(0xc71c, "RawImageDigest", N_("Raw Image Digest"),
   | 
   | 
  1330 | 
  
                    N_("This tag is an MD5 digest of the raw image data. All pixels in the image "
   | 
   | 
  1331 | 
  
                    "are processed in row-scan order. Each pixel is zero padded to 16 or 32 bits " 
   | 
   | 
  1332 | 
  
                    "deep (16-bit for data less than or equal to 16 bits deep, 32-bit otherwise). " 
   | 
   | 
  1333 | 
  
                    "The data for each pixel is processed in little-endian byte order."), 
   | 
   | 
  1334 | 
  
                    ifd0Id, dngTags, undefined, 16, printValue), // DNG tag 
   | 
   | 
  1335 | 
  
            TagInfo(0xc71d, "OriginalRawFileDigest", N_("Original Raw File Digest"),
   | 
   | 
  1336 | 
  
                    N_("This tag is an MD5 digest of the data stored in the OriginalRawFileData "
   | 
   | 
  1337 | 
  
                    "tag."), 
   | 
   | 
  1338 | 
  
                    ifd0Id, dngTags, undefined, 16, printValue), // DNG tag 
   | 
   | 
  1339 | 
  
            TagInfo(0xc71e, "SubTileBlockSize", N_("Sub Tile Block Size"),
   | 
   | 
  1340 | 
  
                    N_("Normally, the pixels within a tile are stored in simple row-scan order. "
   | 
   | 
  1341 | 
  
                    "This tag specifies that the pixels within a tile should be grouped first " 
   | 
   | 
  1342 | 
  
                    "into rectangular blocks of the specified size. These blocks are stored in " 
   | 
   | 
  1343 | 
  
                    "row-scan order. Within each block, the pixels are stored in row-scan order. " 
   | 
   | 
  1344 | 
  
                    "The use of a non-default value for this tag requires setting the " 
   | 
   | 
  1345 | 
  
                    "DNGBackwardVersion tag to at least 1.2.0.0."), 
   | 
   | 
  1346 | 
  
                    ifd0Id, dngTags, unsignedLong, 2, printValue), // DNG tag 
   | 
   | 
  1347 | 
  
            TagInfo(0xc71f, "RowInterleaveFactor", N_("Row Interleave Factor"),
   | 
   | 
  1348 | 
  
                    N_("This tag specifies that rows of the image are stored in interleaved "
   | 
   | 
  1349 | 
  
                    "order. The value of the tag specifies the number of interleaved fields. " 
   | 
   | 
  1350 | 
  
                    "The use of a non-default value for this tag requires setting the " 
   | 
   | 
  1351 | 
  
                    "DNGBackwardVersion tag to at least 1.2.0.0."), 
   | 
   | 
  1352 | 
  
                    ifd0Id, dngTags, unsignedLong, 1, printValue), // DNG tag 
   | 
   | 
  1353 | 
  
            TagInfo(0xc725, "ProfileLookTableDims", N_("Profile Look Table Dims"),
   | 
   | 
  1354 | 
  
                    N_("This tag specifies the number of input samples in each dimension of a "
   | 
   | 
  1355 | 
  
                    "default \"look\" table. The data for this table is stored in the " 
   | 
   | 
  1356 | 
  
                    "ProfileLookTableData tag."), 
   | 
   | 
  1357 | 
  
                    ifd0Id, dngTags, unsignedLong, 3, printValue), // DNG tag 
   | 
   | 
  1358 | 
  
            TagInfo(0xc726, "ProfileLookTableData", N_("Profile Look Table Data"),
   | 
   | 
  1359 | 
  
                    N_("This tag contains a default \"look\" table that can be applied while "
   | 
   | 
  1360 | 
  
                    "processing the image as a starting point for user adjustment. This table " 
   | 
   | 
  1361 | 
  
                    "uses the same format as the tables stored in the ProfileHueSatMapData1 " 
   | 
   | 
  1362 | 
  
                    "and ProfileHueSatMapData2 tags, and is applied in the same color space. " 
   | 
   | 
  1363 | 
  
                    "However, it should be applied later in the processing pipe, after any " 
   | 
   | 
  1364 | 
  
                    "exposure compensation and/or fill light stages, but before any tone curve " 
   | 
   | 
  1365 | 
  
                    "stage. Each entry of the table contains three 32-bit IEEE floating-point " 
   | 
   | 
  1366 | 
  
                    "values. The first entry is hue shift in degrees, the second entry is a " 
   | 
   | 
  1367 | 
  
                    "saturation scale factor, and the third entry is a value scale factor. " 
   | 
   | 
  1368 | 
  
                    "The table entries are stored in the tag in nested loop order, with the " 
   | 
   | 
  1369 | 
  
                    "value divisions in the outer loop, the hue divisions in the middle loop, " 
   | 
   | 
  1370 | 
  
                    "and the saturation divisions in the inner loop. All zero input saturation " 
   | 
   | 
  1371 | 
  
                    "entries are required to have a value scale factor of 1.0."), 
   | 
   | 
  1372 | 
  
                    ifd0Id, dngTags, tiffFloat, -1, printValue), // DNG tag 
   | 
   | 
  1373 | 
  
            TagInfo(0xc740, "OpcodeList1", N_("Opcode List 1"),
   | 
   | 
  1374 | 
  
                    N_("Specifies the list of opcodes that should be applied to the raw image, "
   | 
   | 
  1375 | 
  
                    "as read directly from the file."), 
   | 
   | 
  1376 | 
  
                    ifd0Id, dngTags, undefined, -1, printValue), // DNG tag 
   | 
   | 
  1377 | 
  
            TagInfo(0xc741, "OpcodeList2", N_("Opcode List 2"),
   | 
   | 
  1378 | 
  
                    N_("Specifies the list of opcodes that should be applied to the raw image, "
   | 
   | 
  1379 | 
  
                    "just after it has been mapped to linear reference values."), 
   | 
   | 
  1380 | 
  
                    ifd0Id, dngTags, undefined, -1, printValue), // DNG tag 
   | 
   | 
  1381 | 
  
            TagInfo(0xc74e, "OpcodeList3", N_("Opcode List 3"),
   | 
   | 
  1382 | 
  
                    N_("Specifies the list of opcodes that should be applied to the raw image, "
   | 
   | 
  1383 | 
  
                    "just after it has been demosaiced."), 
   | 
   | 
  1384 | 
  
                    ifd0Id, dngTags, undefined, -1, printValue), // DNG tag 
   | 
   | 
  1385 | 
  
            TagInfo(0xc761, "NoiseProfile", N_("Noise Profile"),
   | 
   | 
  1386 | 
  
                    N_("NoiseProfile describes the amount of noise in a raw image. Specifically, "
   | 
   | 
  1387 | 
  
                    "this tag models the amount of signal-dependent photon (shot) noise and " 
   | 
   | 
  1388 | 
  
                    "signal-independent sensor readout noise, two common sources of noise in " 
   | 
   | 
  1389 | 
  
                    "raw images. The model assumes that the noise is white and spatially " 
   | 
   | 
  1390 | 
  
                    "independent, ignoring fixed pattern effects and other sources of noise (e.g., " 
   | 
   | 
  1391 | 
  
                    "pixel response non-uniformity, spatially-dependent thermal effects, etc.)."), 
   | 
   | 
  1392 | 
  
                    ifd0Id, dngTags, tiffDouble, -1, printValue), // DNG tag 
   | 
  | 1210 | 
  1393 | 
  
            // End of list marker 
   | 
  | 1211 | 
  1394 | 
  
            TagInfo(0xffff, "(UnknownIfdTag)", N_("Unknown IFD tag"),
   | 
  | 1212 | 
  1395 | 
  
                    N_("Unknown IFD tag"),
   | 
  | ... | ... |  | 
  | 1619 | 
  1802 | 
  
                    "each image. It is recorded as an ASCII string equivalent " 
   | 
  | 1620 | 
  1803 | 
  
                    "to hexadecimal notation and 128-bit fixed length."), 
   | 
  | 1621 | 
  1804 | 
  
                    exifId, otherTags, asciiString, 33, printValue), 
   | 
   | 
  1805 | 
  
            TagInfo(0xa430, "CameraOwnerName", N_("Camera Owner Name"),
   | 
   | 
  1806 | 
  
                    N_("This tag records the owner of a camera used in "
   | 
   | 
  1807 | 
  
                    "photography as an ASCII string."), 
   | 
   | 
  1808 | 
  
                    exifId, otherTags, asciiString, 0, printValue), 
   | 
   | 
  1809 | 
  
            TagInfo(0xa431, "BodySerialNumber", N_("Body Serial Number"),
   | 
   | 
  1810 | 
  
                    N_("This tag records the serial number of the body of the camera "
   | 
   | 
  1811 | 
  
                    "that was used in photography as an ASCII string."), 
   | 
   | 
  1812 | 
  
                    exifId, otherTags, asciiString, 0, printValue), 
   | 
   | 
  1813 | 
  
            TagInfo(0xa432, "LensSpecification", N_("Lens Specification"),
   | 
   | 
  1814 | 
  
                    N_("This tag notes minimum focal length, maximum focal length, "
   | 
   | 
  1815 | 
  
                    "minimum F number in the minimum focal length, and minimum F number " 
   | 
   | 
  1816 | 
  
                    "in the maximum focal length, which are specification information " 
   | 
   | 
  1817 | 
  
                    "for the lens that was used in photography. When the minimum F " 
   | 
   | 
  1818 | 
  
                    "number is unknown, the notation is 0/0"), 
   | 
   | 
  1819 | 
  
                    exifId, otherTags, unsignedRational, 4, printValue), 
   | 
   | 
  1820 | 
  
            TagInfo(0xa433, "LensMake", N_("Lens Make"),
   | 
   | 
  1821 | 
  
                    N_("This tag records the lens manufactor as an ASCII string."),
   | 
   | 
  1822 | 
  
                    exifId, otherTags, asciiString, 0, printValue), 
   | 
   | 
  1823 | 
  
            TagInfo(0xa434, "LensModel", N_("Lens Model"),
   | 
   | 
  1824 | 
  
                    N_("This tag records the lens's model name and model number as an "
   | 
   | 
  1825 | 
  
                    "ASCII string."), 
   | 
   | 
  1826 | 
  
                    exifId, otherTags, asciiString, 0, printValue), 
   | 
   | 
  1827 | 
  
            TagInfo(0xa435, "LensSerialNumber", N_("Lens Serial Number"),
   | 
   | 
  1828 | 
  
                    N_("This tag records the serial number of the interchangeable lens "
   | 
   | 
  1829 | 
  
                    "that was used in photography as an ASCII string."), 
   | 
   | 
  1830 | 
  
                    exifId, otherTags, asciiString, 0, printValue), 
   | 
  | 1622 | 
  1831 | 
  
            // End of list marker 
   | 
  | 1623 | 
  1832 | 
  
            TagInfo(0xffff, "(UnknownExifTag)", N_("Unknown Exif tag"),
   | 
  | 1624 | 
  1833 | 
  
                    N_("Unknown Exif tag"),
   |