merge with dev

This commit is contained in:
Desmis
2019-03-08 16:22:52 +01:00
10 changed files with 159 additions and 107 deletions

View File

@@ -306,6 +306,38 @@ FrameData::FrameData(rtexif::TagDirectory* frameRootDir_, rtexif::TagDirectory*
}
if (lens == "Unknown") {
const auto lens_from_make_and_model =
[this, exif]() -> bool
{
if (!exif) {
return false;
}
const rtexif::Tag* const lens_model = exif->getTag(0xA434);
if (lens_model) {
const rtexif::Tag* const lens_make = exif->getTag(0xA433);
const std::string make =
lens_make
? lens_make->valueToString()
: std::string();
const std::string model = lens_model->valueToString();
if (!model.empty()) {
lens = make;
if (!lens.empty()) {
lens += ' ';
}
lens += model;
return true;
}
}
return false;
};
if (mnote) {
@@ -412,11 +444,15 @@ FrameData::FrameData(rtexif::TagDirectory* frameRootDir_, rtexif::TagDirectory*
rtexif::Tag *lt = mnote->getTag("LensType");
if (lt) {
std::string ldata = lt->valueToString();
if (lt->toInt()) {
std::string ldata = lt->valueToString ();
if (ldata.size() > 1) {
found = true;
lens = "Canon " + ldata;
if (ldata.size() > 1) {
found = true;
lens = "Canon " + ldata;
}
} else {
found = lens_from_make_and_model();
}
}
@@ -446,7 +482,13 @@ FrameData::FrameData(rtexif::TagDirectory* frameRootDir_, rtexif::TagDirectory*
}
if (mnote->getTag("LensType")) {
lens = mnote->getTag("LensType")->valueToString();
lens = mnote->getTag ("LensType")->valueToString();
if (!mnote->getTag("LensType")->toInt()) {
// try to find something better than "M-42 or No Lens"
lens_from_make_and_model();
}
} else {
lens_from_make_and_model();
}
// Try to get the FocalLength from the LensInfo structure, where length below 10mm will be correctly set
@@ -490,9 +532,7 @@ FrameData::FrameData(rtexif::TagDirectory* frameRootDir_, rtexif::TagDirectory*
}
} else if (exif->getTag("DNGLensInfo")) {
lens = exif->getTag("DNGLensInfo")->valueToString();
} else if (exif->getTag("LensModel")) {
lens = exif->getTag("LensModel")->valueToString();
} else if (exif->getTag("LensInfo")) {
} else if (!lens_from_make_and_model() && exif->getTag ("LensInfo")) {
lens = exif->getTag("LensInfo")->valueToString();
}
}