Merge "Camera: fix various depth camera failures" into pie-cts-dev
am: 37a878be84
Change-Id: I31c6ae53d332abfba04ecf6b56021e6f5365dcfb
diff --git a/tests/camera/libctscamera2jni/native-camera-jni.cpp b/tests/camera/libctscamera2jni/native-camera-jni.cpp
index 1a35a9f..88cb8ef 100644
--- a/tests/camera/libctscamera2jni/native-camera-jni.cpp
+++ b/tests/camera/libctscamera2jni/native-camera-jni.cpp
@@ -673,6 +673,37 @@
return mCameraIdList->cameraIds[idx];
}
+ // Caller is responsible to free returned characteristics metadata
+ ACameraMetadata* getCameraChars(int idx) {
+ if (!mMgrInited || !mCameraIdList || idx < 0 || idx >= mCameraIdList->numCameras) {
+ return nullptr;
+ }
+
+ ACameraMetadata* chars;
+ camera_status_t ret = ACameraManager_getCameraCharacteristics(
+ mCameraManager, mCameraIdList->cameraIds[idx], &chars);
+ if (ret != ACAMERA_OK) {
+ LOG_ERROR(errorString, "Get camera characteristics failed: ret %d", ret);
+ return nullptr;
+ }
+ return chars;
+ }
+
+ // Caller is responsible to free returned characteristics metadata.
+ ACameraMetadata* getCameraChars(const char* id) {
+ if (!mMgrInited || id == nullptr) {
+ return nullptr;
+ }
+
+ ACameraMetadata* chars;
+ camera_status_t ret = ACameraManager_getCameraCharacteristics(mCameraManager, id, &chars);
+ if (ret != ACAMERA_OK) {
+ LOG_ERROR(errorString, "Get camera characteristics failed: ret %d", ret);
+ return nullptr;
+ }
+ return chars;
+ }
+
camera_status_t updateOutput(JNIEnv* env, ACaptureSessionOutput *output) {
if (mSession == nullptr) {
ALOGE("Testcase cannot update output configuration session %p",
@@ -1684,6 +1715,18 @@
goto cleanup;
}
+ {
+ ACameraMetadata* chars = testCase.getCameraChars(cameraId);
+ StaticInfo staticInfo(chars);
+ if (!staticInfo.isColorOutputSupported()) {
+ ALOGI("%s: camera %s does not support color output. skipping",
+ __FUNCTION__, cameraId);
+ ACameraMetadata_free(chars);
+ continue;
+ }
+ ACameraMetadata_free(chars);
+ }
+
ret = testCase.openCamera(cameraId);
if (ret != ACAMERA_OK) {
LOG_ERROR(errorString, "Open camera device %s failure. ret %d", cameraId, ret);
@@ -1821,6 +1864,18 @@
goto cleanup;
}
+ {
+ ACameraMetadata* chars = testCase.getCameraChars(cameraId);
+ StaticInfo staticInfo(chars);
+ if (!staticInfo.isColorOutputSupported()) {
+ ALOGI("%s: camera %s does not support color output. skipping",
+ __FUNCTION__, cameraId);
+ ACameraMetadata_free(chars);
+ continue;
+ }
+ ACameraMetadata_free(chars);
+ }
+
ret = testCase.openCamera(cameraId);
if (ret != ACAMERA_OK) {
LOG_ERROR(errorString, "Open camera device %s failure. ret %d", cameraId, ret);
@@ -2067,6 +2122,18 @@
goto cleanup;
}
+ {
+ ACameraMetadata* chars = testCase.getCameraChars(cameraId);
+ StaticInfo staticInfo(chars);
+ if (!staticInfo.isColorOutputSupported()) {
+ ALOGI("%s: camera %s does not support color output. skipping",
+ __FUNCTION__, cameraId);
+ ACameraMetadata_free(chars);
+ continue;
+ }
+ ACameraMetadata_free(chars);
+ }
+
ret = testCase.openCamera(cameraId);
if (ret != ACAMERA_OK) {
LOG_ERROR(errorString, "Open camera device %s failure. ret %d", cameraId, ret);
@@ -2298,6 +2365,18 @@
goto cleanup;
}
+ {
+ ACameraMetadata* chars = testCase.getCameraChars(cameraId);
+ StaticInfo staticInfo(chars);
+ if (!staticInfo.isColorOutputSupported()) {
+ ALOGI("%s: camera %s does not support color output. skipping",
+ __FUNCTION__, cameraId);
+ ACameraMetadata_free(chars);
+ continue;
+ }
+ ACameraMetadata_free(chars);
+ }
+
ret = testCase.openCamera(cameraId);
if (ret != ACAMERA_OK) {
LOG_ERROR(errorString, "Open camera device %s failure. ret %d", cameraId, ret);
@@ -2501,6 +2580,18 @@
goto cleanup;
}
+ {
+ ACameraMetadata* chars = testCase.getCameraChars(cameraId);
+ StaticInfo staticInfo(chars);
+ if (!staticInfo.isColorOutputSupported()) {
+ ALOGI("%s: camera %s does not support color output. skipping",
+ __FUNCTION__, cameraId);
+ ACameraMetadata_free(chars);
+ continue;
+ }
+ ACameraMetadata_free(chars);
+ }
+
ret = testCase.openCamera(cameraId);
if (ret != ACAMERA_OK) {
LOG_ERROR(errorString, "Open camera device %s failure. ret %d", cameraId, ret);
diff --git a/tests/camera/src/android/hardware/camera2/cts/RobustnessTest.java b/tests/camera/src/android/hardware/camera2/cts/RobustnessTest.java
index 47020ed..e74405f 100644
--- a/tests/camera/src/android/hardware/camera2/cts/RobustnessTest.java
+++ b/tests/camera/src/android/hardware/camera2/cts/RobustnessTest.java
@@ -914,7 +914,13 @@
"Testing Camera %s for abandoning surface of a repeating request", id));
openDevice(id);
+ if (!mStaticInfo.isColorOutputSupported()) {
+ Log.i(TAG, "Camera " + id + " does not support color output, skipping");
+ continue;
+ }
+
try {
+
SurfaceTexture preview = new SurfaceTexture(/*random int*/ 1);
Surface previewSurface = new Surface(preview);