Merge "Camera2: fix Surface cast issue" into mnc-dev
This commit is contained in:
@@ -2053,8 +2053,10 @@ public class CameraDeviceImpl extends CameraDevice {
|
|||||||
requestMetadata, /*reprocess*/false, CameraCaptureSession.SESSION_ID_NONE);
|
requestMetadata, /*reprocess*/false, CameraCaptureSession.SESSION_ID_NONE);
|
||||||
|
|
||||||
// Overwrite the capture intent to make sure a good value is set.
|
// Overwrite the capture intent to make sure a good value is set.
|
||||||
Surface[] surfaces = (Surface[])outputSurfaces.toArray();
|
Iterator<Surface> iterator = outputSurfaces.iterator();
|
||||||
if (outputSurfaces.size() == 1 && SurfaceUtils.isSurfaceForHwVideoEncoder(surfaces[0])) {
|
Surface firstSurface = iterator.next();
|
||||||
|
Surface secondSurface = null;
|
||||||
|
if (outputSurfaces.size() == 1 && SurfaceUtils.isSurfaceForHwVideoEncoder(firstSurface)) {
|
||||||
singleTargetRequestBuilder.set(CaptureRequest.CONTROL_CAPTURE_INTENT,
|
singleTargetRequestBuilder.set(CaptureRequest.CONTROL_CAPTURE_INTENT,
|
||||||
CaptureRequest.CONTROL_CAPTURE_INTENT_PREVIEW);
|
CaptureRequest.CONTROL_CAPTURE_INTENT_PREVIEW);
|
||||||
} else {
|
} else {
|
||||||
@@ -2071,19 +2073,20 @@ public class CameraDeviceImpl extends CameraDevice {
|
|||||||
requestMetadata, /*reprocess*/false, CameraCaptureSession.SESSION_ID_NONE);
|
requestMetadata, /*reprocess*/false, CameraCaptureSession.SESSION_ID_NONE);
|
||||||
doubleTargetRequestBuilder.set(CaptureRequest.CONTROL_CAPTURE_INTENT,
|
doubleTargetRequestBuilder.set(CaptureRequest.CONTROL_CAPTURE_INTENT,
|
||||||
CaptureRequest.CONTROL_CAPTURE_INTENT_VIDEO_RECORD);
|
CaptureRequest.CONTROL_CAPTURE_INTENT_VIDEO_RECORD);
|
||||||
doubleTargetRequestBuilder.addTarget(surfaces[0]);
|
doubleTargetRequestBuilder.addTarget(firstSurface);
|
||||||
doubleTargetRequestBuilder.addTarget(surfaces[1]);
|
secondSurface = iterator.next();
|
||||||
|
doubleTargetRequestBuilder.addTarget(secondSurface);
|
||||||
doubleTargetRequestBuilder.setPartOfCHSRequestList(/*partOfCHSList*/true);
|
doubleTargetRequestBuilder.setPartOfCHSRequestList(/*partOfCHSList*/true);
|
||||||
// Make sure singleTargetRequestBuilder contains only recording surface for
|
// Make sure singleTargetRequestBuilder contains only recording surface for
|
||||||
// preview + recording case.
|
// preview + recording case.
|
||||||
Surface recordingSurface = surfaces[0];
|
Surface recordingSurface = firstSurface;
|
||||||
if (!SurfaceUtils.isSurfaceForHwVideoEncoder(recordingSurface)) {
|
if (!SurfaceUtils.isSurfaceForHwVideoEncoder(recordingSurface)) {
|
||||||
recordingSurface = surfaces[1];
|
recordingSurface = secondSurface;
|
||||||
}
|
}
|
||||||
singleTargetRequestBuilder.addTarget(recordingSurface);
|
singleTargetRequestBuilder.addTarget(recordingSurface);
|
||||||
} else {
|
} else {
|
||||||
// Single output case: either recording or preview.
|
// Single output case: either recording or preview.
|
||||||
singleTargetRequestBuilder.addTarget(surfaces[0]);
|
singleTargetRequestBuilder.addTarget(firstSurface);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Generate the final request list.
|
// Generate the final request list.
|
||||||
|
|||||||
Reference in New Issue
Block a user