Fix CTS extension errors

- Add null check for capture and repeating surface targets before checking whether they are contained in the request target to prevent incorrect validation of the capture request targets
- Prevent checking validity of the postview surface if one is not requested to fix incorrect 'postview feature is not available' error

Test: CTS test
Bug: 264321351
Change-Id: Ia8a4a2d12d3ec6748c3bf2004159306127985dd8
This commit is contained in:
Ravneet Dhanjal
2023-01-06 06:48:13 +00:00
parent 8eebb5afc3
commit b7fb257b4b
2 changed files with 26 additions and 15 deletions

View File

@@ -176,7 +176,7 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes
}
Surface postviewSurface = null;
if (burstCaptureSurface != null) {
if (burstCaptureSurface != null && config.getPostviewOutputConfiguration() != null) {
CameraExtensionUtils.SurfaceInfo burstCaptureSurfaceInfo =
CameraExtensionUtils.querySurface(burstCaptureSurface);
Size burstCaptureSurfaceSize =
@@ -193,8 +193,7 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes
postviewSurface = CameraExtensionUtils.getPostviewSurface(
config.getPostviewOutputConfiguration(), supportedPostviewSizes,
burstCaptureSurfaceInfo.mFormat);
if ((config.getPostviewOutputConfiguration() != null) && (postviewSurface == null)) {
if (postviewSurface == null) {
throw new IllegalArgumentException("Unsupported output surface for postview!");
}
}
@@ -456,11 +455,17 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes
}
private void validateCaptureRequestTargets(@NonNull CaptureRequest request) {
if ((request.getTargets().size() == 1) &&
(!request.containsTarget(mClientRepeatingRequestSurface) ||
!request.containsTarget(mClientCaptureSurface))) {
throw new IllegalArgumentException("Target output combination requested is " +
"not supported!");
if (request.getTargets().size() == 1) {
boolean containsCaptureTarget =
mClientCaptureSurface != null && request.containsTarget(mClientCaptureSurface);
boolean containsRepeatingTarget =
mClientRepeatingRequestSurface != null &&
request.containsTarget(mClientRepeatingRequestSurface);
if (!containsCaptureTarget && !containsRepeatingTarget) {
throw new IllegalArgumentException("Target output combination requested is " +
"not supported!");
}
}
if ((request.getTargets().size() == 2) &&

View File

@@ -200,7 +200,7 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession {
}
Surface postviewSurface = null;
if (burstCaptureSurface != null) {
if (burstCaptureSurface != null && config.getPostviewOutputConfiguration() != null) {
CameraExtensionUtils.SurfaceInfo burstCaptureSurfaceInfo =
CameraExtensionUtils.querySurface(burstCaptureSurface);
Size burstCaptureSurfaceSize =
@@ -218,7 +218,7 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession {
config.getPostviewOutputConfiguration(), supportedPostviewSizes,
burstCaptureSurfaceInfo.mFormat);
if ((config.getPostviewOutputConfiguration() != null) && (postviewSurface == null)) {
if (postviewSurface == null) {
throw new IllegalArgumentException("Unsupported output surface for postview!");
}
}
@@ -717,11 +717,17 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession {
}
private void validateCaptureRequestTargets(@NonNull CaptureRequest request) {
if ((request.getTargets().size() == 1) &&
(!request.containsTarget(mClientRepeatingRequestSurface) ||
!request.containsTarget(mClientCaptureSurface))) {
throw new IllegalArgumentException("Target output combination requested is " +
"not supported!");
if (request.getTargets().size() == 1) {
boolean containsCaptureTarget =
mClientCaptureSurface != null && request.containsTarget(mClientCaptureSurface);
boolean containsRepeatingTarget =
mClientRepeatingRequestSurface != null &&
request.containsTarget(mClientRepeatingRequestSurface);
if (!containsCaptureTarget && !containsRepeatingTarget) {
throw new IllegalArgumentException("Target output combination requested is " +
"not supported!");
}
}
if ((request.getTargets().size() == 2) &&