Add required use cases keys
All camera must support and declare the following use cases:
ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_DEFAULT,
ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_PREVIEW,
ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_STILL_CAPTURE,
ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_VIDEO_RECORD,
ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_PREVIEW_VIDEO_STILL,
ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_VIDEO_CALL
This is enforce in VTS hardware/interfaces/camera/provider/2.4/vts/functional/VtsHalCameraProviderV2_4TargetTest.cpp
Test: atest android.virtualdevice.cts.camera.VirtualCameraTest#virtualCamera_supports_mandatory_capture_use_cases
Fixes: 333527797
Change-Id: I15f13cb45f9e3d8c092676e0948f13dc9f88770d
diff --git a/services/camera/virtualcamera/VirtualCameraDevice.cc b/services/camera/virtualcamera/VirtualCameraDevice.cc
index 852ae2a..d4c6423 100644
--- a/services/camera/virtualcamera/VirtualCameraDevice.cc
+++ b/services/camera/virtualcamera/VirtualCameraDevice.cc
@@ -244,6 +244,13 @@
{ANDROID_COLOR_CORRECTION_ABERRATION_MODE_OFF})
.setAvailableNoiseReductionModes({ANDROID_NOISE_REDUCTION_MODE_OFF})
.setAvailableFaceDetectModes({ANDROID_STATISTICS_FACE_DETECT_MODE_OFF})
+ .setAvailableStreamUseCases(
+ {ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_DEFAULT,
+ ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_PREVIEW,
+ ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_STILL_CAPTURE,
+ ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_VIDEO_RECORD,
+ ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_PREVIEW_VIDEO_STILL,
+ ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_VIDEO_CALL})
.setAvailableTestPatternModes({ANDROID_SENSOR_TEST_PATTERN_MODE_OFF})
.setAvailableMaxDigitalZoom(1.0)
.setControlAvailableModes({ANDROID_CONTROL_MODE_AUTO})
diff --git a/services/camera/virtualcamera/util/MetadataUtil.cc b/services/camera/virtualcamera/util/MetadataUtil.cc
index 4eeff67..fd43d38 100644
--- a/services/camera/virtualcamera/util/MetadataUtil.cc
+++ b/services/camera/virtualcamera/util/MetadataUtil.cc
@@ -152,6 +152,15 @@
return *this;
}
+MetadataBuilder& MetadataBuilder::setAvailableStreamUseCases(
+ const std::vector<
+ camera_metadata_enum_android_scaler_available_stream_use_cases>&
+ availableUseCases) {
+ mEntryMap[ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES] =
+ convertTo<int64_t>(availableUseCases);
+ return *this;
+}
+
MetadataBuilder& MetadataBuilder::setFaceDetectMode(
const camera_metadata_enum_android_statistics_face_detect_mode_t
faceDetectMode) {
diff --git a/services/camera/virtualcamera/util/MetadataUtil.h b/services/camera/virtualcamera/util/MetadataUtil.h
index 4d2500b..b6c672c 100644
--- a/services/camera/virtualcamera/util/MetadataUtil.h
+++ b/services/camera/virtualcamera/util/MetadataUtil.h
@@ -129,6 +129,11 @@
const std::vector<camera_metadata_enum_android_sensor_test_pattern_mode>&
testPatternModes);
+ // See ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES in CameraCharacteristics.java
+ MetadataBuilder& setAvailableStreamUseCases(
+ const std::vector<
+ camera_metadata_enum_android_scaler_available_stream_use_cases>& availableUseCases);
+
// See ANDROID_STATISTICS_FACE_DETECT_MODE in CaptureRequest.java.
MetadataBuilder& setFaceDetectMode(
camera_metadata_enum_android_statistics_face_detect_mode_t faceDetectMode);