diff options
author | Ruben Brunk <rubenbrunk@google.com> | 2015-01-16 14:29:21 -0800 |
---|---|---|
committer | Zhijun He <zhijunhe@google.com> | 2015-03-17 20:02:12 -0700 |
commit | bd2929c03ce215e84cdf381197429c54908440e2 (patch) | |
tree | 4a9a2bb475e8e0849c1ea02ea6fc57dccffd2182 /include | |
parent | b3d428da7c4c24ab311da66c31e193ef8556e508 (diff) | |
download | hardware_libhardware-bd2929c03ce215e84cdf381197429c54908440e2.zip hardware_libhardware-bd2929c03ce215e84cdf381197429c54908440e2.tar.gz hardware_libhardware-bd2929c03ce215e84cdf381197429c54908440e2.tar.bz2 |
camera HAL: Update camera_info with simultaneous access information.
- Add necessary metadata to the camera_info structure to allow
the camera service to determine which devices can be safely
opened and used simultaneously without attempting to open
camera devices.
Change-Id: I4250b4c7e1296ebf4cab07355d6d3be01f17ba1e
Diffstat (limited to 'include')
-rw-r--r-- | include/hardware/camera_common.h | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/include/hardware/camera_common.h b/include/hardware/camera_common.h index 88c4379..971ed80 100644 --- a/include/hardware/camera_common.h +++ b/include/hardware/camera_common.h @@ -107,6 +107,12 @@ __BEGIN_DECLS * calls when camera status is not CAMERA_DEVICE_STATUS_PRESENT. The frameworks * will only count on device status change callbacks to manage the available external * camera list. + * + * 3. Camera arbitration hints. This module version adds support for explicitly + * indicating the number of camera devices that can be simultaneously opened and used. + * To specify valid combinations of devices, the resource_cost and conflicting_devices + * fields should always be set in the camera_info structure returned by the + * get_camera_info call. */ /** @@ -227,6 +233,80 @@ typedef struct camera_info { * */ const camera_metadata_t *static_camera_characteristics; + + /** + * The total resource "cost" of using this this camera, represented as + * an integer value in the range [0, 100] where 100 represents total usage + * of the shared resource that is the limiting bottleneck of the camera + * subsystem. + * + * The camera service must be able to simultaneously open and use any + * combination of camera devices exposed by the HAL where the sum of + * the resource costs of these cameras is <= 100. For determining cost, + * each camera device must be assumed to be configured and operating at + * the maximally resource-consuming framerate and stream size settings + * available in the configuration settings exposed for that device through + * the camera metadata. + * + * Note: The camera service may still attempt to simultaneously open + * combinations of camera devices with a total resource cost > 100. This + * may succeed or fail. If this succeeds, combinations of configurations + * that are not supported should fail during the configure calls. If the + * total resource cost is <= 100, configuration should never fail due to + * resource constraints. + * + * Version information (based on camera_module_t.common.module_api_version): + * + * CAMERA_MODULE_API_VERSION_2_3 or lower: + * + * Not valid. Can be assumed to be 100. Do not read this field. + * + * CAMERA_MODULE_API_VERSION_2_4 or higher: + * + * Always valid. + */ + int resource_cost; + + /** + * An array of camera device IDs represented as NULL-terminated strings + * indicating other devices that cannot be simultaneously opened while this + * camera device is in use. + * + * This field is intended to be used to indicate that this camera device + * is a composite of several other camera devices, or otherwise has + * hardware dependencies that prohibit simultaneous usage. If there are no + * dependencies, a NULL may be returned in this field to indicate this. + * + * The camera service will never simultaneously open any of the devices + * in this list while this camera device is open. + * + * Version information (based on camera_module_t.common.module_api_version): + * + * CAMERA_MODULE_API_VERSION_2_3 or lower: + * + * Not valid. Can be assumed to be NULL. Do not read this field. + * + * CAMERA_MODULE_API_VERSION_2_4 or higher: + * + * Always valid. + */ + char** conflicting_devices; + + /** + * The length of the array given in the conflicting_devices field. + * + * Version information (based on camera_module_t.common.module_api_version): + * + * CAMERA_MODULE_API_VERSION_2_3 or lower: + * + * Not valid. Can be assumed to be 0. Do not read this field. + * + * CAMERA_MODULE_API_VERSION_2_4 or higher: + * + * Always valid. + */ + size_t conflicting_devices_length; + } camera_info_t; /** |