android: Refuse Manual template if not supported

If the camera devices does not support the MANUAL_SENSOR capabilities
there is no point in generating a request template for the Manual
capture use case.

This change fixes CTS tests
android.hardware.camera2.cts.CameraDeviceTest#testCameraDeviceManualTemplate
android.hardware.camera2.cts.NativeCameraDeviceTest#testCameraDeviceCreateCaptureRequest

For devices that do not support MANUAL_SENSOR capabilities.

Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
Jacopo Mondi 2021-08-26 23:36:30 +02:00
parent 5fc426fbfe
commit 88009711be
2 changed files with 9 additions and 4 deletions

View file

@ -1271,13 +1271,12 @@ int CameraCapabilities::initializeStaticMetadata()
numOutStreams); numOutStreams);
/* Check capabilities */ /* Check capabilities */
std::set<camera_metadata_enum_android_request_available_capabilities> capabilities_ = computeCapabilities();
capabilities = computeCapabilities();
std::vector<camera_metadata_enum_android_request_available_capabilities> std::vector<camera_metadata_enum_android_request_available_capabilities>
capsVec(capabilities.begin(), capabilities.end()); capsVec(capabilities_.begin(), capabilities_.end());
staticMetadata_->addEntry(ANDROID_REQUEST_AVAILABLE_CAPABILITIES, capsVec); staticMetadata_->addEntry(ANDROID_REQUEST_AVAILABLE_CAPABILITIES, capsVec);
computeHwLevel(capabilities); computeHwLevel(capabilities_);
staticMetadata_->addEntry(ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL, hwLevel_); staticMetadata_->addEntry(ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL, hwLevel_);
LOG(HAL, Info) LOG(HAL, Info)
@ -1326,6 +1325,11 @@ PixelFormat CameraCapabilities::toPixelFormat(int format) const
std::unique_ptr<CameraMetadata> CameraCapabilities::requestTemplateManual() const std::unique_ptr<CameraMetadata> CameraCapabilities::requestTemplateManual() const
{ {
if (!capabilities_.count(ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR)) {
LOG(HAL, Error) << "Manual template not supported";
return nullptr;
}
std::unique_ptr<CameraMetadata> manualTemplate = requestTemplatePreview(); std::unique_ptr<CameraMetadata> manualTemplate = requestTemplatePreview();
if (!manualTemplate) if (!manualTemplate)
return nullptr; return nullptr;

View file

@ -70,6 +70,7 @@ private:
int orientation_; int orientation_;
bool rawStreamAvailable_; bool rawStreamAvailable_;
camera_metadata_enum_android_info_supported_hardware_level hwLevel_; camera_metadata_enum_android_info_supported_hardware_level hwLevel_;
std::set<camera_metadata_enum_android_request_available_capabilities> capabilities_;
std::vector<Camera3StreamConfiguration> streamConfigurations_; std::vector<Camera3StreamConfiguration> streamConfigurations_;
std::map<int, libcamera::PixelFormat> formatsMap_; std::map<int, libcamera::PixelFormat> formatsMap_;