camera2: Api change (#getFrameNumber -> long; @hide REQUEST_FRAME_COUNT)
Change-Id: I164011c97a57fb9fb9c504ae4c5f394dcb36a4bc
diff --git a/core/java/android/hardware/camera2/CameraCharacteristics.java b/core/java/android/hardware/camera2/CameraCharacteristics.java
index 6cb6a24..dd16f6f 100644
--- a/core/java/android/hardware/camera2/CameraCharacteristics.java
+++ b/core/java/android/hardware/camera2/CameraCharacteristics.java
@@ -1934,7 +1934,7 @@
* android.sync.frameNumber to a non-negative value).</p>
* <p>This defines the maximum distance (in number of metadata results),
* between android.sync.frameNumber and the equivalent
- * android.request.frameCount.</p>
+ * frame number for that result.</p>
* <p>In other words this acts as an upper boundary for how many frames
* must occur before the camera device knows for a fact that the new
* submitted camera settings have been applied in outgoing frames.</p>
diff --git a/core/java/android/hardware/camera2/CameraMetadata.java b/core/java/android/hardware/camera2/CameraMetadata.java
index ebbfc63..9f7ae60 100644
--- a/core/java/android/hardware/camera2/CameraMetadata.java
+++ b/core/java/android/hardware/camera2/CameraMetadata.java
@@ -664,7 +664,7 @@
/**
* <p>Every frame has the requests immediately applied.</p>
* <p>Furthermore for all results,
- * <code>android.sync.frameNumber == android.request.frameCount</code></p>
+ * <code>android.sync.frameNumber == CaptureResult#getFrameNumber()</code></p>
* <p>Changing controls over multiple requests one after another will
* produce results that have those controls applied atomically
* each frame.</p>
@@ -679,6 +679,7 @@
* <p>By submitting a series of identical requests, the camera device
* will eventually have the camera settings applied, but it is
* unknown when that exact point will be.</p>
+ * <p>All LEGACY capability devices will have this as their maxLatency.</p>
* @see CameraCharacteristics#SYNC_MAX_LATENCY
*/
public static final int SYNC_MAX_LATENCY_UNKNOWN = -1;
diff --git a/core/java/android/hardware/camera2/CaptureResult.java b/core/java/android/hardware/camera2/CaptureResult.java
index 20a04f0..4f80bc4 100644
--- a/core/java/android/hardware/camera2/CaptureResult.java
+++ b/core/java/android/hardware/camera2/CaptureResult.java
@@ -17,6 +17,7 @@
package android.hardware.camera2;
import android.hardware.camera2.impl.CameraMetadataNative;
+import android.hardware.camera2.impl.CaptureResultExtras;
import android.hardware.camera2.impl.PublicKey;
import android.hardware.camera2.impl.SyntheticKey;
import android.hardware.camera2.utils.TypeReference;
@@ -142,12 +143,16 @@
private final CameraMetadataNative mResults;
private final CaptureRequest mRequest;
private final int mSequenceId;
+ private final long mFrameNumber;
/**
* Takes ownership of the passed-in properties object
+ *
+ * <p>For internal use only</p>
* @hide
*/
- public CaptureResult(CameraMetadataNative results, CaptureRequest parent, int sequenceId) {
+ public CaptureResult(CameraMetadataNative results, CaptureRequest parent,
+ CaptureResultExtras extras) {
if (results == null) {
throw new IllegalArgumentException("results was null");
}
@@ -156,12 +161,17 @@
throw new IllegalArgumentException("parent was null");
}
+ if (extras == null) {
+ throw new IllegalArgumentException("extras was null");
+ }
+
mResults = CameraMetadataNative.move(results);
if (mResults.isEmpty()) {
throw new AssertionError("Results must not be empty");
}
mRequest = parent;
- mSequenceId = sequenceId;
+ mSequenceId = extras.getRequestId();
+ mFrameNumber = extras.getFrameNumber();
}
/**
@@ -190,6 +200,7 @@
mRequest = null;
mSequenceId = sequenceId;
+ mFrameNumber = -1;
}
/**
@@ -288,11 +299,10 @@
* for every new result or failure; and the scope is the lifetime of the
* {@link CameraDevice}.</p>
*
- * @return int frame number
+ * @return The frame number
*/
- public int getFrameNumber() {
- // TODO: @hide REQUEST_FRAME_COUNT
- return get(REQUEST_FRAME_COUNT);
+ public long getFrameNumber() {
+ return mFrameNumber;
}
/**
@@ -2026,8 +2036,10 @@
* increases with every new result (that is, each new result has a unique
* frameCount value).</p>
* <p>Reset on release()</p>
+ * @deprecated
+ * @hide
*/
- @PublicKey
+ @Deprecated
public static final Key<Integer> REQUEST_FRAME_COUNT =
new Key<Integer>("android.request.frameCount", int.class);
diff --git a/core/java/android/hardware/camera2/TotalCaptureResult.java b/core/java/android/hardware/camera2/TotalCaptureResult.java
index 226f09d..ec4bc7d 100644
--- a/core/java/android/hardware/camera2/TotalCaptureResult.java
+++ b/core/java/android/hardware/camera2/TotalCaptureResult.java
@@ -17,6 +17,7 @@
package android.hardware.camera2;
import android.hardware.camera2.impl.CameraMetadataNative;
+import android.hardware.camera2.impl.CaptureResultExtras;
import java.util.Collections;
import java.util.List;
@@ -51,8 +52,9 @@
* Takes ownership of the passed-in properties object
* @hide
*/
- public TotalCaptureResult(CameraMetadataNative results, CaptureRequest parent, int sequenceId) {
- super(results, parent, sequenceId);
+ public TotalCaptureResult(CameraMetadataNative results, CaptureRequest parent,
+ CaptureResultExtras extras) {
+ super(results, parent, extras);
}
/**
diff --git a/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java b/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java
index ed4e457..18b1202 100644
--- a/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java
+++ b/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java
@@ -313,6 +313,7 @@
return mCameraId;
}
+ @Override
public void configureOutputs(List<Surface> outputs) throws CameraAccessException {
// Treat a null input the same an empty list
if (outputs == null) {
@@ -448,6 +449,7 @@
}
}
+ @Override
public int capture(CaptureRequest request, CaptureListener listener, Handler handler)
throws CameraAccessException {
if (DEBUG) {
@@ -458,6 +460,7 @@
return submitCaptureRequest(requestList, listener, handler, /*streaming*/false);
}
+ @Override
public int captureBurst(List<CaptureRequest> requests, CaptureListener listener,
Handler handler) throws CameraAccessException {
if (requests == null || requests.isEmpty()) {
@@ -610,6 +613,7 @@
}
}
+ @Override
public int setRepeatingRequest(CaptureRequest request, CaptureListener listener,
Handler handler) throws CameraAccessException {
List<CaptureRequest> requestList = new ArrayList<CaptureRequest>();
@@ -617,6 +621,7 @@
return submitCaptureRequest(requestList, listener, handler, /*streaming*/true);
}
+ @Override
public int setRepeatingBurst(List<CaptureRequest> requests, CaptureListener listener,
Handler handler) throws CameraAccessException {
if (requests == null || requests.isEmpty()) {
@@ -625,6 +630,7 @@
return submitCaptureRequest(requests, listener, handler, /*streaming*/true);
}
+ @Override
public void stopRepeating() throws CameraAccessException {
synchronized(mInterfaceLock) {
@@ -675,6 +681,7 @@
}
}
+ @Override
public void flush() throws CameraAccessException {
synchronized(mInterfaceLock) {
checkIfCameraClosedOrInError();
@@ -1031,8 +1038,10 @@
CaptureResultExtras resultExtras) throws RemoteException {
int requestId = resultExtras.getRequestId();
+ long frameNumber = resultExtras.getFrameNumber();
+
if (DEBUG) {
- Log.v(TAG, "Received result frame " + resultExtras.getFrameNumber() + " for id "
+ Log.v(TAG, "Received result frame " + frameNumber + " for id "
+ requestId);
}
@@ -1051,7 +1060,7 @@
// Update tracker (increment counter) when it's not a partial result.
if (!isPartialResult) {
- mFrameNumberTracker.updateTracker(resultExtras.getFrameNumber(),
+ mFrameNumberTracker.updateTracker(frameNumber,
/*error*/false);
}
@@ -1060,7 +1069,7 @@
if (DEBUG) {
Log.d(TAG,
"holder is null, early return at frame "
- + resultExtras.getFrameNumber());
+ + frameNumber);
}
return;
}
@@ -1069,7 +1078,7 @@
if (DEBUG) {
Log.d(TAG,
"camera is closed, early return at frame "
- + resultExtras.getFrameNumber());
+ + frameNumber);
}
return;
}
@@ -1082,7 +1091,7 @@
// Either send a partial result or the final capture completed result
if (isPartialResult) {
final CaptureResult resultAsCapture =
- new CaptureResult(result, request, requestId);
+ new CaptureResult(result, request, resultExtras);
// Partial result
resultDispatch = new Runnable() {
@@ -1098,7 +1107,7 @@
};
} else {
final TotalCaptureResult resultAsCapture =
- new TotalCaptureResult(result, request, requestId);
+ new TotalCaptureResult(result, request, resultExtras);
// Final capture result
resultDispatch = new Runnable() {