Camera2: fix high speed request builder creation issue

The metadata local copy was mutated (swapped) to an empty copy after use,
we need make a copy every time.

Bug: 21442271
Change-Id: I8a71663ba964288bdd1d7f50b42db762d28d89c0
This commit is contained in:
Zhijun He
2015-06-17 09:21:10 -07:00
parent 73d0432324
commit a002fb4df4

View File

@@ -2049,6 +2049,8 @@ public class CameraDeviceImpl extends CameraDevice {
// Prepare the Request builders: need carry over the request controls.
// First, create a request builder that will only include preview or recording target.
CameraMetadataNative requestMetadata = new CameraMetadataNative(request.getNativeCopy());
// Note that after this step, the requestMetadata is mutated (swapped) and can not be used
// for next request builder creation.
CaptureRequest.Builder singleTargetRequestBuilder = new CaptureRequest.Builder(
requestMetadata, /*reprocess*/false, CameraCaptureSession.SESSION_ID_NONE);
@@ -2069,6 +2071,9 @@ public class CameraDeviceImpl extends CameraDevice {
// Second, Create a request builder that will include both preview and recording targets.
CaptureRequest.Builder doubleTargetRequestBuilder = null;
if (outputSurfaces.size() == 2) {
// Have to create a new copy, the original one was mutated after a new
// CaptureRequest.Builder creation.
requestMetadata = new CameraMetadataNative(request.getNativeCopy());
doubleTargetRequestBuilder = new CaptureRequest.Builder(
requestMetadata, /*reprocess*/false, CameraCaptureSession.SESSION_ID_NONE);
doubleTargetRequestBuilder.set(CaptureRequest.CONTROL_CAPTURE_INTENT,