From a4adaecacead593261614dfdc7b44725e2136093 Mon Sep 17 00:00:00 2001
From: Shuzhen Wang
If a logical multi-camera fails to generate capture result for one of + * its physical cameras, this method will be called with a {@link CaptureFailure} + * for that physical camera. In such cases, as long as the logical camera capture + * result is valid, {@link #onCaptureCompleted} will still be called.
+ * *The default implementation of this method does nothing.
* * @param session diff --git a/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java b/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java index f2d8caaab0e7a..693b5e085d8a4 100644 --- a/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java +++ b/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java @@ -1908,18 +1908,21 @@ public class CameraDeviceImpl extends CameraDevice Log.v(TAG, String.format("got error frame %d", frameNumber)); } - // Update FrameNumberTracker for every frame during HFR mode. - if (mBatchOutputMap.containsKey(requestId)) { - for (int i = 0; i < mBatchOutputMap.get(requestId); i++) { - mFrameNumberTracker.updateTracker(frameNumber - (subsequenceId - i), + // Do not update frame number tracker for physical camera result error. + if (errorPhysicalCameraId == null) { + // Update FrameNumberTracker for every frame during HFR mode. + if (mBatchOutputMap.containsKey(requestId)) { + for (int i = 0; i < mBatchOutputMap.get(requestId); i++) { + mFrameNumberTracker.updateTracker(frameNumber - (subsequenceId - i), + /*error*/true, request.getRequestType()); + } + } else { + mFrameNumberTracker.updateTracker(frameNumber, /*error*/true, request.getRequestType()); } - } else { - mFrameNumberTracker.updateTracker(frameNumber, - /*error*/true, request.getRequestType()); - } - checkAndFireSequenceComplete(); + checkAndFireSequenceComplete(); + } // Dispatch the failure callback final long ident = Binder.clearCallingIdentity();