diff --git a/core/java/android/hardware/CameraStreamStats.java b/core/java/android/hardware/CameraStreamStats.java index ae801b639d516..41d1e2523a9b3 100644 --- a/core/java/android/hardware/CameraStreamStats.java +++ b/core/java/android/hardware/CameraStreamStats.java @@ -19,7 +19,6 @@ import android.os.Parcel; import android.os.Parcelable; import android.util.Log; -import java.util.ArrayList; /** * The camera stream statistics used for passing camera stream information from * camera service to camera service proxy. @@ -30,6 +29,8 @@ import java.util.ArrayList; * @hide */ public class CameraStreamStats implements Parcelable { + public static final int HISTOGRAM_TYPE_UNKNOWN = 0; + public static final int HISTOGRAM_TYPE_CAPTURE_LATENCY = 1; private int mWidth; private int mHeight; @@ -41,6 +42,9 @@ public class CameraStreamStats implements Parcelable { private int mStartLatencyMs; private int mMaxHalBuffers; private int mMaxAppBuffers; + private int mHistogramType; + private float[] mHistogramBins; + private long[] mHistogramCounts; private static final String TAG = "CameraStreamStats"; @@ -55,6 +59,7 @@ public class CameraStreamStats implements Parcelable { mStartLatencyMs = 0; mMaxHalBuffers = 0; mMaxAppBuffers = 0; + mHistogramType = HISTOGRAM_TYPE_UNKNOWN; } public CameraStreamStats(int width, int height, int format, @@ -70,6 +75,7 @@ public class CameraStreamStats implements Parcelable { mStartLatencyMs = startLatencyMs; mMaxHalBuffers = maxHalBuffers; mMaxAppBuffers = maxAppBuffers; + mHistogramType = HISTOGRAM_TYPE_UNKNOWN; } public static final @android.annotation.NonNull Parcelable.Creator CREATOR = @@ -112,6 +118,9 @@ public class CameraStreamStats implements Parcelable { dest.writeInt(mStartLatencyMs); dest.writeInt(mMaxHalBuffers); dest.writeInt(mMaxAppBuffers); + dest.writeInt(mHistogramType); + dest.writeFloatArray(mHistogramBins); + dest.writeLongArray(mHistogramCounts); } public void readFromParcel(Parcel in) { @@ -125,6 +134,9 @@ public class CameraStreamStats implements Parcelable { mStartLatencyMs = in.readInt(); mMaxHalBuffers = in.readInt(); mMaxAppBuffers = in.readInt(); + mHistogramType = in.readInt(); + mHistogramBins = in.createFloatArray(); + mHistogramCounts = in.createLongArray(); } public int getWidth() { @@ -166,4 +178,16 @@ public class CameraStreamStats implements Parcelable { public int getMaxAppBuffers() { return mMaxAppBuffers; } + + public int getHistogramType() { + return mHistogramType; + } + + public float[] getHistogramBins() { + return mHistogramBins; + } + + public long[] getHistogramCounts() { + return mHistogramCounts; + } } diff --git a/services/core/java/com/android/server/camera/CameraServiceProxy.java b/services/core/java/com/android/server/camera/CameraServiceProxy.java index 2a814268da250..40d20734eb50d 100644 --- a/services/core/java/com/android/server/camera/CameraServiceProxy.java +++ b/services/core/java/com/android/server/camera/CameraServiceProxy.java @@ -57,6 +57,7 @@ import com.android.server.wm.WindowManagerInternal; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List; @@ -466,8 +467,13 @@ public class CameraServiceProxy extends SystemService streamProtos[i].firstCaptureLatencyMillis = streamStats.getStartLatencyMs(); streamProtos[i].maxHalBuffers = streamStats.getMaxHalBuffers(); streamProtos[i].maxAppBuffers = streamStats.getMaxAppBuffers(); + streamProtos[i].histogramType = streamStats.getHistogramType(); + streamProtos[i].histogramBins = streamStats.getHistogramBins(); + streamProtos[i].histogramCounts = streamStats.getHistogramCounts(); if (CameraServiceProxy.DEBUG) { + String histogramTypeName = + cameraHistogramTypeToString(streamProtos[i].histogramType); Slog.v(TAG, "Stream " + i + ": width " + streamProtos[i].width + ", height " + streamProtos[i].height + ", format " + streamProtos[i].format @@ -478,7 +484,12 @@ public class CameraServiceProxy extends SystemService + ", firstCaptureLatencyMillis " + streamProtos[i].firstCaptureLatencyMillis + ", maxHalBuffers " + streamProtos[i].maxHalBuffers - + ", maxAppBuffers " + streamProtos[i].maxAppBuffers); + + ", maxAppBuffers " + streamProtos[i].maxAppBuffers + + ", histogramType " + histogramTypeName + + ", histogramBins " + + Arrays.toString(streamProtos[i].histogramBins) + + ", histogramCounts " + + Arrays.toString(streamProtos[i].histogramCounts)); } } } @@ -797,4 +808,14 @@ public class CameraServiceProxy extends SystemService return "CAMERA_FACING_UNKNOWN"; } + private static String cameraHistogramTypeToString(int cameraHistogramType) { + switch (cameraHistogramType) { + case CameraStreamStats.HISTOGRAM_TYPE_CAPTURE_LATENCY: + return "HISTOGRAM_TYPE_CAPTURE_LATENCY"; + default: + break; + } + return "HISTOGRAM_TYPE_UNKNOWN"; + } + }