Camera2: Update reprocess configuration test
Update reprocess configuration test to submit a sequence
of reprocess requests with 1 outputs instead of a reprocess
request with multiple outputs.
Also fix a typo in reprocess edge enhancement ITS test.
Bug: 23422291
Change-Id: Ia276847721ab079da7990c8554d6394d6e924f95
diff --git a/apps/CameraITS/tests/scene3/test_reprocess_edge_enhancement.py b/apps/CameraITS/tests/scene3/test_reprocess_edge_enhancement.py
index 910cda2..73834cb 100644
--- a/apps/CameraITS/tests/scene3/test_reprocess_edge_enhancement.py
+++ b/apps/CameraITS/tests/scene3/test_reprocess_edge_enhancement.py
@@ -192,8 +192,8 @@
# Verify reprocessing HQ(2) is similar to regular HQ(2) relative to
# OFF(0)
- assert(numpy.isclose(sharpness_reprocess[reprocess_format][2] /
- sharpness_reprocess[reprocess_format][0],
+ assert(numpy.isclose(sharpnesses_reprocess[reprocess_format][2] /
+ sharpnesses_reprocess[reprocess_format][0],
sharpness_regular[2] / sharpness_regular[0],
THRESHOLD_RELATIVE_SHARPNESS_DIFF))
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/RobustnessTest.java b/tests/tests/hardware/src/android/hardware/camera2/cts/RobustnessTest.java
index 34f2d85..8ccc931 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/RobustnessTest.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/RobustnessTest.java
@@ -306,9 +306,6 @@
{YUV , MAXIMUM, PRIV, PREVIEW, YUV , RECORD},
{PRIV, MAXIMUM, PRIV, PREVIEW, YUV , MAXIMUM},
{PRIV, MAXIMUM, YUV , PREVIEW, YUV , MAXIMUM},
- {PRIV, MAXIMUM, PRIV, PREVIEW, YUV , RECORD , JPEG, RECORD},
- {YUV , MAXIMUM, PRIV, PREVIEW, YUV , RECORD , JPEG, RECORD},
- {PRIV, MAXIMUM, YUV , PREVIEW, PRIV, PREVIEW, YUV , MAXIMUM},
{PRIV, MAXIMUM, PRIV, PREVIEW, YUV , PREVIEW, JPEG, MAXIMUM},
{YUV , MAXIMUM, PRIV, PREVIEW, YUV , PREVIEW, JPEG, MAXIMUM},
};
@@ -1218,7 +1215,7 @@
MaxStreamSizes.reprocessConfigToString(reprocessConfig)));
final int TIMEOUT_FOR_RESULT_MS = 3000;
- final int NUM_REPROCESS_CAPTURES = 3;
+ final int NUM_REPROCESS_CAPTURES_PER_CONFIG = 3;
List<SurfaceTexture> privTargets = new ArrayList<>();
List<ImageReader> jpegTargets = new ArrayList<>();
@@ -1243,64 +1240,75 @@
}
try {
- // reprocessConfig[0:1] is input
- InputConfiguration inputConfig = getInputConfig(
- Arrays.copyOfRange(reprocessConfig, 0, 2), maxSizes);
-
-
- inputReader = ImageReader.newInstance(inputConfig.getWidth(), inputConfig.getHeight(),
- inputConfig.getFormat(), NUM_REPROCESS_CAPTURES);
- inputReader.setOnImageAvailableListener(inputReaderListener, mHandler);
- outputSurfaces.add(inputReader.getSurface());
-
// reprocessConfig[2..] are additional outputs
setupConfigurationTargets(
Arrays.copyOfRange(reprocessConfig, 2, reprocessConfig.length),
maxSizes, privTargets, jpegTargets, yuvTargets, rawTargets, outputSurfaces,
- NUM_REPROCESS_CAPTURES);
+ NUM_REPROCESS_CAPTURES_PER_CONFIG);
+
+ // reprocessConfig[0:1] is input
+ InputConfiguration inputConfig = getInputConfig(
+ Arrays.copyOfRange(reprocessConfig, 0, 2), maxSizes);
+
+ // For each config, YUV and JPEG outputs will be tested. (For YUV reprocessing,
+ // the YUV ImageReader for input is also used for output.)
+ final int totalNumReprocessCaptures = NUM_REPROCESS_CAPTURES_PER_CONFIG * (
+ (inputConfig.getFormat() == ImageFormat.YUV_420_888 ? 1 : 0) +
+ jpegTargets.size() + yuvTargets.size());
+
+ // It needs 1 input buffer for each reprocess capture + the number of buffers
+ // that will be used as outputs.
+ inputReader = ImageReader.newInstance(inputConfig.getWidth(), inputConfig.getHeight(),
+ inputConfig.getFormat(),
+ totalNumReprocessCaptures + NUM_REPROCESS_CAPTURES_PER_CONFIG);
+ inputReader.setOnImageAvailableListener(inputReaderListener, mHandler);
+ outputSurfaces.add(inputReader.getSurface());
// Verify we can create a reprocessable session with the input and all outputs.
BlockingSessionCallback sessionListener = new BlockingSessionCallback();
CameraCaptureSession session = configureReprocessableCameraSession(mCamera,
inputConfig, outputSurfaces, sessionListener, mHandler);
inputWriter = ImageWriter.newInstance(session.getInputSurface(),
- NUM_REPROCESS_CAPTURES);
+ totalNumReprocessCaptures);
// Prepare a request for reprocess input
CaptureRequest.Builder builder = mCamera.createCaptureRequest(
CameraDevice.TEMPLATE_ZERO_SHUTTER_LAG);
builder.addTarget(inputReader.getSurface());
- for (int i = 0; i < NUM_REPROCESS_CAPTURES; i++) {
+ for (int i = 0; i < totalNumReprocessCaptures; i++) {
session.capture(builder.build(), inputCaptureListener, mHandler);
}
List<CaptureRequest> reprocessRequests = new ArrayList<>();
- int numReprocessOutputs = 0;
+ List<Surface> reprocessOutputs = new ArrayList<>();
+ if (inputConfig.getFormat() == ImageFormat.YUV_420_888) {
+ reprocessOutputs.add(inputReader.getSurface());
+ }
- for (int i = 0; i < NUM_REPROCESS_CAPTURES; i++) {
- TotalCaptureResult result = inputCaptureListener.getTotalCaptureResult(
- TIMEOUT_FOR_RESULT_MS);
- builder = mCamera.createReprocessCaptureRequest(result);
- inputWriter.queueInputImage(inputReaderListener.getImage(TIMEOUT_FOR_RESULT_MS));
+ for (ImageReader reader : jpegTargets) {
+ reprocessOutputs.add(reader.getSurface());
+ }
- // Test mandatory YUV and JPEG reprocess outputs.
- for (ImageReader reader : jpegTargets) {
- builder.addTarget(reader.getSurface());
- numReprocessOutputs++;
+ for (ImageReader reader : yuvTargets) {
+ reprocessOutputs.add(reader.getSurface());
+ }
+
+ for (int i = 0; i < NUM_REPROCESS_CAPTURES_PER_CONFIG; i++) {
+ for (Surface output : reprocessOutputs) {
+ TotalCaptureResult result = inputCaptureListener.getTotalCaptureResult(
+ TIMEOUT_FOR_RESULT_MS);
+ builder = mCamera.createReprocessCaptureRequest(result);
+ inputWriter.queueInputImage(
+ inputReaderListener.getImage(TIMEOUT_FOR_RESULT_MS));
+ builder.addTarget(output);
+ reprocessRequests.add(builder.build());
}
-
- for (ImageReader reader : yuvTargets) {
- builder.addTarget(reader.getSurface());
- numReprocessOutputs++;
- }
-
- reprocessRequests.add(builder.build());
}
session.captureBurst(reprocessRequests, reprocessOutputCaptureListener, mHandler);
- for (int i = 0; i < numReprocessOutputs; i++) {
+ for (int i = 0; i < reprocessOutputs.size() * NUM_REPROCESS_CAPTURES_PER_CONFIG; i++) {
TotalCaptureResult result = reprocessOutputCaptureListener.getTotalCaptureResult(
TIMEOUT_FOR_RESULT_MS);
}