Camera: Support querying session config with parameters
Existing isSessionConfigurationSupported doesn't consider session
parameters. However, many features are modeled as a session parameters.
Add a new API to query session configuration support considring session
parameters.
Test: Camera CTS
Bug: 309627704
Change-Id: If64d878cb0052c0f78db277ebe605d36197eb618
diff --git a/services/camera/libcameraservice/common/CameraProviderManager.h b/services/camera/libcameraservice/common/CameraProviderManager.h
index fd04854..6142a71 100644
--- a/services/camera/libcameraservice/common/CameraProviderManager.h
+++ b/services/camera/libcameraservice/common/CameraProviderManager.h
@@ -87,6 +87,7 @@
#define CAMERA_DEVICE_API_VERSION_1_0 HARDWARE_DEVICE_API_VERSION(1, 0)
#define CAMERA_DEVICE_API_VERSION_1_2 HARDWARE_DEVICE_API_VERSION(1, 2)
+#define CAMERA_DEVICE_API_VERSION_1_3 HARDWARE_DEVICE_API_VERSION(1, 3)
#define CAMERA_DEVICE_API_VERSION_3_0 HARDWARE_DEVICE_API_VERSION(3, 0)
#define CAMERA_DEVICE_API_VERSION_3_1 HARDWARE_DEVICE_API_VERSION(3, 1)
#define CAMERA_DEVICE_API_VERSION_3_2 HARDWARE_DEVICE_API_VERSION(3, 2)
@@ -299,12 +300,20 @@
int targetSdkVersion, bool *isSupported);
std::vector<std::unordered_set<std::string>> getConcurrentCameraIds() const;
+
+ /**
+ * Create a default capture request metadata for a camera and a specific
+ * template.
+ */
+ status_t createDefaultRequest(const std::string& id,
+ camera3::camera_request_template_t templateId,
+ hardware::camera2::impl::CameraMetadataNative* request) const;
/**
* Check for device support of specific stream combination.
*/
status_t isSessionConfigurationSupported(const std::string& id,
const SessionConfiguration &configuration,
- bool overrideForPerfClass, camera3::metadataGetter getMetadata,
+ bool overrideForPerfClass, bool checkSessionParams,
bool *status /*out*/) const;
/**
@@ -619,12 +628,17 @@
virtual status_t isSessionConfigurationSupported(
const SessionConfiguration &/*configuration*/,
bool /*overrideForPerfClass*/,
- camera3::metadataGetter /*getMetadata*/,
+ bool /*checkSessionParams*/,
bool * /*status*/) {
return INVALID_OPERATION;
}
virtual status_t filterSmallJpegSizes() = 0;
virtual void notifyDeviceStateChange(int64_t /*newState*/) {}
+ virtual status_t createDefaultRequest(
+ camera3::camera_request_template_t /*templateId*/,
+ camera_metadata_t** /*metadata*/) {
+ return INVALID_OPERATION;
+ }
DeviceInfo(const std::string& name, const metadata_vendor_id_t tagId,
const std::string &id, const hardware::hidl_version& version,
@@ -675,10 +689,6 @@
bool overrideToPortrait) override;
virtual status_t getPhysicalCameraCharacteristics(const std::string& physicalCameraId,
CameraMetadata *characteristics) const override;
- virtual status_t isSessionConfigurationSupported(
- const SessionConfiguration &configuration, bool /*overrideForPerfClass*/,
- camera3::metadataGetter /*getMetadata*/,
- bool *status /*out*/) = 0;
virtual status_t filterSmallJpegSizes() override;
virtual void notifyDeviceStateChange(
int64_t newState) override;
@@ -712,6 +722,7 @@
status_t addAutoframingTags();
status_t addPreCorrectionActiveArraySize();
status_t addReadoutTimestampTag(bool readoutTimestampSupported = true);
+ status_t addSessionConfigQueryVersionTag();
static void getSupportedSizes(const CameraMetadata& ch, uint32_t tag,
android_pixel_format_t format,
@@ -736,6 +747,8 @@
std::vector<int64_t>* stallDurations,
const camera_metadata_entry& halStreamConfigs,
const camera_metadata_entry& halStreamDurations);
+
+ CameraMetadata deviceInfo(const std::string &id);
};
protected:
std::string mType;
@@ -887,8 +900,6 @@
std::vector<std::string>& systemCameraDeviceIds) const;
status_t usbDeviceDetached(const std::string &usbDeviceId);
- ndk::ScopedAStatus onAidlRegistration(const std::string& in_name,
- const ::ndk::SpAIBinder& in_binder);
static bool isVirtualCameraHalEnabled();
};