Update Sony(1|2) tags (#2323)

* Update Sony(1|2) group (minor Minolta changes)

Transcribe all tags (except for `LensID`) from main ExifTool Sony
group into Exiv2.
Changes include:
- Rename `ColorReproduction` -> `CreativeStyle` and
  `LongExposureNoiseReduction` -> `FocusMode3` to reflect use.
- Rename `0x*` tagnames to equivalent ExifTool tags (e.g.,
  `0x2006` -> `Sharpness`).
- Remove tag entries that are Groups (e.g., `ShotInfo`).
- Separate some common Sony/Minolta data as the camera types use
  different values (e.g., `Quality`)
- Additional `exiv2-Sony*.exv` test files come from ExifTool Sony
  samples (https://exiftool.org/Sony.tar.gz).

ExifTool Sony tags sources:
https://www.exiftool.org/TagNames/Sony.html
1e17485cbb/lib/Image/ExifTool/Sony.pm

* Improve coverage of `Sony(1|2)` group

* Fix clang compilation on macOS

* Fix github-code-scanning warnings

* Fix minor `Exif.Sony(1|2)` problems

* Fix tests and update `Sony(1|2)` group coverage

* Fix testing

* Minor fixes and regenerate Regression data

* Update Sony tags with `getModel()`

Make finding the Sony model more resilient by also using
`SonyModelID`.

* Fix `Exif.Sony(1|2).AFPointsUsed` type

* Improve `Exif.Sony(1|2).*` coverage

* Fix types in Sony func `getFocusMode()`

* Update Regression tests for `Sony(1|2)`

* Minor fixes to `Sony(1|2)` tags

* Update `Sony(1|2)` tag coverage

* Improve `Sony(1|2)` tag coverage

* Update easyaccess with `Exif.Sony(1|2)` tags

* Update `SonyModelID` array comment

* Add Sony `LensSpec` tag to easyaccess

* Update `Sony(1|2)` label/descriptions

* Update `int` to `size_t` (credit:@kevinbackhouse)

* Fix Windows build warning in `src/tags_int.hpp`
main
Peter 3 years ago committed by GitHub
parent 84f566b4b7
commit 9dc34ad39c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -134,7 +134,7 @@ int main(int argc, char* const argv[]) {
Exiv2::ExifData edMn9; Exiv2::ExifData edMn9;
edMn9["Exif.Image.Make"] = "SONY"; edMn9["Exif.Image.Make"] = "SONY";
edMn9["Exif.Image.Model"] = "DSC-W7"; edMn9["Exif.Image.Model"] = "DSC-W7";
edMn9["Exif.Sony1.0x2000"] = "0 1 2 3 4 5"; edMn9["Exif.Sony1.Quality"] = static_cast<uint32_t>(2);
write(file, edMn9); write(file, edMn9);
print(file); print(file);

@ -163,10 +163,11 @@ ExifData::const_iterator flashBias(const ExifData& ed) {
ExifData::const_iterator exposureMode(const ExifData& ed) { ExifData::const_iterator exposureMode(const ExifData& ed) {
static const char* keys[] = { static const char* keys[] = {
"Exif.Photo.ExposureProgram", "Exif.Image.ExposureProgram", "Exif.CanonCs.ExposureProgram", "Exif.Photo.ExposureProgram", "Exif.Image.ExposureProgram", "Exif.CanonCs.ExposureProgram",
"Exif.MinoltaCs7D.ExposureMode", "Exif.MinoltaCs5D.ExposureMode", "Exif.MinoltaCsNew.ExposureMode", "Exif.MinoltaCs7D.ExposureMode", "Exif.MinoltaCs5D.ExposureMode", "Exif.MinoltaCsNew.ExposureMode",
"Exif.MinoltaCsOld.ExposureMode", "Exif.Sony1MltCsA100.ExposureMode", "Exif.Sony1Cs.ExposureProgram", "Exif.MinoltaCsOld.ExposureMode", "Exif.Sony1.ExposureMode", "Exif.Sony2.ExposureMode",
"Exif.Sony2Cs.ExposureProgram", "Exif.Sigma.ExposureMode"}; "Exif.Sony1Cs.ExposureProgram", "Exif.Sony2Cs.ExposureProgram", "Exif.Sony1MltCsA100.ExposureMode",
"Exif.Sigma.ExposureMode"};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
@ -196,27 +197,28 @@ ExifData::const_iterator macroMode(const ExifData& ed) {
} }
ExifData::const_iterator imageQuality(const ExifData& ed) { ExifData::const_iterator imageQuality(const ExifData& ed) {
static const char* keys[] = {"Exif.CanonCs.Quality", "Exif.Fujifilm.Quality", "Exif.Sigma.Quality", static const char* keys[] = {"Exif.CanonCs.Quality", "Exif.Fujifilm.Quality", "Exif.Sigma.Quality",
"Exif.Nikon1.Quality", "Exif.Nikon2.Quality", "Exif.Nikon3.Quality", "Exif.Nikon1.Quality", "Exif.Nikon2.Quality", "Exif.Nikon3.Quality",
"Exif.Olympus.Quality", "Exif.OlympusCs.Quality", "Exif.Panasonic.Quality", "Exif.Olympus.Quality", "Exif.OlympusCs.Quality", "Exif.Panasonic.Quality",
"Exif.Minolta.Quality", "Exif.MinoltaCsNew.Quality", "Exif.MinoltaCsOld.Quality", "Exif.Sony1.JPEGQuality", "Exif.Sony1.Quality", "Exif.Sony1.Quality2",
"Exif.MinoltaCs5D.Quality", "Exif.MinoltaCs7D.Quality", "Exif.Sony1MltCsA100.Quality", "Exif.Sony1Cs.Quality", "Exif.Sony2.JPEGQuality", "Exif.Sony2.Quality",
"Exif.Sony1.JPEGQuality", "Exif.Sony1.Quality", "Exif.Sony1Cs.Quality", "Exif.Sony2.Quality2", "Exif.Sony2Cs.Quality", "Exif.Minolta.Quality",
"Exif.Sony2.JPEGQuality", "Exif.Sony2.Quality", "Exif.Sony2Cs.Quality", "Exif.MinoltaCsNew.Quality", "Exif.MinoltaCsOld.Quality", "Exif.MinoltaCs5D.Quality",
"Exif.Casio.Quality", "Exif.Casio2.QualityMode", "Exif.Casio2.Quality"}; "Exif.MinoltaCs7D.Quality", "Exif.Sony1MltCsA100.Quality", "Exif.Casio.Quality",
"Exif.Casio2.QualityMode", "Exif.Casio2.Quality"};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
ExifData::const_iterator whiteBalance(const ExifData& ed) { ExifData::const_iterator whiteBalance(const ExifData& ed) {
static const char* keys[] = { static const char* keys[] = {
"Exif.CanonSi.WhiteBalance", "Exif.Fujifilm.WhiteBalance", "Exif.Sigma.WhiteBalance", "Exif.CanonSi.WhiteBalance", "Exif.Fujifilm.WhiteBalance", "Exif.Sigma.WhiteBalance",
"Exif.Nikon1.WhiteBalance", "Exif.Nikon2.WhiteBalance", "Exif.Nikon3.WhiteBalance", "Exif.Nikon1.WhiteBalance", "Exif.Nikon2.WhiteBalance", "Exif.Nikon3.WhiteBalance",
"Exif.Olympus.WhiteBalance", "Exif.OlympusCs.WhiteBalance", "Exif.Panasonic.WhiteBalance", "Exif.Olympus.WhiteBalance", "Exif.OlympusCs.WhiteBalance", "Exif.Panasonic.WhiteBalance",
"Exif.MinoltaCs5D.WhiteBalance", "Exif.MinoltaCs7D.WhiteBalance", "Exif.MinoltaCsNew.WhiteBalance", "Exif.MinoltaCs5D.WhiteBalance", "Exif.MinoltaCs7D.WhiteBalance", "Exif.MinoltaCsNew.WhiteBalance",
"Exif.MinoltaCsOld.WhiteBalance", "Exif.Minolta.WhiteBalance", "Exif.Sony1MltCsA100.WhiteBalance", "Exif.MinoltaCsOld.WhiteBalance", "Exif.Minolta.WhiteBalance", "Exif.Sony1.WhiteBalance",
"Exif.SonyMinolta.WhiteBalance", "Exif.Sony1.WhiteBalance", "Exif.Sony2.WhiteBalance", "Exif.Sony2.WhiteBalance", "Exif.Sony1.WhiteBalance2", "Exif.Sony2.WhiteBalance2",
"Exif.Sony1.WhiteBalance2", "Exif.Sony2.WhiteBalance2", "Exif.Casio.WhiteBalance", "Exif.Sony1MltCsA100.WhiteBalance", "Exif.SonyMinolta.WhiteBalance", "Exif.Casio.WhiteBalance",
"Exif.Casio2.WhiteBalance", "Exif.Casio2.WhiteBalance2", "Exif.Photo.WhiteBalance"}; "Exif.Casio2.WhiteBalance", "Exif.Casio2.WhiteBalance2", "Exif.Photo.WhiteBalance"};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
@ -226,8 +228,9 @@ ExifData::const_iterator lensName(const ExifData& ed) {
"Exif.CanonCs.LensType", "Exif.Photo.LensModel", "Exif.NikonLd1.LensIDNumber", "Exif.CanonCs.LensType", "Exif.Photo.LensModel", "Exif.NikonLd1.LensIDNumber",
"Exif.NikonLd2.LensIDNumber", "Exif.NikonLd3.LensIDNumber", "Exif.Pentax.LensType", "Exif.NikonLd2.LensIDNumber", "Exif.NikonLd3.LensIDNumber", "Exif.Pentax.LensType",
"Exif.PentaxDng.LensType", "Exif.Minolta.LensID", "Exif.SonyMinolta.LensID", "Exif.PentaxDng.LensType", "Exif.Minolta.LensID", "Exif.SonyMinolta.LensID",
"Exif.Sony1.LensID", "Exif.Sony2.LensID", "Exif.OlympusEq.LensType", "Exif.Sony1.LensID", "Exif.Sony2.LensID", "Exif.Sony1.LensSpec",
"Exif.Panasonic.LensType", "Exif.Samsung2.LensType"}; "Exif.Sony2.LensSpec", "Exif.OlympusEq.LensType", "Exif.Panasonic.LensType",
"Exif.Samsung2.LensType"};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
@ -237,7 +240,8 @@ ExifData::const_iterator saturation(const ExifData& ed) {
"Exif.MinoltaCsOld.Saturation", "Exif.MinoltaCs7D.Saturation", "Exif.MinoltaCs5D.Saturation", "Exif.MinoltaCsOld.Saturation", "Exif.MinoltaCs7D.Saturation", "Exif.MinoltaCs5D.Saturation",
"Exif.Fujifilm.Color", "Exif.Nikon3.Saturation", "Exif.Panasonic.Saturation", "Exif.Fujifilm.Color", "Exif.Nikon3.Saturation", "Exif.Panasonic.Saturation",
"Exif.Pentax.Saturation", "Exif.PentaxDng.Saturation", "Exif.Sigma.Saturation", "Exif.Pentax.Saturation", "Exif.PentaxDng.Saturation", "Exif.Sigma.Saturation",
"Exif.Casio.Saturation", "Exif.Casio2.Saturation", "Exif.Casio2.Saturation2"}; "Exif.Sony1.Saturation", "Exif.Sony2.Saturation", "Exif.Casio.Saturation",
"Exif.Casio2.Saturation", "Exif.Casio2.Saturation2"};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
@ -247,19 +251,18 @@ ExifData::const_iterator sharpness(const ExifData& ed) {
"Exif.MinoltaCsNew.Sharpness", "Exif.MinoltaCsOld.Sharpness", "Exif.MinoltaCs7D.Sharpness", "Exif.MinoltaCsNew.Sharpness", "Exif.MinoltaCsOld.Sharpness", "Exif.MinoltaCs7D.Sharpness",
"Exif.MinoltaCs5D.Sharpness", "Exif.Olympus.SharpnessFactor", "Exif.Panasonic.Sharpness", "Exif.MinoltaCs5D.Sharpness", "Exif.Olympus.SharpnessFactor", "Exif.Panasonic.Sharpness",
"Exif.Pentax.Sharpness", "Exif.PentaxDng.Sharpness", "Exif.Sigma.Sharpness", "Exif.Pentax.Sharpness", "Exif.PentaxDng.Sharpness", "Exif.Sigma.Sharpness",
"Exif.Casio.Sharpness", "Exif.Casio2.Sharpness", "Exif.Casio2.Sharpness2"}; "Exif.Sony1.Sharpness", "Exif.Sony2.Sharpness", "Exif.Casio.Sharpness",
"Exif.Casio2.Sharpness", "Exif.Casio2.Sharpness2"};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
ExifData::const_iterator contrast(const ExifData& ed) { ExifData::const_iterator contrast(const ExifData& ed) {
static const char* keys[] = {"Exif.Photo.Contrast", "Exif.CanonCs.Contrast", static const char* keys[] = {"Exif.Photo.Contrast", "Exif.CanonCs.Contrast", "Exif.Fujifilm.Tone",
"Exif.Fujifilm.Tone", "Exif.MinoltaCsNew.Contrast", "Exif.MinoltaCsNew.Contrast", "Exif.MinoltaCsOld.Contrast", "Exif.MinoltaCs7D.Contrast",
"Exif.MinoltaCsOld.Contrast", "Exif.MinoltaCs7D.Contrast", "Exif.MinoltaCs5D.Contrast", "Exif.Olympus.Contrast", "Exif.Panasonic.Contrast",
"Exif.MinoltaCs5D.Contrast", "Exif.Olympus.Contrast", "Exif.Pentax.Contrast", "Exif.PentaxDng.Contrast", "Exif.Sigma.Contrast",
"Exif.Panasonic.Contrast", "Exif.Pentax.Contrast", "Exif.Sony1.Contrast", "Exif.Sony2.Contrast", "Exif.Casio.Contrast",
"Exif.PentaxDng.Contrast", "Exif.Sigma.Contrast", "Exif.Casio2.Contrast", "Exif.Casio2.Contrast2"
"Exif.Casio.Contrast", "Exif.Casio2.Contrast",
"Exif.Casio2.Contrast2"
}; };
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
@ -271,8 +274,9 @@ ExifData::const_iterator sceneCaptureType(const ExifData& ed) {
} }
ExifData::const_iterator meteringMode(const ExifData& ed) { ExifData::const_iterator meteringMode(const ExifData& ed) {
static const char* keys[] = {"Exif.Photo.MeteringMode", "Exif.Image.MeteringMode", "Exif.CanonCs.MeteringMode", static const char* keys[] = {"Exif.Photo.MeteringMode", "Exif.Image.MeteringMode",
"Exif.Sony1MltCsA100.MeteringMode"}; "Exif.CanonCs.MeteringMode", "Exif.Sony1.MeteringMode2",
"Exif.Sony2.MeteringMode2", "Exif.Sony1MltCsA100.MeteringMode"};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
@ -282,7 +286,7 @@ ExifData::const_iterator make(const ExifData& ed) {
} }
ExifData::const_iterator model(const ExifData& ed) { ExifData::const_iterator model(const ExifData& ed) {
static const char* keys[] = {"Exif.Image.Model"}; static const char* keys[] = {"Exif.Image.Model", "Exif.Sony1.SonyModelID", "Exif.Sony2.SonyModelID"};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
@ -307,7 +311,8 @@ ExifData::const_iterator apertureValue(const ExifData& ed) {
} }
ExifData::const_iterator brightnessValue(const ExifData& ed) { ExifData::const_iterator brightnessValue(const ExifData& ed) {
static const char* keys[] = {"Exif.Photo.BrightnessValue", "Exif.Image.BrightnessValue"}; static const char* keys[] = {"Exif.Photo.BrightnessValue", "Exif.Image.BrightnessValue", "Exif.Sony1.Brightness",
"Exif.Sony2.Brightness"};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
@ -337,14 +342,16 @@ ExifData::const_iterator lightSource(const ExifData& ed) {
} }
ExifData::const_iterator flash(const ExifData& ed) { ExifData::const_iterator flash(const ExifData& ed) {
static const char* keys[] = {"Exif.Photo.Flash", "Exif.Image.Flash"}; static const char* keys[] = {"Exif.Photo.Flash", "Exif.Image.Flash", "Exif.Sony1.FlashAction",
"Exif.Sony2.FlashAction"};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
ExifData::const_iterator serialNumber(const ExifData& ed) { ExifData::const_iterator serialNumber(const ExifData& ed) {
static const char* keys[] = { static const char* keys[] = {
"Exif.Image.CameraSerialNumber", "Exif.Canon.SerialNumber", "Exif.Nikon3.SerialNumber", "Exif.Nikon3.SerialNO", "Exif.Image.CameraSerialNumber", "Exif.Canon.SerialNumber", "Exif.Nikon3.SerialNumber",
"Exif.Fujifilm.SerialNumber", "Exif.Olympus.SerialNumber2", "Exif.Sigma.SerialNumber"}; "Exif.Nikon3.SerialNO", "Exif.Fujifilm.SerialNumber", "Exif.Olympus.SerialNumber2",
"Exif.Sigma.SerialNumber", "Exif.Sony1.SerialNumber", "Exif.Sony2.SerialNumber"};
return findMetadatum(ed, keys, std::size(keys)); return findMetadatum(ed, keys, std::size(keys));
} }
@ -392,6 +399,8 @@ ExifData::const_iterator afPoint(const ExifData& ed) {
"Exif.Pentax.AFPointInFocus", "Exif.Pentax.AFPointInFocus",
"Exif.PentaxDng.AFPoint", "Exif.PentaxDng.AFPoint",
"Exif.PentaxDng.AFPointInFocus", "Exif.PentaxDng.AFPointInFocus",
"Exif.Sony1.AFPointSelected",
"Exif.Sony2.AFPointSelected",
"Exif.Sony1Cs.LocalAFAreaPoint", "Exif.Sony1Cs.LocalAFAreaPoint",
"Exif.Sony2Cs.LocalAFAreaPoint", "Exif.Sony2Cs.LocalAFAreaPoint",
"Exif.Sony1Cs2.LocalAFAreaPoint", "Exif.Sony1Cs2.LocalAFAreaPoint",

@ -18,6 +18,14 @@
namespace Exiv2::Internal { namespace Exiv2::Internal {
// -- Standard Minolta Makernotes tags --------------------------------------------------------------- // -- Standard Minolta Makernotes tags ---------------------------------------------------------------
//! Lookup table to translate Minolta Std (tag 0x0115) white balance values to readable labels
constexpr TagDetails minoltaWhiteBalanceStd0x0115[] = {
{0x00, N_("Auto")}, {0x01, N_("Color Temperature/Color Filter")},
{0x10, N_("Daylight")}, {0x20, N_("Cloudy")},
{0x30, N_("Shade")}, {0x40, N_("Tungsten")},
{0x50, N_("Flash")}, {0x60, N_("Fluorescent")},
{0x70, N_("Custom")}};
//! Lookup table to translate Minolta color mode values to readable labels //! Lookup table to translate Minolta color mode values to readable labels
constexpr TagDetails minoltaColorMode[] = { constexpr TagDetails minoltaColorMode[] = {
{0, N_("Natural Color")}, {1, N_("Black & White")}, {2, N_("Vivid Color")}, {3, N_("Solarization")}, {0, N_("Natural Color")}, {1, N_("Black & White")}, {2, N_("Vivid Color")}, {3, N_("Solarization")},
@ -26,9 +34,8 @@ constexpr TagDetails minoltaColorMode[] = {
{17, N_("Night Scene")}, {18, N_("Night Portrait")}}; {17, N_("Night Scene")}, {18, N_("Night Portrait")}};
//! Lookup table to translate Minolta image quality values to readable labels //! Lookup table to translate Minolta image quality values to readable labels
[[maybe_unused]] constexpr TagDetails minoltaImageQuality[] = {{0, N_("Raw")}, {1, N_("Super Fine")}, constexpr TagDetails minoltaImageQuality[] = {{0, N_("Raw")}, {1, N_("Super Fine")}, {2, N_("Fine")},
{2, N_("Fine")}, {3, N_("Standard")}, {3, N_("Standard")}, {4, N_("Economy")}, {5, N_("Extra Fine")}};
{4, N_("Economy")}, {5, N_("Extra Fine")}};
//! Lookup table to translate Minolta image stabilization values //! Lookup table to translate Minolta image stabilization values
constexpr TagDetails minoltaImageStabilization[] = {{1, N_("Off")}, {5, N_("On")}}; constexpr TagDetails minoltaImageStabilization[] = {{1, N_("Off")}, {5, N_("On")}};
@ -68,7 +75,7 @@ constexpr TagInfo MinoltaMakerNote::tagInfo_[] = {
EXV_PRINT_TAG(minoltaColorMode)}, EXV_PRINT_TAG(minoltaColorMode)},
{0x0102, "Quality", N_("Image Quality"), N_("Image quality"), IfdId::minoltaId, SectionId::makerTags, unsignedLong, {0x0102, "Quality", N_("Image Quality"), N_("Image quality"), IfdId::minoltaId, SectionId::makerTags, unsignedLong,
-1, printMinoltaSonyImageQuality}, -1, EXV_PRINT_TAG(minoltaImageQuality)},
// TODO: Tag 0x0103 : quality or image size (see ExifTool doc). // TODO: Tag 0x0103 : quality or image size (see ExifTool doc).
{0x0103, "0x0103", N_("0x0103"), N_("Unknown"), IfdId::minoltaId, SectionId::makerTags, unsignedLong, -1, {0x0103, "0x0103", N_("0x0103"), N_("Unknown"), IfdId::minoltaId, SectionId::makerTags, unsignedLong, -1,
@ -101,7 +108,7 @@ constexpr TagInfo MinoltaMakerNote::tagInfo_[] = {
IfdId::minoltaId, SectionId::makerTags, undefined, -1, printValue}, IfdId::minoltaId, SectionId::makerTags, undefined, -1, printValue},
{0x0115, "WhiteBalance", N_("White Balance"), N_("White balance"), IfdId::minoltaId, SectionId::makerTags, {0x0115, "WhiteBalance", N_("White Balance"), N_("White balance"), IfdId::minoltaId, SectionId::makerTags,
unsignedLong, -1, printMinoltaSonyWhiteBalanceStd}, unsignedLong, -1, EXV_PRINT_TAG(minoltaWhiteBalanceStd0x0115)},
{0x0e00, "PrintIM", N_("Print IM"), N_("PrintIM information"), IfdId::minoltaId, SectionId::makerTags, undefined, {0x0e00, "PrintIM", N_("Print IM"), N_("PrintIM information"), IfdId::minoltaId, SectionId::makerTags, undefined,
-1, printValue}, -1, printValue},
{0x0f00, "CameraSettingsZ1", N_("Camera Settings (Z1)"), N_("Camera Settings (for Z1, DImage X, and F100 models)"), {0x0f00, "CameraSettingsZ1", N_("Camera Settings (Z1)"), N_("Camera Settings (for Z1, DImage X, and F100 models)"),
@ -1768,9 +1775,32 @@ std::ostream& printMinoltaSonyRotation(std::ostream& os, const Value& value, con
//! Lookup table to translate Minolta/Sony scene mode values to readable labels //! Lookup table to translate Minolta/Sony scene mode values to readable labels
constexpr TagDetails minoltaSonySceneMode[] = { constexpr TagDetails minoltaSonySceneMode[] = {
{0, N_("Standard")}, {1, N_("Portrait")}, {2, N_("Text")}, {3, N_("Night Scene")}, {0, N_("Standard")},
{4, N_("Sunset")}, {5, N_("Sports")}, {6, N_("Landscape")}, {7, N_("Night Portrait")}, {1, N_("Portrait")},
{8, N_("Macro")}, {9, N_("Super Macro")}, {16, N_("Auto")}, {17, N_("Night View/Portrait")}}; {2, N_("Text")},
{3, N_("Night Scene")},
{4, N_("Sunset")},
{5, N_("Sports")},
{6, N_("Landscape")},
{7, N_("Night Portrait")},
{8, N_("Macro")},
{9, N_("Super Macro")},
{16, N_("Auto")},
{17, N_("Night View/Portrait")},
{18, N_("Sweep Panorama")},
{19, N_("Handheld Night Shot")},
{20, N_("Anti Motion Blur")},
{21, N_("Cont. Priority AE")},
{22, N_("Auto+")},
{23, N_("3D Sweep Panorama")},
{24, N_("Superior Auto")},
{25, N_("High Sensitivity")},
{26, N_("Fireworks")},
{27, N_("Food")},
{28, N_("Pet")},
{33, N_("HDR")},
{0xffff, N_("n/a")},
};
std::ostream& printMinoltaSonySceneMode(std::ostream& os, const Value& value, const ExifData* metadata) { std::ostream& printMinoltaSonySceneMode(std::ostream& os, const Value& value, const ExifData* metadata) {
return EXV_PRINT_TAG(minoltaSonySceneMode)(os, value, metadata); return EXV_PRINT_TAG(minoltaSonySceneMode)(os, value, metadata);
@ -1778,18 +1808,6 @@ std::ostream& printMinoltaSonySceneMode(std::ostream& os, const Value& value, co
// ---------------------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------------------
//! Lookup table to translate Sony/Minolta image quality values to readable labels
constexpr TagDetails minoltaSonyImageQuality[] = {
{0, N_("Raw")}, {1, N_("Super Fine")}, {2, N_("Fine")},
{3, N_("Standard")}, {4, N_("Economy")}, {5, N_("Extra Fine")},
{6, N_("Raw + JPEG")}, {7, N_("Compressed Raw")}, {8, N_("Compressed Raw + JPEG")}};
std::ostream& printMinoltaSonyImageQuality(std::ostream& os, const Value& value, const ExifData* metadata) {
return EXV_PRINT_TAG(minoltaSonyImageQuality)(os, value, metadata);
}
// ----------------------------------------------------------------------------------------------------
//! Lookup table to translate Sony/Minolta teleconverter model values to readable labels //! Lookup table to translate Sony/Minolta teleconverter model values to readable labels
constexpr TagDetails minoltaSonyTeleconverterModel[] = {{0x00, N_("None")}, constexpr TagDetails minoltaSonyTeleconverterModel[] = {{0x00, N_("None")},
{0x04, N_("Minolta/Sony AF 1.4x APO (D) (0x04)")}, {0x04, N_("Minolta/Sony AF 1.4x APO (D) (0x04)")},
@ -1807,18 +1825,6 @@ std::ostream& printMinoltaSonyTeleconverterModel(std::ostream& os, const Value&
// ---------------------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------------------
//! Lookup table to translate Sony/Minolta Std camera settings white balance values to readable labels
constexpr TagDetails minoltaSonyWhiteBalanceStd[] = {
{0x00, N_("Auto")}, {0x01, N_("Color Temperature/Color Filter")},
{0x10, N_("Daylight")}, {0x20, N_("Cloudy")},
{0x30, N_("Shade")}, {0x40, N_("Tungsten")},
{0x50, N_("Flash")}, {0x60, N_("Fluorescent")},
{0x70, N_("Custom")}};
std::ostream& printMinoltaSonyWhiteBalanceStd(std::ostream& os, const Value& value, const ExifData* metadata) {
return EXV_PRINT_TAG(minoltaSonyWhiteBalanceStd)(os, value, metadata);
}
//! Lookup table to translate Sony/Minolta zone matching values to readable labels //! Lookup table to translate Sony/Minolta zone matching values to readable labels
constexpr TagDetails minoltaSonyZoneMatching[] = {{0, N_("ISO Setting Used")}, {1, N_("High Key")}, {2, N_("Low Key")}}; constexpr TagDetails minoltaSonyZoneMatching[] = {{0, N_("ISO Setting Used")}, {1, N_("High Key")}, {2, N_("Low Key")}};

File diff suppressed because it is too large Load Diff

@ -37,6 +37,54 @@ class SonyMakerNote {
//! @name Print functions for Sony %MakerNote tags //! @name Print functions for Sony %MakerNote tags
//@{ //@{
//! Print Sony white balance fine tune values
static std::ostream& printWhiteBalanceFineTune(std::ostream&, const Value&, const ExifData*);
//! Print Sony multi-burst mode values
static std::ostream& printMultiBurstMode(std::ostream&, const Value&, const ExifData*);
//! Print Sony multi-burst size values
static std::ostream& printMultiBurstSize(std::ostream&, const Value&, const ExifData*);
//! Print Sony HDR values
static std::ostream& printAutoHDRStd(std::ostream&, const Value&, const ExifData*);
//! Print Sony white balance shift amber/blue or green/magenta values
static std::ostream& printWBShiftABGM(std::ostream&, const Value&, const ExifData*);
//! Print Sony focus mode 2 values
static std::ostream& printFocusMode2(std::ostream&, const Value&, const ExifData*);
//! Print Sony auto-focus area mode Settings values
static std::ostream& printAFAreaModeSetting(std::ostream&, const Value&, const ExifData*);
//! Print Sony flexible spot position values
static std::ostream& printFlexibleSpotPosition(std::ostream&, const Value&, const ExifData*);
//! Print Sony auto-focus point selected values
static std::ostream& printAFPointSelected(std::ostream&, const Value&, const ExifData*);
//! Print Sony auto-focus points used values
static std::ostream& printAFPointsUsed(std::ostream&, const Value&, const ExifData*);
//! Print Sony auto-focus tracking values
static std::ostream& printAFTracking(std::ostream&, const Value&, const ExifData*);
//! Print Sony focal plane auto-focus points used values
static std::ostream& printFocalPlaneAFPointsUsed(std::ostream&, const Value&, const ExifData*);
//! Print Sony white balance shift amber/blue and green/magenta precise values
static std::ostream& printWBShiftABGMPrecise(std::ostream&, const Value&, const ExifData*);
//! Print Sony variable low pass filter values
static std::ostream& printExposureStandardAdjustment(std::ostream&, const Value&, const ExifData*);
//! Print Sony pixel shift information values
static std::ostream& printPixelShiftInfo(std::ostream&, const Value&, const ExifData*);
//! Print Sony focus frame size values
static std::ostream& printFocusFrameSize(std::ostream&, const Value&, const ExifData*);
//! Print Sony color temperature values
static std::ostream& printColorTemperature(std::ostream&, const Value&, const ExifData*);
//! Print Sony color compensation filter values
static std::ostream& printColorCompensationFilter(std::ostream&, const Value&, const ExifData*);
//! Print Sony lens specification values
static std::ostream& printLensSpec(std::ostream&, const Value&, const ExifData*);
//! Print Sony focus mode values
static std::ostream& printFocusMode(std::ostream&, const Value&, const ExifData*);
//! Print Sony full and preview image size values
static std::ostream& printImageSize(std::ostream&, const Value&, const ExifData*);
//! Print Sony auto-focus area mode values
static std::ostream& printAFMode(std::ostream&, const Value&, const ExifData*);
//! Print Sony focus mode 3 values
static std::ostream& printFocusMode3(std::ostream&, const Value&, const ExifData*);
//! Print Sony high ISO noise reduction 2 values
static std::ostream& printHighISONoiseReduction2(std::ostream&, const Value&, const ExifData*);
//! Print Sony SonyMisc1 CameraTemperature values (in degrees Celsius) //! Print Sony SonyMisc1 CameraTemperature values (in degrees Celsius)
static std::ostream& printSonyMisc1CameraTemperature(std::ostream&, const Value&, const ExifData*); static std::ostream& printSonyMisc1CameraTemperature(std::ostream&, const Value&, const ExifData*);
//! Print Sony2Fp Focus Mode value //! Print Sony2Fp Focus Mode value
@ -59,10 +107,6 @@ class SonyMakerNote {
static std::ostream& printSonyMisc3cModelReleaseYear(std::ostream&, const Value&, const ExifData* metadata); static std::ostream& printSonyMisc3cModelReleaseYear(std::ostream&, const Value&, const ExifData* metadata);
//! Print SonyMisc3c quality 2 value //! Print SonyMisc3c quality 2 value
static std::ostream& printSonyMisc3cQuality2(std::ostream&, const Value&, const ExifData* metadata); static std::ostream& printSonyMisc3cQuality2(std::ostream&, const Value&, const ExifData* metadata);
//! Print Sony Camera Model
static std::ostream& print0xb000(std::ostream&, const Value&, const ExifData*);
//! Print Full and Preview Image size
static std::ostream& printImageSize(std::ostream&, const Value&, const ExifData*);
private: private:
//! Tag information //! Tag information

@ -5,6 +5,7 @@
// ***************************************************************************** // *****************************************************************************
// included header files // included header files
#include "error.hpp"
#include "tags.hpp" #include "tags.hpp"
// ***************************************************************************** // *****************************************************************************
@ -38,12 +39,38 @@ struct TagDetails {
} }
}; // struct TagDetails }; // struct TagDetails
/*!
@brief Helper structure for lookup tables for translations of string
tag values to human readable labels.
*/
struct StringTagDetails {
const char* val_; //!< Tag value
const char* label_; //!< Translation of the tag value
//! Comparison operator for use with the find template
bool operator==(const char* key) const {
return (strcmp(val_, key) == 0);
}
bool operator==(const std::string key) const {
return (key == val_);
}
}; // struct TagDetails
/*! /*!
@brief Helper structure for lookup tables for translations of bitmask @brief Helper structure for lookup tables for translations of bitmask
values to human readable labels. values to human readable labels.
*/ */
using TagDetailsBitmask = std::pair<uint32_t, const char*>; using TagDetailsBitmask = std::pair<uint32_t, const char*>;
/*!
@brief Helper structure for lookup tables for translations of lists of
individual bit values to human readable labels.
Required to be sorted by the first element (e.g.,
{{0, N_("Center")}, {1, N_("Top")}, {2, N_("Upper-right")},
{3, N_("Right")}})
*/
using TagDetailsBitlistSorted = std::pair<uint32_t, const char*>;
/*! /*!
@brief Helper structure for lookup tables for translations of controlled @brief Helper structure for lookup tables for translations of controlled
vocabulary strings to their descriptions. vocabulary strings to their descriptions.
@ -62,11 +89,95 @@ struct TagVocabulary {
bool operator==(const std::string& key) const; bool operator==(const std::string& key) const;
}; // struct TagDetails }; // struct TagDetails
/*!
@brief Generic pretty-print function to translate a full string value to a description
by looking up a reference table.
*/
template <size_t N, const StringTagDetails (&array)[N]>
std::ostream& printTagString(std::ostream& os, const std::string value, const ExifData*) {
const StringTagDetails* td = find(array, value);
if (td) {
os << exvGettext(td->label_);
} else {
os << "(" << value << ")";
}
return os;
}
/*!
@brief Generic pretty-print function to translate the full string value in Value, to a description
by looking up a reference table.
*/
template <size_t N, const StringTagDetails (&array)[N]>
std::ostream& printTagString(std::ostream& os, const Value& value, const ExifData* data) {
return printTagString<N, array>(os, value.toString(0), data);
}
//! Shortcut for the printStringTag template which requires typing the array name only once.
#define EXV_PRINT_STRING_TAG_1(array) printTagString<std::size(array), array>
/*!
@brief Generic pretty-print function to translate the first 2 values in Value as a string,
to a description by looking up a reference table.
*/
template <size_t N, const StringTagDetails (&array)[N]>
std::ostream& printTagString2(std::ostream& os, const Value& value, const ExifData* data) {
if (value.count() < 2)
return os << "(" << value << ")";
std::string temp = value.toString(0) + " " + value.toString(1);
return printTagString<N, array>(os, temp, data);
}
//! Shortcut for the printTagString2 template which requires typing the array name only once.
#define EXV_PRINT_STRING_TAG_2(array) printTagString2<std::size(array), array>
/*!
@brief Generic pretty-print function to translate the first 4 values in Value as a string,
to a description by looking up a reference table.
*/
template <size_t N, const StringTagDetails (&array)[N]>
std::ostream& printTagString4(std::ostream& os, const Value& value, const ExifData* data) {
if (value.count() < 4)
return os << "(" << value << ")";
std::string temp = value.toString(0) + " " + value.toString(1) + " " + value.toString(2) + " " + value.toString(3);
return printTagString<N, array>(os, temp, data);
}
//! Shortcut for the printTagString4 template which requires typing the array name only once.
#define EXV_PRINT_STRING_TAG_4(array) printTagString4<std::size(array), array>
/*!
@brief Generic pretty-print function to translate a long value to a description
by looking up a reference table. Unknown values are passed through without error.
*/
template <size_t N, const TagDetails (&array)[N]>
std::ostream& printTagNoError(std::ostream& os, const int64_t value, const ExifData*) {
const TagDetails* td = find(array, value);
if (td) {
os << exvGettext(td->label_);
} else {
os << value;
}
return os;
}
/*!
@brief Generic pretty-print function to translate the full string value in Value, to a description
by looking up a reference table.
*/
template <size_t N, const TagDetails (&array)[N]>
std::ostream& printTagNoError(std::ostream& os, const Value& value, const ExifData* data) {
return printTagNoError<N, array>(os, value.toInt64(), data);
}
//! Shortcut for the printStringTag template which requires typing the array name only once.
#define EXV_PRINT_TAG_NO_ERROR(array) printTagNoError<std::size(array), array>
/*! /*!
@brief Generic pretty-print function to translate a long value to a description @brief Generic pretty-print function to translate a long value to a description
by looking up a reference table. by looking up a reference table.
*/ */
template <int N, const TagDetails (&array)[N]> template <size_t N, const TagDetails (&array)[N]>
std::ostream& printTag(std::ostream& os, const int64_t value, const ExifData*) { std::ostream& printTag(std::ostream& os, const int64_t value, const ExifData*) {
const TagDetails* td = find(array, value); const TagDetails* td = find(array, value);
if (td) { if (td) {
@ -81,7 +192,7 @@ std::ostream& printTag(std::ostream& os, const int64_t value, const ExifData*) {
@brief Generic pretty-print function to translate the first long value in Value, to a description @brief Generic pretty-print function to translate the first long value in Value, to a description
by looking up a reference table. by looking up a reference table.
*/ */
template <int N, const TagDetails (&array)[N]> template <size_t N, const TagDetails (&array)[N]>
std::ostream& printTag(std::ostream& os, const Value& value, const ExifData* data) { std::ostream& printTag(std::ostream& os, const Value& value, const ExifData* data) {
return printTag<N, array>(os, value.toInt64(), data); return printTag<N, array>(os, value.toInt64(), data);
} }
@ -93,7 +204,7 @@ std::ostream& printTag(std::ostream& os, const Value& value, const ExifData* dat
@brief Generic print function to translate a long value to a description @brief Generic print function to translate a long value to a description
by looking up bitmasks in a reference table. by looking up bitmasks in a reference table.
*/ */
template <int N, const TagDetailsBitmask (&array)[N]> template <size_t N, const TagDetailsBitmask (&array)[N]>
std::ostream& printTagBitmask(std::ostream& os, const Value& value, const ExifData*) { std::ostream& printTagBitmask(std::ostream& os, const Value& value, const ExifData*) {
const auto val = value.toUint32(); const auto val = value.toUint32();
if (val == 0 && N > 0) { if (val == 0 && N > 0) {
@ -102,7 +213,7 @@ std::ostream& printTagBitmask(std::ostream& os, const Value& value, const ExifDa
return os << exvGettext(label); return os << exvGettext(label);
} }
bool sep = false; bool sep = false;
for (int i = 0; i < N; ++i) { for (size_t i = 0; i < N; ++i) {
// *& acrobatics is a workaround for a MSVC 7.1 bug // *& acrobatics is a workaround for a MSVC 7.1 bug
auto [mask, label] = *(array + i); auto [mask, label] = *(array + i);
@ -121,11 +232,73 @@ std::ostream& printTagBitmask(std::ostream& os, const Value& value, const ExifDa
//! Shortcut for the printTagBitmask template which requires typing the array name only once. //! Shortcut for the printTagBitmask template which requires typing the array name only once.
#define EXV_PRINT_TAG_BITMASK(array) printTagBitmask<std::size(array), array> #define EXV_PRINT_TAG_BITMASK(array) printTagBitmask<std::size(array), array>
/*!
@brief Generic print function to translate the bits in the values
by looking up the indices in a reference table. The function
processes the values using little endian format. Any bits not
found in the array are also output.
*/
template <size_t N, const TagDetailsBitlistSorted (&array)[N]>
std::ostream& printTagBitlistAllLE(std::ostream& os, const Value& value, const ExifData*) {
if (N == 0)
throw Error(ErrorCode::kerErrorMessage, std::string("Passed zero length TagDetailsBitlistSorted"));
uint32_t vN = 0;
uint32_t currentVNBit = 0;
size_t lastArrayPos = 0; // Prevents unneeded searching of array
constexpr auto maxArrayBit = (array + N - 1)->first;
auto allVNZero = true;
auto useSep = false;
// For each value
for (size_t i = 0; i < value.count(); i++) {
vN = value.toUint32(i);
if (vN == 0) { // If all bits zero, then nothing to process
currentVNBit += 8;
continue;
}
allVNZero = false;
// Cycle through every bit in that byte
for (auto j = 0; j < 8; j++, currentVNBit++) {
if ((vN >> j & 0x01) == 0) { // If bit not set, then nothing to process
continue;
}
if (currentVNBit > maxArrayBit) { // If beyond array values, output unknown index
os << ", [" << currentVNBit << "]";
continue;
}
// Check to see if the numbered bit is found in the array
for (size_t k = lastArrayPos; k < N; ++k) {
// *& acrobatics is a workaround for a MSVC 7.1 bug
auto [bit, label] = *(array + k);
if (currentVNBit == bit) {
lastArrayPos = k;
if (useSep) {
os << ", " << exvGettext(label);
} else {
os << exvGettext(label);
useSep = true;
}
break;
}
}
}
}
if (allVNZero)
os << exvGettext("None");
return os;
}
//! Shortcut for the printTagBitlistAllLE template which requires typing the array name only once.
#define EXV_PRINT_TAG_BITLIST_ALL_LE(array) printTagBitlistAllLE<std::size(array), array>
/*! /*!
@brief Generic pretty-print function to translate a controlled vocabulary value (string) @brief Generic pretty-print function to translate a controlled vocabulary value (string)
to a description by looking up a reference table. to a description by looking up a reference table.
*/ */
template <int N, const TagVocabulary (&array)[N]> template <size_t N, const TagVocabulary (&array)[N]>
std::ostream& printTagVocabulary(std::ostream& os, const Value& value, const ExifData*) { std::ostream& printTagVocabulary(std::ostream& os, const Value& value, const ExifData*) {
const TagVocabulary* td = find(array, value.toString()); const TagVocabulary* td = find(array, value.toString());
if (td) { if (td) {
@ -139,7 +312,7 @@ std::ostream& printTagVocabulary(std::ostream& os, const Value& value, const Exi
//! Shortcut for the printTagVocabulary template which requires typing the array name only once. //! Shortcut for the printTagVocabulary template which requires typing the array name only once.
#define EXV_PRINT_VOCABULARY(array) printTagVocabulary<std::size(array), array> #define EXV_PRINT_VOCABULARY(array) printTagVocabulary<std::size(array), array>
template <int N, const TagVocabulary (&array)[N]> template <size_t N, const TagVocabulary (&array)[N]>
std::ostream& printTagVocabularyMulti(std::ostream& os, const Value& value, const ExifData*) { std::ostream& printTagVocabularyMulti(std::ostream& os, const Value& value, const ExifData*) {
if (value.count() == 0) { if (value.count() == 0) {
os << "(" << value << ")"; os << "(" << value << ")";

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1,303 +1,303 @@
----- Some IFD0 tags ----- Some IFD0 tags
Exif.Image.Model 0x0110 IFD0 Ascii 7 Test 1 Exif.Image.Model 0x0110 IFD0 Ascii 7 Test 1
Exif.Image.SamplesPerPixel 0x0115 IFD0 Short 4 160 161 162 163 Exif.Image.SamplesPerPixel 0x0115 IFD0 Short 4 160 161 162 163
Exif.Image.XResolution 0x011a IFD0 SLong 4 -2 -1 0 1 Exif.Image.XResolution 0x011a IFD0 SLong 4 -2 -1 0 1
Exif.Image.YResolution 0x011b IFD0 SRational 4 -2/3 -1/3 0/3 1/3 Exif.Image.YResolution 0x011b IFD0 SRational 4 -2/3 -1/3 0/3 1/3
Exif.Image.WhitePoint 0x013e IFD0 Undefined 4 255 254 253 252 Exif.Image.WhitePoint 0x013e IFD0 Undefined 4 255 254 253 252
----- One Exif tag ----- One Exif tag
Exif.Image.ExifTag 0x8769 IFD0 Long 1 26 Exif.Image.ExifTag 0x8769 IFD0 Long 1 26
Exif.Photo.DateTimeOriginal 0x9003 Exif Ascii 7 Test 2 Exif.Photo.DateTimeOriginal 0x9003 Exif Ascii 7 Test 2
----- Canon MakerNote tags ----- Canon MakerNote tags
Exif.Image.Make 0x010f IFD0 Ascii 6 Canon Exif.Image.Make 0x010f IFD0 Ascii 6 Canon
Exif.Image.Model 0x0110 IFD0 Ascii 20 Canon PowerShot S40 Exif.Image.Model 0x0110 IFD0 Ascii 20 Canon PowerShot S40
Exif.Image.ExifTag 0x8769 IFD0 Long 1 76 Exif.Image.ExifTag 0x8769 IFD0 Long 1 76
Exif.Photo.MakerNote 0x927c Exif Undefined 118 6 0 205 171 2 0 22 0 0 0 172 0 0 0 1 0 3 0 3 0 0 0 194 0 0 0 4 0 3 0 6 0 0 0 200 0 0 0 15 0 3 0 2 0 0 0 4 0 43 0 18 0 3 0 2 0 0 0 0 0 44 0 5 0 3 0 2 0 0 0 0 0 45 0 0 0 0 0 65 32 67 97 110 111 110 32 109 97 107 101 114 110 111 116 101 32 116 97 103 0 6 0 0 0 41 0 12 0 0 0 0 0 0 0 0 0 42 0 Exif.Photo.MakerNote 0x927c Exif Undefined 118 6 0 205 171 2 0 22 0 0 0 172 0 0 0 1 0 3 0 3 0 0 0 194 0 0 0 4 0 3 0 6 0 0 0 200 0 0 0 15 0 3 0 2 0 0 0 4 0 43 0 18 0 3 0 2 0 0 0 0 0 44 0 5 0 3 0 2 0 0 0 0 0 45 0 0 0 0 0 65 32 67 97 110 111 110 32 109 97 107 101 114 110 111 116 101 32 116 97 103 0 6 0 0 0 41 0 12 0 0 0 0 0 0 0 0 0 42 0
Exif.MakerNote.Offset 0x0001 Makernote Long 1 94 Exif.MakerNote.Offset 0x0001 Makernote Long 1 94
Exif.MakerNote.ByteOrder 0x0002 Makernote Ascii 3 II Exif.MakerNote.ByteOrder 0x0002 Makernote Ascii 3 II
Exif.Canon.0xabcd 0xabcd Makernote Ascii 22 A Canon makernote tag Exif.Canon.0xabcd 0xabcd Makernote Ascii 22 A Canon makernote tag
Exif.CanonCs.0x0000 0x0000 Makernote Short 1 6 Exif.CanonCs.0x0000 0x0000 Makernote Short 1 6
Exif.CanonCs.Macro 0x0001 Makernote Short 1 0 Exif.CanonCs.Macro 0x0001 Makernote Short 1 0
Exif.CanonCs.Selftimer 0x0002 Makernote Short 1 41 Exif.CanonCs.Selftimer 0x0002 Makernote Short 1 41
Exif.CanonSi.0x0000 0x0000 Makernote Short 1 12 Exif.CanonSi.0x0000 0x0000 Makernote Short 1 12
Exif.CanonSi.AutoISO 0x0001 Makernote Short 1 0 Exif.CanonSi.AutoISO 0x0001 Makernote Short 1 0
Exif.CanonSi.ISOSpeed 0x0002 Makernote Short 1 0 Exif.CanonSi.ISOSpeed 0x0002 Makernote Short 1 0
Exif.CanonSi.MeasuredEV 0x0003 Makernote Short 1 0 Exif.CanonSi.MeasuredEV 0x0003 Makernote Short 1 0
Exif.CanonSi.TargetAperture 0x0004 Makernote Short 1 0 Exif.CanonSi.TargetAperture 0x0004 Makernote Short 1 0
Exif.CanonSi.TargetShutterSpeed 0x0005 Makernote Short 1 42 Exif.CanonSi.TargetShutterSpeed 0x0005 Makernote Short 1 42
Exif.CanonCf.0x0000 0x0000 Makernote Short 1 4 Exif.CanonCf.0x0000 0x0000 Makernote Short 1 4
Exif.CanonCf.NoiseReduction 0x0001 Makernote Short 1 43 Exif.CanonCf.NoiseReduction 0x0001 Makernote Short 1 43
Exif.CanonPi.0x0000 0x0000 Makernote Short 1 0 Exif.CanonPi.0x0000 0x0000 Makernote Short 1 0
Exif.CanonPi.0x0001 0x0001 Makernote Short 1 44 Exif.CanonPi.0x0001 0x0001 Makernote Short 1 44
Exif.CanonPa.0x0000 0x0000 Makernote Short 1 0 Exif.CanonPa.0x0000 0x0000 Makernote Short 1 0
Exif.CanonPa.0x0001 0x0001 Makernote Short 1 45 Exif.CanonPa.0x0001 0x0001 Makernote Short 1 45
----- Non-intrusive writing of special Canon MakerNote tags ----- Non-intrusive writing of special Canon MakerNote tags
Exif.Image.Make 0x010f IFD0 Ascii 6 Canon Exif.Image.Make 0x010f IFD0 Ascii 6 Canon
Exif.Image.Model 0x0110 IFD0 Ascii 20 Canon PowerShot S40 Exif.Image.Model 0x0110 IFD0 Ascii 20 Canon PowerShot S40
Exif.Image.ExifTag 0x8769 IFD0 Long 1 76 Exif.Image.ExifTag 0x8769 IFD0 Long 1 76
Exif.Photo.MakerNote 0x927c Exif Undefined 118 6 0 205 171 2 0 22 0 0 0 172 0 0 0 1 0 3 0 3 0 0 0 194 0 0 0 4 0 3 0 6 0 0 0 200 0 0 0 15 0 3 0 2 0 0 0 4 0 43 0 18 0 3 0 2 0 0 0 0 0 44 0 5 0 3 0 2 0 0 0 0 0 45 0 0 0 0 0 65 32 67 97 110 111 110 32 109 97 107 101 114 110 111 116 101 32 116 97 103 0 6 0 88 0 41 0 12 0 0 0 0 0 0 0 99 0 42 0 Exif.Photo.MakerNote 0x927c Exif Undefined 118 6 0 205 171 2 0 22 0 0 0 172 0 0 0 1 0 3 0 3 0 0 0 194 0 0 0 4 0 3 0 6 0 0 0 200 0 0 0 15 0 3 0 2 0 0 0 4 0 43 0 18 0 3 0 2 0 0 0 0 0 44 0 5 0 3 0 2 0 0 0 0 0 45 0 0 0 0 0 65 32 67 97 110 111 110 32 109 97 107 101 114 110 111 116 101 32 116 97 103 0 6 0 88 0 41 0 12 0 0 0 0 0 0 0 99 0 42 0
Exif.MakerNote.Offset 0x0001 Makernote Long 1 94 Exif.MakerNote.Offset 0x0001 Makernote Long 1 94
Exif.MakerNote.ByteOrder 0x0002 Makernote Ascii 3 II Exif.MakerNote.ByteOrder 0x0002 Makernote Ascii 3 II
Exif.Canon.0xabcd 0xabcd Makernote Ascii 22 A Canon makernote tag Exif.Canon.0xabcd 0xabcd Makernote Ascii 22 A Canon makernote tag
Exif.CanonCs.0x0000 0x0000 Makernote Short 1 6 Exif.CanonCs.0x0000 0x0000 Makernote Short 1 6
Exif.CanonCs.Macro 0x0001 Makernote Short 1 88 Exif.CanonCs.Macro 0x0001 Makernote Short 1 88
Exif.CanonCs.Selftimer 0x0002 Makernote Short 1 41 Exif.CanonCs.Selftimer 0x0002 Makernote Short 1 41
Exif.CanonSi.0x0000 0x0000 Makernote Short 1 12 Exif.CanonSi.0x0000 0x0000 Makernote Short 1 12
Exif.CanonSi.AutoISO 0x0001 Makernote Short 1 0 Exif.CanonSi.AutoISO 0x0001 Makernote Short 1 0
Exif.CanonSi.ISOSpeed 0x0002 Makernote Short 1 0 Exif.CanonSi.ISOSpeed 0x0002 Makernote Short 1 0
Exif.CanonSi.MeasuredEV 0x0003 Makernote Short 1 0 Exif.CanonSi.MeasuredEV 0x0003 Makernote Short 1 0
Exif.CanonSi.TargetAperture 0x0004 Makernote Short 1 99 Exif.CanonSi.TargetAperture 0x0004 Makernote Short 1 99
Exif.CanonSi.TargetShutterSpeed 0x0005 Makernote Short 1 42 Exif.CanonSi.TargetShutterSpeed 0x0005 Makernote Short 1 42
Exif.CanonCf.0x0000 0x0000 Makernote Short 1 4 Exif.CanonCf.0x0000 0x0000 Makernote Short 1 4
Exif.CanonCf.NoiseReduction 0x0001 Makernote Short 1 43 Exif.CanonCf.NoiseReduction 0x0001 Makernote Short 1 43
Exif.CanonPi.0x0000 0x0000 Makernote Short 1 0 Exif.CanonPi.0x0000 0x0000 Makernote Short 1 0
Exif.CanonPi.0x0001 0x0001 Makernote Short 1 44 Exif.CanonPi.0x0001 0x0001 Makernote Short 1 44
Exif.CanonPa.0x0000 0x0000 Makernote Short 1 0 Exif.CanonPa.0x0000 0x0000 Makernote Short 1 0
Exif.CanonPa.0x0001 0x0001 Makernote Short 1 45 Exif.CanonPa.0x0001 0x0001 Makernote Short 1 45
----- One Fujifilm MakerNote tag ----- One Fujifilm MakerNote tag
Exif.Image.Make 0x010f IFD0 Ascii 9 FUJIFILM Exif.Image.Make 0x010f IFD0 Ascii 9 FUJIFILM
Exif.Image.Model 0x0110 IFD0 Ascii 13 FinePixS2Pro Exif.Image.Model 0x0110 IFD0 Ascii 13 FinePixS2Pro
Exif.Image.ExifTag 0x8769 IFD0 Long 1 74 Exif.Image.ExifTag 0x8769 IFD0 Long 1 74
Exif.Photo.MakerNote 0x927c Exif Undefined 54 70 85 74 73 70 73 76 77 12 0 0 0 1 0 0 16 2 0 23 0 0 0 30 0 0 0 0 0 0 0 65 32 70 117 106 105 102 105 108 109 32 81 85 65 76 73 84 89 32 116 97 103 0 0 Exif.Photo.MakerNote 0x927c Exif Undefined 54 70 85 74 73 70 73 76 77 12 0 0 0 1 0 0 16 2 0 23 0 0 0 30 0 0 0 0 0 0 0 65 32 70 117 106 105 102 105 108 109 32 81 85 65 76 73 84 89 32 116 97 103 0 0
Exif.MakerNote.Offset 0x0001 Makernote Long 1 92 Exif.MakerNote.Offset 0x0001 Makernote Long 1 92
Exif.MakerNote.ByteOrder 0x0002 Makernote Ascii 3 II Exif.MakerNote.ByteOrder 0x0002 Makernote Ascii 3 II
Exif.Fujifilm.Quality 0x1000 Makernote Ascii 23 A Fujifilm QUALITY tag Exif.Fujifilm.Quality 0x1000 Makernote Ascii 23 A Fujifilm QUALITY tag
----- One Sigma/Foveon MakerNote tag ----- One Sigma/Foveon MakerNote tag
Exif.Image.Make 0x010f IFD0 Ascii 6 SIGMA Exif.Image.Make 0x010f IFD0 Ascii 6 SIGMA
Exif.Image.Model 0x0110 IFD0 Ascii 11 SIGMA SD10 Exif.Image.Model 0x0110 IFD0 Ascii 11 SIGMA SD10
Exif.Image.ExifTag 0x8769 IFD0 Long 1 68 Exif.Image.ExifTag 0x8769 IFD0 Long 1 68
Exif.Photo.MakerNote 0x927c Exif Undefined 46 83 73 71 77 65 0 0 0 1 0 1 0 24 0 2 0 17 0 0 0 114 0 0 0 0 0 0 0 83 111 102 116 119 97 114 101 63 32 69 120 105 118 50 33 0 0 Exif.Photo.MakerNote 0x927c Exif Undefined 46 83 73 71 77 65 0 0 0 1 0 1 0 24 0 2 0 17 0 0 0 114 0 0 0 0 0 0 0 83 111 102 116 119 97 114 101 63 32 69 120 105 118 50 33 0 0
Exif.MakerNote.Offset 0x0001 Makernote Long 1 86 Exif.MakerNote.Offset 0x0001 Makernote Long 1 86
Exif.MakerNote.ByteOrder 0x0002 Makernote Ascii 3 II Exif.MakerNote.ByteOrder 0x0002 Makernote Ascii 3 II
Exif.Sigma.Software 0x0018 Makernote Ascii 17 Software? Exiv2! Exif.Sigma.Software 0x0018 Makernote Ascii 17 Software? Exiv2!
----- One Nikon1 MakerNote tag ----- One Nikon1 MakerNote tag
Exif.Image.Make 0x010f IFD0 Ascii 6 NIKON Exif.Image.Make 0x010f IFD0 Ascii 6 NIKON
Exif.Image.Model 0x0110 IFD0 Ascii 5 E990 Exif.Image.Model 0x0110 IFD0 Ascii 5 E990
Exif.Image.ExifTag 0x8769 IFD0 Long 1 62 Exif.Image.ExifTag 0x8769 IFD0 Long 1 62
Exif.Photo.MakerNote 0x927c Exif Undefined 44 1 0 128 0 2 0 25 0 0 0 98 0 0 0 0 0 0 0 73 109 97 103 101 65 100 106 117 115 116 109 101 110 116 32 98 121 32 69 120 105 118 50 0 0 Exif.Photo.MakerNote 0x927c Exif Undefined 44 1 0 128 0 2 0 25 0 0 0 98 0 0 0 0 0 0 0 73 109 97 103 101 65 100 106 117 115 116 109 101 110 116 32 98 121 32 69 120 105 118 50 0 0
Exif.MakerNote.Offset 0x0001 Makernote Long 1 80 Exif.MakerNote.Offset 0x0001 Makernote Long 1 80
Exif.MakerNote.ByteOrder 0x0002 Makernote Ascii 3 II Exif.MakerNote.ByteOrder 0x0002 Makernote Ascii 3 II
Exif.Nikon1.ImageAdjustment 0x0080 Makernote Ascii 25 ImageAdjustment by Exiv2 Exif.Nikon1.ImageAdjustment 0x0080 Makernote Ascii 25 ImageAdjustment by Exiv2
----- One Nikon2 MakerNote tag ----- One Nikon2 MakerNote tag
Exif.Image.Make 0x010f IFD0 Ascii 6 NIKON Exif.Image.Make 0x010f IFD0 Ascii 6 NIKON
Exif.Image.Model 0x0110 IFD0 Ascii 5 E950 Exif.Image.Model 0x0110 IFD0 Ascii 5 E950
Exif.Image.ExifTag 0x8769 IFD0 Long 1 62 Exif.Image.ExifTag 0x8769 IFD0 Long 1 62
Exif.Photo.MakerNote 0x927c Exif Undefined 48 78 105 107 111 110 0 1 0 1 0 255 255 2 0 22 0 0 0 106 0 0 0 0 0 0 0 65 110 32 111 98 115 99 117 114 101 32 78 105 107 111 110 50 32 116 97 103 0 Exif.Photo.MakerNote 0x927c Exif Undefined 48 78 105 107 111 110 0 1 0 1 0 255 255 2 0 22 0 0 0 106 0 0 0 0 0 0 0 65 110 32 111 98 115 99 117 114 101 32 78 105 107 111 110 50 32 116 97 103 0
Exif.MakerNote.Offset 0x0001 Makernote Long 1 80 Exif.MakerNote.Offset 0x0001 Makernote Long 1 80
Exif.MakerNote.ByteOrder 0x0002 Makernote Ascii 3 II Exif.MakerNote.ByteOrder 0x0002 Makernote Ascii 3 II
Exif.Nikon2.0xffff 0xffff Makernote Ascii 22 An obscure Nikon2 tag Exif.Nikon2.0xffff 0xffff Makernote Ascii 22 An obscure Nikon2 tag
----- One Nikon3 MakerNote tag ----- One Nikon3 MakerNote tag
Exif.Image.Make 0x010f IFD0 Ascii 18 NIKON CORPORATION Exif.Image.Make 0x010f IFD0 Ascii 18 NIKON CORPORATION
Exif.Image.Model 0x0110 IFD0 Ascii 10 NIKON D70 Exif.Image.Model 0x0110 IFD0 Ascii 10 NIKON D70
Exif.Image.ExifTag 0x8769 IFD0 Long 1 78 Exif.Image.ExifTag 0x8769 IFD0 Long 1 78
Exif.Photo.MakerNote 0x927c Exif Undefined 64 78 105 107 111 110 0 2 16 0 0 73 73 42 0 8 0 0 0 1 0 4 0 2 0 28 0 0 0 26 0 0 0 0 0 0 0 65 32 98 111 114 105 110 103 32 78 105 107 111 110 51 32 81 117 97 108 105 116 121 32 116 97 103 0 Exif.Photo.MakerNote 0x927c Exif Undefined 64 78 105 107 111 110 0 2 16 0 0 73 73 42 0 8 0 0 0 1 0 4 0 2 0 28 0 0 0 26 0 0 0 0 0 0 0 65 32 98 111 114 105 110 103 32 78 105 107 111 110 51 32 81 117 97 108 105 116 121 32 116 97 103 0
Exif.MakerNote.Offset 0x0001 Makernote Long 1 96 Exif.MakerNote.Offset 0x0001 Makernote Long 1 96
Exif.MakerNote.ByteOrder 0x0002 Makernote Ascii 3 II Exif.MakerNote.ByteOrder 0x0002 Makernote Ascii 3 II
Exif.Nikon3.Quality 0x0004 Makernote Ascii 28 A boring Nikon3 Quality tag Exif.Nikon3.Quality 0x0004 Makernote Ascii 28 A boring Nikon3 Quality tag
----- One Olympus MakerNote tag ----- One Olympus MakerNote tag
Exif.Image.Make 0x010f IFD0 Ascii 20 OLYMPUS CORPORATION Exif.Image.Make 0x010f IFD0 Ascii 20 OLYMPUS CORPORATION
Exif.Image.Model 0x0110 IFD0 Ascii 8 C8080WZ Exif.Image.Model 0x0110 IFD0 Ascii 8 C8080WZ
Exif.Image.ExifTag 0x8769 IFD0 Long 1 78 Exif.Image.ExifTag 0x8769 IFD0 Long 1 78
Exif.Photo.MakerNote 0x927c Exif Undefined 26 79 76 89 77 80 0 1 0 1 0 1 2 3 0 1 0 0 0 1 0 0 0 0 0 0 0 Exif.Photo.MakerNote 0x927c Exif Undefined 26 79 76 89 77 80 0 1 0 1 0 1 2 3 0 1 0 0 0 1 0 0 0 0 0 0 0
Exif.MakerNote.Offset 0x0001 Makernote Long 1 96 Exif.MakerNote.Offset 0x0001 Makernote Long 1 96
Exif.MakerNote.ByteOrder 0x0002 Makernote Ascii 3 II Exif.MakerNote.ByteOrder 0x0002 Makernote Ascii 3 II
Exif.Olympus.Quality 0x0201 Makernote Short 1 1 Exif.Olympus.Quality 0x0201 Makernote Short 1 1
----- One Panasonic MakerNote tag ----- One Panasonic MakerNote tag
Exif.Image.Make 0x010f IFD0 Ascii 10 Panasonic Exif.Image.Make 0x010f IFD0 Ascii 10 Panasonic
Exif.Image.Model 0x0110 IFD0 Ascii 8 DMC-FZ5 Exif.Image.Model 0x0110 IFD0 Ascii 8 DMC-FZ5
Exif.Image.ExifTag 0x8769 IFD0 Long 1 68 Exif.Image.ExifTag 0x8769 IFD0 Long 1 68
Exif.Photo.MakerNote 0x927c Exif Undefined 26 80 97 110 97 115 111 110 105 99 0 0 0 1 0 1 0 3 0 1 0 0 0 1 0 0 0 Exif.Photo.MakerNote 0x927c Exif Undefined 26 80 97 110 97 115 111 110 105 99 0 0 0 1 0 1 0 3 0 1 0 0 0 1 0 0 0
Exif.MakerNote.Offset 0x0001 Makernote Long 1 86 Exif.MakerNote.Offset 0x0001 Makernote Long 1 86
Exif.MakerNote.ByteOrder 0x0002 Makernote Ascii 3 II Exif.MakerNote.ByteOrder 0x0002 Makernote Ascii 3 II
Exif.Panasonic.Quality 0x0001 Makernote Short 1 1 Exif.Panasonic.Quality 0x0001 Makernote Short 1 1
----- One Sony1 MakerNote tag ----- One Sony1 MakerNote tag
Exif.Image.Make 0x010f IFD0 Ascii 5 SONY Exif.Image.Make 0x010f IFD0 Ascii 5 SONY
Exif.Image.Model 0x0110 IFD0 Ascii 7 DSC-W7 Exif.Image.Model 0x0110 IFD0 Ascii 7 DSC-W7
Exif.Image.ExifTag 0x8769 IFD0 Long 1 64 Exif.Image.ExifTag 0x8769 IFD0 Long 1 64
Exif.Photo.MakerNote 0x927c Exif Undefined 32 83 79 78 89 32 68 83 67 32 0 0 0 1 0 0 32 7 0 6 0 0 0 108 0 0 0 0 1 2 3 4 5 Exif.Photo.MakerNote 0x927c Exif Undefined 26 83 79 78 89 32 68 83 67 32 0 0 0 1 0 2 1 4 0 1 0 0 0 2 0 0 0
Exif.MakerNote.Offset 0x0001 Makernote Long 1 82 Exif.MakerNote.Offset 0x0001 Makernote Long 1 82
Exif.MakerNote.ByteOrder 0x0002 Makernote Ascii 3 II Exif.MakerNote.ByteOrder 0x0002 Makernote Ascii 3 II
Exif.Sony1.0x2000 0x2000 Makernote Undefined 6 0 1 2 3 4 5 Exif.Sony1.Quality 0x0102 Makernote Long 1 2
----- Minolta MakerNote tags ----- Minolta MakerNote tags
Exif.Image.Make 0x010f IFD0 Ascii 8 Minolta Exif.Image.Make 0x010f IFD0 Ascii 8 Minolta
Exif.Image.Model 0x0110 IFD0 Ascii 23 A fancy Minolta camera Exif.Image.Model 0x0110 IFD0 Ascii 23 A fancy Minolta camera
Exif.Image.ExifTag 0x8769 IFD0 Long 1 82 Exif.Image.ExifTag 0x8769 IFD0 Long 1 82
Exif.Photo.MakerNote 0x927c Exif Undefined 346 4 0 1 1 4 0 1 0 0 0 1 0 0 0 3 0 7 0 16 0 0 0 154 0 0 0 20 1 7 0 148 0 0 0 170 0 0 0 4 0 7 0 128 0 0 0 62 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 254 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 253 Exif.Photo.MakerNote 0x927c Exif Undefined 346 4 0 1 1 4 0 1 0 0 0 1 0 0 0 3 0 7 0 16 0 0 0 154 0 0 0 20 1 7 0 148 0 0 0 170 0 0 0 4 0 7 0 128 0 0 0 62 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 254 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 253
Exif.MakerNote.Offset 0x0001 Makernote Long 1 100 Exif.MakerNote.Offset 0x0001 Makernote Long 1 100
Exif.MakerNote.ByteOrder 0x0002 Makernote Ascii 3 II Exif.MakerNote.ByteOrder 0x0002 Makernote Ascii 3 II
Exif.Minolta.ColorMode 0x0101 Makernote Long 1 1 Exif.Minolta.ColorMode 0x0101 Makernote Long 1 1
Exif.MinoltaCsNew.0x0000 0x0000 Makernote Long 1 0 Exif.MinoltaCsNew.0x0000 0x0000 Makernote Long 1 0
Exif.MinoltaCsNew.ExposureMode 0x0001 Makernote Long 1 0 Exif.MinoltaCsNew.ExposureMode 0x0001 Makernote Long 1 0
Exif.MinoltaCsNew.FlashMode 0x0002 Makernote Long 1 0 Exif.MinoltaCsNew.FlashMode 0x0002 Makernote Long 1 0
Exif.MinoltaCsNew.WhiteBalance 0x0003 Makernote Long 1 2 Exif.MinoltaCsNew.WhiteBalance 0x0003 Makernote Long 1 2
Exif.MinoltaCs5D.0x0000 0x0000 Makernote Short 1 0 Exif.MinoltaCs5D.0x0000 0x0000 Makernote Short 1 0
Exif.MinoltaCs5D.0x0001 0x0001 Makernote Short 1 0 Exif.MinoltaCs5D.0x0001 0x0001 Makernote Short 1 0
Exif.MinoltaCs5D.0x0002 0x0002 Makernote Short 1 0 Exif.MinoltaCs5D.0x0002 0x0002 Makernote Short 1 0
Exif.MinoltaCs5D.0x0003 0x0003 Makernote Short 1 0 Exif.MinoltaCs5D.0x0003 0x0003 Makernote Short 1 0
Exif.MinoltaCs5D.0x0004 0x0004 Makernote Short 1 0 Exif.MinoltaCs5D.0x0004 0x0004 Makernote Short 1 0
Exif.MinoltaCs5D.0x0005 0x0005 Makernote Short 1 0 Exif.MinoltaCs5D.0x0005 0x0005 Makernote Short 1 0
Exif.MinoltaCs5D.0x0006 0x0006 Makernote Short 1 0 Exif.MinoltaCs5D.0x0006 0x0006 Makernote Short 1 0
Exif.MinoltaCs5D.0x0007 0x0007 Makernote Short 1 0 Exif.MinoltaCs5D.0x0007 0x0007 Makernote Short 1 0
Exif.MinoltaCs5D.0x0008 0x0008 Makernote Short 1 0 Exif.MinoltaCs5D.0x0008 0x0008 Makernote Short 1 0
Exif.MinoltaCs5D.0x0009 0x0009 Makernote Short 1 0 Exif.MinoltaCs5D.0x0009 0x0009 Makernote Short 1 0
Exif.MinoltaCs5D.ExposureMode 0x000a Makernote Short 1 0 Exif.MinoltaCs5D.ExposureMode 0x000a Makernote Short 1 0
Exif.MinoltaCs5D.0x000b 0x000b Makernote Short 1 0 Exif.MinoltaCs5D.0x000b 0x000b Makernote Short 1 0
Exif.MinoltaCs5D.ImageSize 0x000c Makernote Short 1 0 Exif.MinoltaCs5D.ImageSize 0x000c Makernote Short 1 0
Exif.MinoltaCs5D.Quality 0x000d Makernote Short 1 0 Exif.MinoltaCs5D.Quality 0x000d Makernote Short 1 0
Exif.MinoltaCs5D.WhiteBalance 0x000e Makernote Short 1 3 Exif.MinoltaCs5D.WhiteBalance 0x000e Makernote Short 1 3
Exif.MinoltaCs5D.0x000f 0x000f Makernote Short 1 0 Exif.MinoltaCs5D.0x000f 0x000f Makernote Short 1 0
Exif.MinoltaCs5D.0x0010 0x0010 Makernote Short 1 0 Exif.MinoltaCs5D.0x0010 0x0010 Makernote Short 1 0
Exif.MinoltaCs5D.0x0011 0x0011 Makernote Short 1 0 Exif.MinoltaCs5D.0x0011 0x0011 Makernote Short 1 0
Exif.MinoltaCs5D.0x0012 0x0012 Makernote Short 1 0 Exif.MinoltaCs5D.0x0012 0x0012 Makernote Short 1 0
Exif.MinoltaCs5D.0x0013 0x0013 Makernote Short 1 0 Exif.MinoltaCs5D.0x0013 0x0013 Makernote Short 1 0
Exif.MinoltaCs5D.0x0014 0x0014 Makernote Short 1 0 Exif.MinoltaCs5D.0x0014 0x0014 Makernote Short 1 0
Exif.MinoltaCs5D.0x0015 0x0015 Makernote Short 1 0 Exif.MinoltaCs5D.0x0015 0x0015 Makernote Short 1 0
Exif.MinoltaCs5D.0x0016 0x0016 Makernote Short 1 0 Exif.MinoltaCs5D.0x0016 0x0016 Makernote Short 1 0
Exif.MinoltaCs5D.0x0017 0x0017 Makernote Short 1 0 Exif.MinoltaCs5D.0x0017 0x0017 Makernote Short 1 0
Exif.MinoltaCs5D.0x0018 0x0018 Makernote Short 1 0 Exif.MinoltaCs5D.0x0018 0x0018 Makernote Short 1 0
Exif.MinoltaCs5D.0x0019 0x0019 Makernote Short 1 0 Exif.MinoltaCs5D.0x0019 0x0019 Makernote Short 1 0
Exif.MinoltaCs5D.FocusPosition 0x001a Makernote Short 1 0 Exif.MinoltaCs5D.FocusPosition 0x001a Makernote Short 1 0
Exif.MinoltaCs5D.FocusArea 0x001b Makernote Short 1 0 Exif.MinoltaCs5D.FocusArea 0x001b Makernote Short 1 0
Exif.MinoltaCs5D.0x001c 0x001c Makernote Short 1 0 Exif.MinoltaCs5D.0x001c 0x001c Makernote Short 1 0
Exif.MinoltaCs5D.0x001d 0x001d Makernote Short 1 0 Exif.MinoltaCs5D.0x001d 0x001d Makernote Short 1 0
Exif.MinoltaCs5D.0x001e 0x001e Makernote Short 1 0 Exif.MinoltaCs5D.0x001e 0x001e Makernote Short 1 0
Exif.MinoltaCs5D.FlashFired 0x001f Makernote Short 1 0 Exif.MinoltaCs5D.FlashFired 0x001f Makernote Short 1 0
Exif.MinoltaCs5D.0x0020 0x0020 Makernote Short 1 0 Exif.MinoltaCs5D.0x0020 0x0020 Makernote Short 1 0
Exif.MinoltaCs5D.0x0021 0x0021 Makernote Short 1 0 Exif.MinoltaCs5D.0x0021 0x0021 Makernote Short 1 0
Exif.MinoltaCs5D.0x0022 0x0022 Makernote Short 1 0 Exif.MinoltaCs5D.0x0022 0x0022 Makernote Short 1 0
Exif.MinoltaCs5D.0x0023 0x0023 Makernote Short 1 0 Exif.MinoltaCs5D.0x0023 0x0023 Makernote Short 1 0
Exif.MinoltaCs5D.0x0024 0x0024 Makernote Short 1 0 Exif.MinoltaCs5D.0x0024 0x0024 Makernote Short 1 0
Exif.MinoltaCs5D.MeteringMode 0x0025 Makernote Short 1 0 Exif.MinoltaCs5D.MeteringMode 0x0025 Makernote Short 1 0
Exif.MinoltaCs5D.ISOSpeed 0x0026 Makernote Short 1 0 Exif.MinoltaCs5D.ISOSpeed 0x0026 Makernote Short 1 0
Exif.MinoltaCs5D.0x0027 0x0027 Makernote Short 1 0 Exif.MinoltaCs5D.0x0027 0x0027 Makernote Short 1 0
Exif.MinoltaCs5D.0x0028 0x0028 Makernote Short 1 0 Exif.MinoltaCs5D.0x0028 0x0028 Makernote Short 1 0
Exif.MinoltaCs5D.0x0029 0x0029 Makernote Short 1 0 Exif.MinoltaCs5D.0x0029 0x0029 Makernote Short 1 0
Exif.MinoltaCs5D.0x002a 0x002a Makernote Short 1 0 Exif.MinoltaCs5D.0x002a 0x002a Makernote Short 1 0
Exif.MinoltaCs5D.0x002b 0x002b Makernote Short 1 0 Exif.MinoltaCs5D.0x002b 0x002b Makernote Short 1 0
Exif.MinoltaCs5D.0x002c 0x002c Makernote Short 1 0 Exif.MinoltaCs5D.0x002c 0x002c Makernote Short 1 0
Exif.MinoltaCs5D.0x002d 0x002d Makernote Short 1 0 Exif.MinoltaCs5D.0x002d 0x002d Makernote Short 1 0
Exif.MinoltaCs5D.0x002e 0x002e Makernote Short 1 0 Exif.MinoltaCs5D.0x002e 0x002e Makernote Short 1 0
Exif.MinoltaCs5D.ColorSpace 0x002f Makernote Short 1 0 Exif.MinoltaCs5D.ColorSpace 0x002f Makernote Short 1 0
Exif.MinoltaCs5D.Sharpness 0x0030 Makernote Short 1 0 Exif.MinoltaCs5D.Sharpness 0x0030 Makernote Short 1 0
Exif.MinoltaCs5D.Contrast 0x0031 Makernote Short 1 0 Exif.MinoltaCs5D.Contrast 0x0031 Makernote Short 1 0
Exif.MinoltaCs5D.Saturation 0x0032 Makernote Short 1 0 Exif.MinoltaCs5D.Saturation 0x0032 Makernote Short 1 0
Exif.MinoltaCs5D.0x0033 0x0033 Makernote Short 1 0 Exif.MinoltaCs5D.0x0033 0x0033 Makernote Short 1 0
Exif.MinoltaCs5D.0x0034 0x0034 Makernote Short 1 0 Exif.MinoltaCs5D.0x0034 0x0034 Makernote Short 1 0
Exif.MinoltaCs5D.ExposureTime 0x0035 Makernote Short 1 0 Exif.MinoltaCs5D.ExposureTime 0x0035 Makernote Short 1 0
Exif.MinoltaCs5D.FNumber 0x0036 Makernote Short 1 0 Exif.MinoltaCs5D.FNumber 0x0036 Makernote Short 1 0
Exif.MinoltaCs5D.FreeMemoryCardImages 0x0037 Makernote Short 1 0 Exif.MinoltaCs5D.FreeMemoryCardImages 0x0037 Makernote Short 1 0
Exif.MinoltaCs5D.ExposureRevision 0x0038 Makernote Short 1 0 Exif.MinoltaCs5D.ExposureRevision 0x0038 Makernote Short 1 0
Exif.MinoltaCs5D.0x0039 0x0039 Makernote Short 1 0 Exif.MinoltaCs5D.0x0039 0x0039 Makernote Short 1 0
Exif.MinoltaCs5D.0x003a 0x003a Makernote Short 1 0 Exif.MinoltaCs5D.0x003a 0x003a Makernote Short 1 0
Exif.MinoltaCs5D.0x003b 0x003b Makernote Short 1 0 Exif.MinoltaCs5D.0x003b 0x003b Makernote Short 1 0
Exif.MinoltaCs5D.0x003c 0x003c Makernote Short 1 0 Exif.MinoltaCs5D.0x003c 0x003c Makernote Short 1 0
Exif.MinoltaCs5D.0x003d 0x003d Makernote Short 1 0 Exif.MinoltaCs5D.0x003d 0x003d Makernote Short 1 0
Exif.MinoltaCs5D.0x003e 0x003e Makernote Short 1 0 Exif.MinoltaCs5D.0x003e 0x003e Makernote Short 1 0
Exif.MinoltaCs5D.0x003f 0x003f Makernote Short 1 0 Exif.MinoltaCs5D.0x003f 0x003f Makernote Short 1 0
Exif.MinoltaCs5D.0x0040 0x0040 Makernote Short 1 0 Exif.MinoltaCs5D.0x0040 0x0040 Makernote Short 1 0
Exif.MinoltaCs5D.0x0041 0x0041 Makernote Short 1 0 Exif.MinoltaCs5D.0x0041 0x0041 Makernote Short 1 0
Exif.MinoltaCs5D.0x0042 0x0042 Makernote Short 1 0 Exif.MinoltaCs5D.0x0042 0x0042 Makernote Short 1 0
Exif.MinoltaCs5D.0x0043 0x0043 Makernote Short 1 0 Exif.MinoltaCs5D.0x0043 0x0043 Makernote Short 1 0
Exif.MinoltaCs5D.0x0044 0x0044 Makernote Short 1 0 Exif.MinoltaCs5D.0x0044 0x0044 Makernote Short 1 0
Exif.MinoltaCs5D.0x0045 0x0045 Makernote Short 1 0 Exif.MinoltaCs5D.0x0045 0x0045 Makernote Short 1 0
Exif.MinoltaCs5D.0x0046 0x0046 Makernote Short 1 0 Exif.MinoltaCs5D.0x0046 0x0046 Makernote Short 1 0
Exif.MinoltaCs5D.0x0047 0x0047 Makernote Short 1 0 Exif.MinoltaCs5D.0x0047 0x0047 Makernote Short 1 0
Exif.MinoltaCs5D.FocusMode 0x0048 Makernote Short 1 0 Exif.MinoltaCs5D.FocusMode 0x0048 Makernote Short 1 0
Exif.MinoltaCs5D.ColorTemperature 0x0049 Makernote SShort 1 -1 Exif.MinoltaCs5D.ColorTemperature 0x0049 Makernote SShort 1 -1
Exif.MinoltaCs7D.ExposureMode 0x0000 Makernote Short 1 0 Exif.MinoltaCs7D.ExposureMode 0x0000 Makernote Short 1 0
Exif.MinoltaCs7D.0x0001 0x0001 Makernote Short 1 0 Exif.MinoltaCs7D.0x0001 0x0001 Makernote Short 1 0
Exif.MinoltaCs7D.ImageSize 0x0002 Makernote Short 1 0 Exif.MinoltaCs7D.ImageSize 0x0002 Makernote Short 1 0
Exif.MinoltaCs7D.Quality 0x0003 Makernote Short 1 0 Exif.MinoltaCs7D.Quality 0x0003 Makernote Short 1 0
Exif.MinoltaCs7D.WhiteBalance 0x0004 Makernote Short 1 4 Exif.MinoltaCs7D.WhiteBalance 0x0004 Makernote Short 1 4
Exif.MinoltaCs7D.0x0005 0x0005 Makernote Short 1 0 Exif.MinoltaCs7D.0x0005 0x0005 Makernote Short 1 0
Exif.MinoltaCs7D.0x0006 0x0006 Makernote Short 1 0 Exif.MinoltaCs7D.0x0006 0x0006 Makernote Short 1 0
Exif.MinoltaCs7D.0x0007 0x0007 Makernote Short 1 0 Exif.MinoltaCs7D.0x0007 0x0007 Makernote Short 1 0
Exif.MinoltaCs7D.0x0008 0x0008 Makernote Short 1 0 Exif.MinoltaCs7D.0x0008 0x0008 Makernote Short 1 0
Exif.MinoltaCs7D.0x0009 0x0009 Makernote Short 1 0 Exif.MinoltaCs7D.0x0009 0x0009 Makernote Short 1 0
Exif.MinoltaCs7D.0x000a 0x000a Makernote Short 1 0 Exif.MinoltaCs7D.0x000a 0x000a Makernote Short 1 0
Exif.MinoltaCs7D.0x000b 0x000b Makernote Short 1 0 Exif.MinoltaCs7D.0x000b 0x000b Makernote Short 1 0
Exif.MinoltaCs7D.0x000c 0x000c Makernote Short 1 0 Exif.MinoltaCs7D.0x000c 0x000c Makernote Short 1 0
Exif.MinoltaCs7D.0x000d 0x000d Makernote Short 1 0 Exif.MinoltaCs7D.0x000d 0x000d Makernote Short 1 0
Exif.MinoltaCs7D.FocusMode 0x000e Makernote Short 1 0 Exif.MinoltaCs7D.FocusMode 0x000e Makernote Short 1 0
Exif.MinoltaCs7D.0x000f 0x000f Makernote Short 1 0 Exif.MinoltaCs7D.0x000f 0x000f Makernote Short 1 0
Exif.MinoltaCs7D.AFPoints 0x0010 Makernote Short 1 0 Exif.MinoltaCs7D.AFPoints 0x0010 Makernote Short 1 0
Exif.MinoltaCs7D.0x0011 0x0011 Makernote Short 1 0 Exif.MinoltaCs7D.0x0011 0x0011 Makernote Short 1 0
Exif.MinoltaCs7D.0x0012 0x0012 Makernote Short 1 0 Exif.MinoltaCs7D.0x0012 0x0012 Makernote Short 1 0
Exif.MinoltaCs7D.0x0013 0x0013 Makernote Short 1 0 Exif.MinoltaCs7D.0x0013 0x0013 Makernote Short 1 0
Exif.MinoltaCs7D.0x0014 0x0014 Makernote Short 1 0 Exif.MinoltaCs7D.0x0014 0x0014 Makernote Short 1 0
Exif.MinoltaCs7D.FlashFired 0x0015 Makernote Short 1 0 Exif.MinoltaCs7D.FlashFired 0x0015 Makernote Short 1 0
Exif.MinoltaCs7D.FlashMode 0x0016 Makernote Short 1 0 Exif.MinoltaCs7D.FlashMode 0x0016 Makernote Short 1 0
Exif.MinoltaCs7D.0x0017 0x0017 Makernote Short 1 0 Exif.MinoltaCs7D.0x0017 0x0017 Makernote Short 1 0
Exif.MinoltaCs7D.0x0018 0x0018 Makernote Short 1 0 Exif.MinoltaCs7D.0x0018 0x0018 Makernote Short 1 0
Exif.MinoltaCs7D.0x0019 0x0019 Makernote Short 1 0 Exif.MinoltaCs7D.0x0019 0x0019 Makernote Short 1 0
Exif.MinoltaCs7D.0x001a 0x001a Makernote Short 1 0 Exif.MinoltaCs7D.0x001a 0x001a Makernote Short 1 0
Exif.MinoltaCs7D.0x001b 0x001b Makernote Short 1 0 Exif.MinoltaCs7D.0x001b 0x001b Makernote Short 1 0
Exif.MinoltaCs7D.ISOSpeed 0x001c Makernote Short 1 0 Exif.MinoltaCs7D.ISOSpeed 0x001c Makernote Short 1 0
Exif.MinoltaCs7D.0x001d 0x001d Makernote Short 1 0 Exif.MinoltaCs7D.0x001d 0x001d Makernote Short 1 0
Exif.MinoltaCs7D.ExposureCompensation 0x001e Makernote SShort 1 -2 Exif.MinoltaCs7D.ExposureCompensation 0x001e Makernote SShort 1 -2
Exif.MinoltaCs7D.0x001f 0x001f Makernote Short 1 0 Exif.MinoltaCs7D.0x001f 0x001f Makernote Short 1 0
Exif.MinoltaCs7D.0x0020 0x0020 Makernote Short 1 0 Exif.MinoltaCs7D.0x0020 0x0020 Makernote Short 1 0
Exif.MinoltaCs7D.0x0021 0x0021 Makernote Short 1 0 Exif.MinoltaCs7D.0x0021 0x0021 Makernote Short 1 0
Exif.MinoltaCs7D.0x0022 0x0022 Makernote Short 1 0 Exif.MinoltaCs7D.0x0022 0x0022 Makernote Short 1 0
Exif.MinoltaCs7D.0x0023 0x0023 Makernote Short 1 0 Exif.MinoltaCs7D.0x0023 0x0023 Makernote Short 1 0
Exif.MinoltaCs7D.0x0024 0x0024 Makernote Short 1 0 Exif.MinoltaCs7D.0x0024 0x0024 Makernote Short 1 0
Exif.MinoltaCs7D.ColorSpace 0x0025 Makernote Short 1 0 Exif.MinoltaCs7D.ColorSpace 0x0025 Makernote Short 1 0
Exif.MinoltaCs7D.Sharpness 0x0026 Makernote Short 1 0 Exif.MinoltaCs7D.Sharpness 0x0026 Makernote Short 1 0
Exif.MinoltaCs7D.Contrast 0x0027 Makernote Short 1 0 Exif.MinoltaCs7D.Contrast 0x0027 Makernote Short 1 0
Exif.MinoltaCs7D.Saturation 0x0028 Makernote Short 1 0 Exif.MinoltaCs7D.Saturation 0x0028 Makernote Short 1 0
Exif.MinoltaCs7D.0x0029 0x0029 Makernote Short 1 0 Exif.MinoltaCs7D.0x0029 0x0029 Makernote Short 1 0
Exif.MinoltaCs7D.0x002a 0x002a Makernote Short 1 0 Exif.MinoltaCs7D.0x002a 0x002a Makernote Short 1 0
Exif.MinoltaCs7D.0x002b 0x002b Makernote Short 1 0 Exif.MinoltaCs7D.0x002b 0x002b Makernote Short 1 0
Exif.MinoltaCs7D.0x002c 0x002c Makernote Short 1 0 Exif.MinoltaCs7D.0x002c 0x002c Makernote Short 1 0
Exif.MinoltaCs7D.FreeMemoryCardImages 0x002d Makernote Short 1 0 Exif.MinoltaCs7D.FreeMemoryCardImages 0x002d Makernote Short 1 0
Exif.MinoltaCs7D.0x002e 0x002e Makernote Short 1 0 Exif.MinoltaCs7D.0x002e 0x002e Makernote Short 1 0
Exif.MinoltaCs7D.0x002f 0x002f Makernote Short 1 0 Exif.MinoltaCs7D.0x002f 0x002f Makernote Short 1 0
Exif.MinoltaCs7D.0x0030 0x0030 Makernote Short 1 0 Exif.MinoltaCs7D.0x0030 0x0030 Makernote Short 1 0
Exif.MinoltaCs7D.0x0031 0x0031 Makernote Short 1 0 Exif.MinoltaCs7D.0x0031 0x0031 Makernote Short 1 0
Exif.MinoltaCs7D.0x0032 0x0032 Makernote Short 1 0 Exif.MinoltaCs7D.0x0032 0x0032 Makernote Short 1 0
Exif.MinoltaCs7D.0x0033 0x0033 Makernote Short 1 0 Exif.MinoltaCs7D.0x0033 0x0033 Makernote Short 1 0
Exif.MinoltaCs7D.0x0034 0x0034 Makernote Short 1 0 Exif.MinoltaCs7D.0x0034 0x0034 Makernote Short 1 0
Exif.MinoltaCs7D.0x0035 0x0035 Makernote Short 1 0 Exif.MinoltaCs7D.0x0035 0x0035 Makernote Short 1 0
Exif.MinoltaCs7D.0x0036 0x0036 Makernote Short 1 0 Exif.MinoltaCs7D.0x0036 0x0036 Makernote Short 1 0
Exif.MinoltaCs7D.0x0037 0x0037 Makernote Short 1 0 Exif.MinoltaCs7D.0x0037 0x0037 Makernote Short 1 0
Exif.MinoltaCs7D.0x0038 0x0038 Makernote Short 1 0 Exif.MinoltaCs7D.0x0038 0x0038 Makernote Short 1 0
Exif.MinoltaCs7D.0x0039 0x0039 Makernote Short 1 0 Exif.MinoltaCs7D.0x0039 0x0039 Makernote Short 1 0
Exif.MinoltaCs7D.0x003a 0x003a Makernote Short 1 0 Exif.MinoltaCs7D.0x003a 0x003a Makernote Short 1 0
Exif.MinoltaCs7D.0x003b 0x003b Makernote Short 1 0 Exif.MinoltaCs7D.0x003b 0x003b Makernote Short 1 0
Exif.MinoltaCs7D.0x003c 0x003c Makernote Short 1 0 Exif.MinoltaCs7D.0x003c 0x003c Makernote Short 1 0
Exif.MinoltaCs7D.0x003d 0x003d Makernote Short 1 0 Exif.MinoltaCs7D.0x003d 0x003d Makernote Short 1 0
Exif.MinoltaCs7D.0x003e 0x003e Makernote Short 1 0 Exif.MinoltaCs7D.0x003e 0x003e Makernote Short 1 0
Exif.MinoltaCs7D.ColorTemperature 0x003f Makernote SShort 1 -3 Exif.MinoltaCs7D.ColorTemperature 0x003f Makernote SShort 1 -3
----- One IOP tag ----- One IOP tag
Exif.Image.ExifTag 0x8769 IFD0 Long 1 26 Exif.Image.ExifTag 0x8769 IFD0 Long 1 26
Exif.Photo.InteroperabilityTag 0xa005 Exif Long 1 44 Exif.Photo.InteroperabilityTag 0xa005 Exif Long 1 44
Exif.Iop.InteroperabilityIndex 0x0001 Iop Ascii 7 Test 3 Exif.Iop.InteroperabilityIndex 0x0001 Iop Ascii 7 Test 3
----- One GPS tag ----- One GPS tag
Exif.Image.GPSTag 0x8825 IFD0 Long 1 26 Exif.Image.GPSTag 0x8825 IFD0 Long 1 26
Exif.GPSInfo.GPSVersionID 0x0000 GPSInfo Byte 2 19 20 Exif.GPSInfo.GPSVersionID 0x0000 GPSInfo Byte 2 19 20
----- One IFD1 tag ----- One IFD1 tag
Exif.Thumbnail.Artist 0x013b IFD1 Ascii 7 Test 5 Exif.Thumbnail.Artist 0x013b IFD1 Ascii 7 Test 5
----- One IOP and one IFD1 tag ----- One IOP and one IFD1 tag
Exif.Image.ExifTag 0x8769 IFD0 Long 1 26 Exif.Image.ExifTag 0x8769 IFD0 Long 1 26
Exif.Photo.InteroperabilityTag 0xa005 Exif Long 1 44 Exif.Photo.InteroperabilityTag 0xa005 Exif Long 1 44
Exif.Iop.InteroperabilityIndex 0x0001 Iop Ascii 15 Test 6 Iop tag Exif.Iop.InteroperabilityIndex 0x0001 Iop Ascii 15 Test 6 Iop tag
Exif.Thumbnail.Artist 0x013b IFD1 Ascii 16 Test 6 Ifd1 tag Exif.Thumbnail.Artist 0x013b IFD1 Ascii 16 Test 6 Ifd1 tag
----- One IFD0 and one IFD1 tag ----- One IFD0 and one IFD1 tag
Exif.Image.SamplesPerPixel 0x0115 IFD0 Short 4 160 161 162 163 Exif.Image.SamplesPerPixel 0x0115 IFD0 Short 4 160 161 162 163
Exif.Thumbnail.Artist 0x013b IFD1 Ascii 7 Test 7 Exif.Thumbnail.Artist 0x013b IFD1 Ascii 7 Test 7

@ -36,7 +36,10 @@ Exif.Photo.DateTimeOriginal Ascii 20 2021:02:18 19:55:41
Exif.Photo.DateTimeDigitized Ascii 20 2021:02:18 19:55:41 Exif.Photo.DateTimeDigitized Ascii 20 2021:02:18 19:55:41
Exif.Photo.ExposureBiasValue SRational 1 0 EV Exif.Photo.ExposureBiasValue SRational 1 0 EV
Exif.Photo.Flash Short 1 No, compulsory Exif.Photo.Flash Short 1 No, compulsory
Exif.Sony1.LongExposureNoiseReduction Long 1 Off
Exif.Sony1.FlashExposureComp SRational 1 0 EV Exif.Sony1.FlashExposureComp SRational 1 0 EV
Exif.Sony1.FlashAction Long 1 Did not fire
Exif.Sony1.ExposureStandardAdjustment SRational 1 0.0
Exif.Sony1.ExposureMode Short 1 Manual Exif.Sony1.ExposureMode Short 1 Manual
Exif.Sony1.FlashLevel SShort 1 Normal Exif.Sony1.FlashLevel SShort 1 Normal
Exif.Photo.FlashpixVersion Undefined 4 1.00 Exif.Photo.FlashpixVersion Undefined 4 1.00

@ -21,22 +21,27 @@ class CheckSonyMinoltaLenses(metaclass=system_tests.CaseMeta):
] ]
stdout = [ """Exif.Sony1.LensID Long 1 Tamron SP AF 11-18mm F4.5-5.6 Di II LD Aspherical IF stdout = [ """Exif.Sony1.LensID Long 1 Tamron SP AF 11-18mm F4.5-5.6 Di II LD Aspherical IF
Exif.Sony1.LensSpec Byte 8 Unknown
Exif.Photo.LensSpecification Rational 4 110/10 180/10 45/10 56/10 Exif.Photo.LensSpecification Rational 4 110/10 180/10 45/10 56/10
Exif.Photo.LensModel Ascii 20 DT 11-18mm F4.5-5.6 Exif.Photo.LensModel Ascii 20 DT 11-18mm F4.5-5.6
""", """,
"""Exif.Sony1.LensID Long 1 Tamron SP AF 17-50mm F2.8 XR Di II LD Aspherical """Exif.Sony1.LensID Long 1 Tamron SP AF 17-50mm F2.8 XR Di II LD Aspherical
Exif.Sony1.LensSpec Byte 8 Unknown
Exif.Photo.LensSpecification Rational 4 0/10 0/10 0/10 0/10 Exif.Photo.LensSpecification Rational 4 0/10 0/10 0/10 0/10
Exif.Photo.LensModel Ascii 5 ---- Exif.Photo.LensModel Ascii 5 ----
""", """,
"""Exif.Sony1.LensID Long 1 Tamron AF 18-200mm F3.5-6.3 XR Di II LD Aspherical [IF] Macro """Exif.Sony1.LensID Long 1 Tamron AF 18-200mm F3.5-6.3 XR Di II LD Aspherical [IF] Macro
Exif.Sony1.LensSpec Byte 8 Unknown
Exif.Photo.LensSpecification Rational 4 0/10 0/10 0/10 0/10 Exif.Photo.LensSpecification Rational 4 0/10 0/10 0/10 0/10
Exif.Photo.LensModel Ascii 5 ---- Exif.Photo.LensModel Ascii 5 ----
""", """,
"""Exif.Sony1.LensID Long 1 Tamron SP 70-300mm F4-5.6 Di USD """Exif.Sony1.LensID Long 1 Tamron SP 70-300mm F4-5.6 Di USD
Exif.Sony1.LensSpec Byte 8 70-300mm F4.0-5.6
Exif.Photo.LensSpecification Rational 4 700/10 3000/10 40/10 56/10 Exif.Photo.LensSpecification Rational 4 700/10 3000/10 40/10 56/10
Exif.Photo.LensModel Ascii 16 70-300mm F4-5.6 Exif.Photo.LensModel Ascii 16 70-300mm F4-5.6
""", """,
"""Exif.Sony1.LensID Long 1 Tamron SP AF 90mm F2.8 Di Macro """Exif.Sony1.LensID Long 1 Tamron SP AF 90mm F2.8 Di Macro
Exif.Sony1.LensSpec Byte 8 Unknown
Exif.Photo.LensSpecification Rational 4 1000/10 1000/10 28/10 28/10 Exif.Photo.LensSpecification Rational 4 1000/10 1000/10 28/10 28/10
Exif.Photo.LensModel Ascii 17 100mm F2.8 Macro Exif.Photo.LensModel Ascii 17 100mm F2.8 Macro
""", """,

Loading…
Cancel
Save