Add support to dump LensShadingMap metadata, related cleanup
- Add custom toString() for LensShadingMap to workaround
b/16899576.
- Remove several now-unneeded custom toString() methods,
since lmp-release provides them in:
frameworks/base/core/java/android/hardware/camera2/params/
- Picky formatting fix.
Bug: 16899576
Change-Id: Iebf0b03ea27f291bc0f633b3760d5bd696df906d
diff --git a/src/com/android/camera/util/CaptureDataSerializer.java b/src/com/android/camera/util/CaptureDataSerializer.java
index 49470c7..79d1cf6 100644
--- a/src/com/android/camera/util/CaptureDataSerializer.java
+++ b/src/com/android/camera/util/CaptureDataSerializer.java
@@ -20,6 +20,7 @@
import android.hardware.camera2.CaptureRequest;
import android.hardware.camera2.CaptureResult;
import android.hardware.camera2.params.ColorSpaceTransform;
+import android.hardware.camera2.params.LensShadingMap;
import android.hardware.camera2.params.RggbChannelVector;
import android.hardware.camera2.params.TonemapCurve;
import android.util.Pair;
@@ -115,7 +116,7 @@
@Override
public void write(Writer writer) throws IOException {
List<CaptureResult.Key<?>> keys = metadata.getKeys();
- writer.write(String.format(title));
+ writer.write(String.format(title) + '\n');
// TODO: move to CameraMetadata#toString ?
for (CaptureResult.Key<?> key : keys) {
@@ -151,12 +152,8 @@
} else {
// These classes don't have a toString() method yet
// See: http://b/16899576
- if (object instanceof RggbChannelVector) {
- return toString((RggbChannelVector) object);
- } else if (object instanceof ColorSpaceTransform) {
- return toString((ColorSpaceTransform) object);
- } else if (object instanceof TonemapCurve) {
- return toString((TonemapCurve) object);
+ if (object instanceof LensShadingMap) {
+ return toString((LensShadingMap) object);
} else if (object instanceof Pair) {
return toString((Pair<?, ?>) object);
}
@@ -184,51 +181,41 @@
}
}
- private static String toString(RggbChannelVector vector) {
+ private static String toString(LensShadingMap lensShading) {
StringBuilder str = new StringBuilder();
- str.append("RggbChannelVector:");
- str.append(" R:");
- str.append(vector.getRed());
- str.append(" G(even):");
- str.append(vector.getGreenEven());
- str.append(" G(odd):");
- str.append(vector.getGreenOdd());
- str.append(" B:");
- str.append(vector.getBlue());
+ str.append("LensShadingMap{");
- return str.toString();
- }
+ String channelName[] = {"R", "G_even", "G_odd", "B"};
+ int numRows = lensShading.getRowCount();
+ int numCols = lensShading.getColumnCount();
+ int numChannels = RggbChannelVector.COUNT;
- private static String toString(ColorSpaceTransform transform) {
- StringBuilder str = new StringBuilder();
- Rational[] rationals = new Rational[9];
- transform.copyElements(rationals, 0);
- str.append("ColorSpaceTransform: ");
- str.append(Arrays.toString(rationals));
- return str.toString();
- }
+ for (int ch = 0; ch < numChannels; ch++) {
+ str.append(channelName[ch]);
+ str.append(":(");
- private static String toString(TonemapCurve curve) {
- StringBuilder str = new StringBuilder();
- str.append("TonemapCurve:");
+ for (int r = 0; r < numRows; r++) {
+ str.append("[");
+ for (int c = 0; c < numCols; c++) {
+ float gain = lensShading.getGainFactor(ch, c, r);
+ str.append(gain);
+ if (c < numCols - 1) {
+ str.append(", ");
+ }
+ }
+ str.append("]");
+ if (r < numRows - 1) {
+ str.append(", ");
+ }
+ }
- float[] reds = new float[curve.getPointCount(TonemapCurve.CHANNEL_RED)
- * TonemapCurve.POINT_SIZE];
- curve.copyColorCurve(TonemapCurve.CHANNEL_RED, reds, 0);
- float[] greens = new float[curve.getPointCount(TonemapCurve.CHANNEL_GREEN)
- * TonemapCurve.POINT_SIZE];
- curve.copyColorCurve(TonemapCurve.CHANNEL_GREEN, greens, 0);
- float[] blues = new float[curve.getPointCount(TonemapCurve.CHANNEL_BLUE)
- * TonemapCurve.POINT_SIZE];
- curve.copyColorCurve(TonemapCurve.CHANNEL_BLUE, blues, 0);
+ str.append(")");
+ if (ch < numChannels - 1) {
+ str.append(", ");
+ }
+ }
- str.append("\n\nReds: ");
- str.append(Arrays.toString(reds));
- str.append("\n\nGreens: ");
- str.append(Arrays.toString(greens));
- str.append("\n\nBlues: ");
- str.append(Arrays.toString(blues));
-
+ str.append("}");
return str.toString();
}