Skip to content

Commit

Permalink
Improve Samsung makernote support
Browse files Browse the repository at this point in the history
  • Loading branch information
drewnoakes committed May 12, 2020
1 parent af351c3 commit 964a042
Show file tree
Hide file tree
Showing 2 changed files with 152 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -55,13 +55,30 @@ public String getDescription(int tagType)
case TagSamsungModelId:
return getSamsungModelIdDescription();

case TagRawDataByteOrder:
return getRawDataByteOrderDescription();
case TagWhiteBalanceSetup:
return getWhiteBalanceSetupDescription();

case TagCameraTemperature:
return getCameraTemperatureDescription();

case TagRawDataCFAPattern:
return getRawDataCFAPatternDescription();

case TagFaceDetect:
return getFaceDetectDescription();
case TagFaceRecognition:
return getFaceRecognitionDescription();

case TagLensType:
return getLensTypeDescription();

case TagColorSpace:
return getColorSpaceDescription();
case TagSmartRange:
return getSmartRangeDescription();

default:
return super.getDescription(tagType);
}
Expand Down Expand Up @@ -192,11 +209,40 @@ public String getSamsungModelIdDescription()
}

@Nullable
private String getCameraTemperatureDescription()
public String getRawDataByteOrderDescription()
{
return getIndexedDescription(TagRawDataByteOrder,
"Little-endian (Intel)", "Big-endian (Motorola)");
}

@Nullable
public String getWhiteBalanceSetupDescription()
{
return getIndexedDescription(TagWhiteBalanceSetup,
"Auto", "Manual");
}

@Nullable
public String getCameraTemperatureDescription()
{
return getFormattedInt(TagCameraTemperature, "%d C");
}

@Nullable
public String getRawDataCFAPatternDescription()
{
Integer value = _directory.getInteger(TagRawDataCFAPattern);
if (value == null)
return null;

switch (value) {
case 0: return "Unchanged";
case 1: return "Swap";
case 65535: return "Roll";
default: return String.format("Unknown (%d)", value);
}
}

@Nullable
public String getFaceDetectDescription()
{
Expand All @@ -210,4 +256,46 @@ public String getFaceRecognitionDescription()
return getIndexedDescription(TagFaceRecognition,
"Off", "On");
}

@Nullable
public String getLensTypeDescription()
{
return getIndexedDescription(TagLensType,
"Built-in or Manual Lens",
"Samsung NX 30mm F2 Pancake",
"Samsung NX 18-55mm F3.5-5.6 OIS",
"Samsung NX 50-200mm F4-5.6 ED OIS",
"Samsung NX 20-50mm F3.5-5.6 ED",
"Samsung NX 20mm F2.8 Pancake",
"Samsung NX 18-200mm F3.5-6.3 ED OIS",
"Samsung NX 60mm F2.8 Macro ED OIS SSA",
"Samsung NX 16mm F2.4 Pancake",
"Samsung NX 85mm F1.4 ED SSA",
"Samsung NX 45mm F1.8",
"Samsung NX 45mm F1.8 2D/3D",
"Samsung NX 12-24mm F4-5.6 ED",
"Samsung NX 16-50mm F2-2.8 S ED OIS",
"Samsung NX 10mm F3.5 Fisheye",
"Samsung NX 16-50mm F3.5-5.6 Power Zoom ED OIS",
null,
null,
null,
null,
"Samsung NX 50-150mm F2.8 S ED OIS",
"Samsung NX 300mm F2.8 ED OIS");
}

@Nullable
public String getColorSpaceDescription()
{
return getIndexedDescription(TagColorSpace,
"sRGB", "Adobe RGB");
}

@Nullable
public String getSmartRangeDescription()
{
return getIndexedDescription(TagSmartRange,
"Off", "On");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -42,14 +42,45 @@ public class SamsungType2MakernoteDirectory extends Directory
public static final int TagDeviceType = 0x0002;
public static final int TagSamsungModelId = 0x0003;

public static final int TagOrientationInfo = 0x0011;

public static final int TagSmartAlbumColor = 0x0020;
public static final int TagPictureWizard = 0x0021;

public static final int TagLocalLocationName = 0x0030;

public static final int TagPreviewIfd = 0x0035;

public static final int TagRawDataByteOrder = 0x0040;
public static final int TagWhiteBalanceSetup = 0x0041;

public static final int TagCameraTemperature = 0x0043;

public static final int TagRawDataCFAPattern = 0x0050;

public static final int TagFaceDetect = 0x0100;
public static final int TagFaceRecognition = 0x0120;
public static final int TagFaceName = 0x0123;

// following tags found only in SRW images
public static final int TagFirmwareName = 0xa001;
public static final int TagSerialNumber = 0xa002;
public static final int TagLensType = 0xa003;
public static final int TagLensFirmware = 0xa004;
public static final int TagInternalLensSerialNumber = 0xa005;

public static final int TagSensorAreas = 0xa010;
public static final int TagColorSpace = 0xa011;
public static final int TagSmartRange = 0xa012;
public static final int TagExposureCompensation = 0xa013;
public static final int TagISO = 0xa014;

public static final int TagExposureTime = 0xa018;
public static final int TagFNumber = 0xa019;

public static final int TagFocalLengthIn35mmFormat = 0xa01a;

public static final int TagEncryptionKey = 0xa020;

@NotNull
private static final HashMap<Integer, String> _tagNameMap = new HashMap<Integer, String>();
Expand All @@ -60,12 +91,44 @@ public class SamsungType2MakernoteDirectory extends Directory
_tagNameMap.put(TagDeviceType, "Device Type");
_tagNameMap.put(TagSamsungModelId, "Model Id");

_tagNameMap.put(TagOrientationInfo, "Orientation Info");

_tagNameMap.put(TagSmartAlbumColor, "Smart Album Color");
_tagNameMap.put(TagPictureWizard, "Picture Wizard");

_tagNameMap.put(TagLocalLocationName, "Local Location Name");

_tagNameMap.put(TagPreviewIfd, "Preview IFD");

_tagNameMap.put(TagRawDataByteOrder, "Raw Data Byte Order");
_tagNameMap.put(TagWhiteBalanceSetup, "White Balance Setup");

_tagNameMap.put(TagCameraTemperature, "Camera Temperature");

_tagNameMap.put(TagRawDataCFAPattern, "Raw Data CFA Pattern");

_tagNameMap.put(TagFaceDetect, "Face Detect");
_tagNameMap.put(TagFaceRecognition, "Face Recognition");
_tagNameMap.put(TagFaceName, "Face Name");

_tagNameMap.put(TagFirmwareName, "Firmware Name");
_tagNameMap.put(TagSerialNumber, "Serial Number");
_tagNameMap.put(TagLensType, "Lens Type");
_tagNameMap.put(TagLensFirmware, "Lens Firmware");
_tagNameMap.put(TagInternalLensSerialNumber, "Internal Lens Serial Number");

_tagNameMap.put(TagSensorAreas, "Sensor Areas");
_tagNameMap.put(TagColorSpace, "Color Space");
_tagNameMap.put(TagSmartRange, "Smart Range");
_tagNameMap.put(TagExposureCompensation, "Exposure Compensation");
_tagNameMap.put(TagISO, "ISO");

_tagNameMap.put(TagExposureTime, "Exposure Time");
_tagNameMap.put(TagFNumber, "F-Number");

_tagNameMap.put(TagFocalLengthIn35mmFormat, "Focal Length in 35mm Format");

_tagNameMap.put(TagEncryptionKey, "Encryption Key");
}

public SamsungType2MakernoteDirectory()
Expand Down

0 comments on commit 964a042

Please sign in to comment.