Add SonySInfo1 makernote tags (tag 3000)

Add all tags, except the face detection sub-groups and related
bookkeeping values.

Source: Exiftool (https://exiftool.org/TagNames/Sony.html)
main
postscript-dev 4 years ago committed by Christoph Hasse
parent 08975e3dfc
commit 0144209ed0

@ -114,7 +114,8 @@ TABLES = Exif \
Sony2Fp \
SonyMisc1 \
SonyMisc2b \
SonyMisc3c
SonyMisc3c \
SonySInfo1
SCHEMA = xmp_dc \
xmp_dwc \

@ -627,11 +627,11 @@ The tag is a triplet of Family.Group.Tagname. The following groups are defined
GPSInfo Canon Fujifilm NikonMe OlympusFe7 SonyMisc2b
Image CanonCf NikonPc OlympusFe9 SonyMisc3c
Image2 CanonCs Nikon1 NikonPreview OlympusFi SonyMinolta
Image3 CanonFi Nikon2 NikonSi01xx OlympusIp
Iop CanonPa Nikon3 NikonSi02xx OlympusRd Samsung2
MakerNote CanonPi NikonAFT NikonSiD300a OlympusRd2 SamsungPictureWizard
MpfInfo CanonPr NikonAf NikonSiD300b OlympusRi SamsungPreview
Photo CanonSi NikonAf2 NikonSiD40
Image3 CanonFi Nikon2 NikonSi01xx OlympusIp SonySInfo1
Iop CanonPa Nikon3 NikonSi02xx OlympusRd
MakerNote CanonPi NikonAFT NikonSiD300a OlympusRd2 Samsung2
MpfInfo CanonPr NikonAf NikonSiD300b OlympusRi SamsungPictureWizard
Photo CanonSi NikonAf2 NikonSiD40 SamsungPreview
SubImage1 CanonTi NikonAf22 NikonSiD80 Sigma
SubImage2 NikonCb1 NikonVr
SubImage3 Casio NikonCb2 NikonWt Sony1

@ -1248,6 +1248,39 @@ namespace Exiv2 {
return os << "20" << val;
}
//! Sony SInfo1 tags (ShotInfo - Tag 3000)
constexpr TagInfo SonyMakerNote::tagInfoSonySInfo1_[] = {
// TODO: As "FaceInfo1" (72) and "FaceInfo2" (94) are not added, including
// "FaceInfoOffset" (2) and "FaceInfoLength" (50) does not make sense.
// The values are all connected and changing one without the rest will
// corrupt the data.
{6, "SonyDateTime", N_("Sony date/time"),
N_("Date and time when the photo was captured"),
sonySInfo1Id, makerTags, asciiString, -1, printValue},
{26, "SonyImageHeight", N_("Sony image height"),
N_("Height of the image"),
sonySInfo1Id, makerTags, unsignedShort, -1, printValue},
{28, "SonyImageWidth", N_("Sony image width"),
N_("Width of the image"),
sonySInfo1Id, makerTags, unsignedShort, -1, printValue},
{48, "FacesDetected", N_("Faces detected"),
N_("Number of faces detected in the image"),
sonySInfo1Id, makerTags, unsignedShort, -1, printValue},
{52, "MetaVersion", N_("Meta version"),
N_("Sony meta version"),
sonySInfo1Id, makerTags, asciiString, -1, printValue},
// TODO: Add FaceInfo1 (72) and FaceInfo2 (94) which are sub-groups of tags.
// End of list marker
{0xffff, "(UnknownsonySInfo1Tag)", "(Unknown SonySInfo1 Tag)",
"(Unknown SonySInfo1 Tag)",
sonySInfo1Id, makerTags, unsignedByte, -1, printValue}
};
const TagInfo* SonyMakerNote::tagListSonySInfo1()
{
return tagInfoSonySInfo1_;
}
//! Sony Tag 2010 Sony2010 (Miscellaneous)
constexpr TagInfo SonyMakerNote::tagInfo2010e_[] = {
{0, "SequenceImageNumber", N_("Sequence Image Number"), N_("Sequence Image Number"), sony2010eId, makerTags, unsignedLong, 1, printValue},

@ -55,7 +55,9 @@ namespace Exiv2 {
static const TagInfo* tagListSonyMisc2b();
//! Return read-only list of built-in Sony Misc3c tags (Tag 9400)
static const TagInfo* tagListSonyMisc3c();
//! Return read-only list of built-in Sony SInfo1 tags (Tag 3000)
static const TagInfo* tagListSonySInfo1();
//! Return read-only list of built-in Sony 2010e tags (Tag 2010)
static const TagInfo* tagList2010e();
//! @name Print functions for Sony %MakerNote tags
@ -94,6 +96,7 @@ namespace Exiv2 {
static const TagInfo tagInfoSonyMisc1_[];
static const TagInfo tagInfoSonyMisc2b_[];
static const TagInfo tagInfoSonyMisc3c_[];
static const TagInfo tagInfoSonySInfo1_[];
static const TagInfo tagInfo2010e_[];
}; // class SonyMakerNote

@ -171,6 +171,7 @@ namespace Exiv2 {
{ sonyMisc1Id, "Makernote", "SonyMisc1", SonyMakerNote::tagListSonyMisc1},
{ sonyMisc2bId, "Makernote", "SonyMisc2b", SonyMakerNote::tagListSonyMisc2b},
{ sonyMisc3cId, "Makernote", "SonyMisc3c", SonyMakerNote::tagListSonyMisc3c},
{ sonySInfo1Id, "Makernote", "SonySInfo1", SonyMakerNote::tagListSonySInfo1},
{ sony2010eId, "Makernote", "Sony2010e", SonyMakerNote::tagList2010e },
{ lastId, "(Last IFD info)", "(Last IFD item)", nullptr }
};

@ -177,6 +177,7 @@ namespace Exiv2 {
sonyMisc1Id,
sonyMisc2bId,
sonyMisc3cId,
sonySInfo1Id,
sony2010eId,
sony1MltCs7DId,
sony1MltCsOldId,

@ -898,6 +898,25 @@ namespace Exiv2 {
{ sonyMisc3cCfg, sonyMisc3cDef, EXV_COUNTOF(sonyMisc3cDef) }
};
constexpr ArrayCfg sonySInfo1Cfg = {
sonySInfo1Id, // Group for the elements
littleEndian, // Little endian
ttUnsignedByte, // Type for array entry and size element
notEncrypted, // (uint16_t, const byte*, uint32_t, TiffComponent* const);
false, // No size element
false, // No fillers
false, // Don't concatenate gaps
{ 0, ttUnsignedByte, 1 }
};
constexpr ArrayDef sonySInfo1Def[] = {
{ 6, ttAsciiString , 20 }, // Exif.SonySInfo1.SonyDateTime
{ 26, ttUnsignedShort , 1 }, // Exif.SonySInfo1.SonyImageHeight
{ 28, ttUnsignedShort , 1 }, // Exif.SonySInfo1.SonyImageWidth
{ 48, ttUnsignedShort , 1 }, // Exif.SonySInfo1.FacesDetected
{ 52, ttAsciiString , 16 }, // Exif.SonySInfo1.MetaVersion
//
};
constexpr ArrayCfg sony2010eCfg = {
sony2010eId, // Group for the elements
invalidByteOrder, // inherit from file. Usually littleEndian
@ -1171,6 +1190,7 @@ namespace Exiv2 {
{ Tag::root, sonyMisc1Id, sony1Id, 0x9403 },
{ Tag::root, sonyMisc2bId, sony1Id, 0x9404 },
{ Tag::root, sonyMisc3cId, sony1Id, 0x9400 },
{ Tag::root, sonySInfo1Id, sony1Id, 0x3000 },
{ Tag::root, sony1CsId, sony1Id, 0x0114 },
{ Tag::root, sony1Cs2Id, sony1Id, 0x0114 },
{ Tag::root, sonyMltId, sony1Id, 0xb028 },
@ -1184,6 +1204,7 @@ namespace Exiv2 {
{ Tag::root, sonyMisc1Id, sony2Id, 0x9403 },
{ Tag::root, sonyMisc2bId, sony2Id, 0x9404 },
{ Tag::root, sonyMisc3cId, sony2Id, 0x9400 },
{ Tag::root, sonySInfo1Id, sony2Id, 0x3000 },
{ Tag::root, sony2CsId, sony2Id, 0x0114 },
{ Tag::root, sony2Cs2Id, sony2Id, 0x0114 },
{ Tag::root, minoltaId, exifId, 0x927c },
@ -1634,6 +1655,10 @@ namespace Exiv2 {
{ Tag::all, sonyMisc1Id, newTiffBinaryElement },
{ 0x9403, sony1Id, EXV_BINARY_ARRAY(sonyMisc1Cfg, sonyMisc1Def) },
// Tag 0x3000 SonySInfo1
{ Tag::all, sonySInfo1Id, newTiffBinaryElement },
{ 0x3000, sony1Id, EXV_BINARY_ARRAY(sonySInfo1Cfg, sonySInfo1Def) },
// Sony1 makernote
{ 0x0114, sony1Id, EXV_COMPLEX_BINARY_ARRAY(sony1CsSet, sonyCsSelector) },
{ 0xb028, sony1Id, newTiffSubIfd<sonyMltId> },
@ -1663,6 +1688,10 @@ namespace Exiv2 {
{ Tag::all, sonyMisc3cId, newTiffBinaryElement },
{ 0x9400, sony2Id, EXV_COMPLEX_BINARY_ARRAY(sonyMisc3cSet, sonyMisc3cSelector) },
// Tag 0x3000 SonySInfo1
{ Tag::all, sonySInfo1Id, newTiffBinaryElement },
{ 0x3000, sony2Id, EXV_BINARY_ARRAY(sonySInfo1Cfg, sonySInfo1Def) },
// Sony2 makernote
{ 0x0114, sony2Id, EXV_COMPLEX_BINARY_ARRAY(sony2CsSet, sonyCsSelector) },
{ Tag::next, sony2Id, ignoreTiffComponent },

Loading…
Cancel
Save