camera: update HAL module API for external camera
Update camera module API 2.4 for usb camera support. Change-Id: Id8329e31ad0622bdc06c60e87e97c742a9719b3b
This commit is contained in:
parent
a5222582d5
commit
b3d428da7c
1 changed files with 101 additions and 28 deletions
|
@ -90,15 +90,23 @@ __BEGIN_DECLS
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
* Version: 2.4 [CAMERA_MODULE_API_VERSION_2_4]
|
* Version: 2.4 [CAMERA_MODULE_API_VERSION_2_4]
|
||||||
*
|
*
|
||||||
* This camera module version adds torch mode support. The framework can
|
* This camera module version adds below API changes:
|
||||||
* use it to turn on torch mode for any camera device that has a flash unit,
|
*
|
||||||
* without opening a camera device. The camera device has a higher priority
|
* 1. Torch mode support. The framework can use it to turn on torch mode for
|
||||||
* accessing the flash unit than the camera module; opening a camera device
|
* any camera device that has a flash unit, without opening a camera device. The
|
||||||
* will turn off the torch if it had been enabled through the module
|
* camera device has a higher priority accessing the flash unit than the camera
|
||||||
* interface. When there are any resource conflicts, such as open() is called
|
* module; opening a camera device will turn off the torch if it had been enabled
|
||||||
* to open a camera device, the camera HAL module must notify the framework
|
* through the module interface. When there are any resource conflicts, such as
|
||||||
* through the torch mode status callback that the torch mode has been turned
|
* open() is called to open a camera device, the camera HAL module must notify the
|
||||||
* off.
|
* framework through the torch mode status callback that the torch mode has been
|
||||||
|
* turned off.
|
||||||
|
*
|
||||||
|
* 2. External camera (e.g. USB hot-plug camera) support. The API updates specify that
|
||||||
|
* the camera static info is only available when camera is connected and ready to
|
||||||
|
* use for external hot-plug cameras. Calls to get static info will be invalid
|
||||||
|
* 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.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -140,11 +148,19 @@ typedef struct camera_metadata camera_metadata_t;
|
||||||
|
|
||||||
typedef struct camera_info {
|
typedef struct camera_info {
|
||||||
/**
|
/**
|
||||||
* The direction that the camera faces to. It should be CAMERA_FACING_BACK
|
* The direction that the camera faces to. See system/core/include/system/camera.h
|
||||||
* or CAMERA_FACING_FRONT.
|
* for camera facing definitions.
|
||||||
*
|
*
|
||||||
* Version information:
|
* Version information (based on camera_module_t.common.module_api_version):
|
||||||
* Valid in all camera_module versions
|
*
|
||||||
|
* CAMERA_MODULE_API_VERSION_2_3 or lower:
|
||||||
|
*
|
||||||
|
* It should be CAMERA_FACING_BACK or CAMERA_FACING_FRONT.
|
||||||
|
*
|
||||||
|
* CAMERA_MODULE_API_VERSION_2_4 or higher:
|
||||||
|
*
|
||||||
|
* It should be CAMERA_FACING_BACK, CAMERA_FACING_FRONT or
|
||||||
|
* CAMERA_FACING_EXTERNAL.
|
||||||
*/
|
*/
|
||||||
int facing;
|
int facing;
|
||||||
|
|
||||||
|
@ -160,8 +176,16 @@ typedef struct camera_info {
|
||||||
* top side of a front-facing camera sensor is aligned with the right of the
|
* top side of a front-facing camera sensor is aligned with the right of the
|
||||||
* screen, the value should be 270.
|
* screen, the value should be 270.
|
||||||
*
|
*
|
||||||
* Version information:
|
* Version information (based on camera_module_t.common.module_api_version):
|
||||||
* Valid in all camera_module versions
|
*
|
||||||
|
* CAMERA_MODULE_API_VERSION_2_3 or lower:
|
||||||
|
*
|
||||||
|
* Valid in all camera_module versions.
|
||||||
|
*
|
||||||
|
* CAMERA_MODULE_API_VERSION_2_4 or higher:
|
||||||
|
*
|
||||||
|
* Valid if camera facing is CAMERA_FACING_BACK or CAMERA_FACING_FRONT,
|
||||||
|
* not valid if camera facing is CAMERA_FACING_EXTERNAL.
|
||||||
*/
|
*/
|
||||||
int orientation;
|
int orientation;
|
||||||
|
|
||||||
|
@ -183,9 +207,9 @@ typedef struct camera_info {
|
||||||
uint32_t device_version;
|
uint32_t device_version;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The camera's fixed characteristics, which include all camera metadata in
|
* The camera's fixed characteristics, which include all static camera metadata
|
||||||
* the android.*.info.* sections. This should be a sorted metadata buffer,
|
* specified in system/media/camera/docs/docs.html. This should be a sorted metadata
|
||||||
* and may not be modified or freed by the caller. The pointer should remain
|
* buffer, and may not be modified or freed by the caller. The pointer should remain
|
||||||
* valid for the lifetime of the camera module, and values in it may not
|
* valid for the lifetime of the camera module, and values in it may not
|
||||||
* change after it is returned by get_camera_info().
|
* change after it is returned by get_camera_info().
|
||||||
*
|
*
|
||||||
|
@ -226,23 +250,51 @@ typedef struct camera_info {
|
||||||
typedef enum camera_device_status {
|
typedef enum camera_device_status {
|
||||||
/**
|
/**
|
||||||
* The camera device is not currently connected, and opening it will return
|
* The camera device is not currently connected, and opening it will return
|
||||||
* failure. Calls to get_camera_info must still succeed, and provide the
|
* failure.
|
||||||
* same information it would if the camera were connected
|
*
|
||||||
|
* Version information (based on camera_module_t.common.module_api_version):
|
||||||
|
*
|
||||||
|
* CAMERA_MODULE_API_VERSION_2_3 or lower:
|
||||||
|
*
|
||||||
|
* Calls to get_camera_info must still succeed, and provide the same information
|
||||||
|
* it would if the camera were connected.
|
||||||
|
*
|
||||||
|
* CAMERA_MODULE_API_VERSION_2_4:
|
||||||
|
*
|
||||||
|
* The camera device at this status must return -EINVAL for get_camera_info call,
|
||||||
|
* as the device is not connected.
|
||||||
*/
|
*/
|
||||||
CAMERA_DEVICE_STATUS_NOT_PRESENT = 0,
|
CAMERA_DEVICE_STATUS_NOT_PRESENT = 0,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The camera device is connected, and opening it will succeed. The
|
* The camera device is connected, and opening it will succeed.
|
||||||
* information returned by get_camera_info cannot change due to this status
|
*
|
||||||
* change. By default, the framework will assume all devices are in this
|
* CAMERA_MODULE_API_VERSION_2_3 or lower:
|
||||||
* state.
|
*
|
||||||
|
* The information returned by get_camera_info cannot change due to this status
|
||||||
|
* change. By default, the framework will assume all devices are in this state.
|
||||||
|
*
|
||||||
|
* CAMERA_MODULE_API_VERSION_2_4:
|
||||||
|
*
|
||||||
|
* The information returned by get_camera_info will become valid after a device's
|
||||||
|
* status changes to this. By default, the framework will assume all devices are in
|
||||||
|
* this state.
|
||||||
*/
|
*/
|
||||||
CAMERA_DEVICE_STATUS_PRESENT = 1,
|
CAMERA_DEVICE_STATUS_PRESENT = 1,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The camera device is connected, but it is undergoing an enumeration and
|
* The camera device is connected, but it is undergoing an enumeration and
|
||||||
* so opening the device will return -EBUSY. Calls to get_camera_info
|
* so opening the device will return -EBUSY.
|
||||||
* must still succeed, as if the camera was in the PRESENT status.
|
*
|
||||||
|
* CAMERA_MODULE_API_VERSION_2_3 or lower:
|
||||||
|
*
|
||||||
|
* Calls to get_camera_info must still succeed, as if the camera was in the
|
||||||
|
* PRESENT status.
|
||||||
|
*
|
||||||
|
* CAMERA_MODULE_API_VERSION_2_4:
|
||||||
|
*
|
||||||
|
* The camera device at this status must return -EINVAL for get_camera_info for call,
|
||||||
|
* as the device is not ready.
|
||||||
*/
|
*/
|
||||||
CAMERA_DEVICE_STATUS_ENUMERATING = 2,
|
CAMERA_DEVICE_STATUS_ENUMERATING = 2,
|
||||||
|
|
||||||
|
@ -422,8 +474,21 @@ typedef struct camera_module {
|
||||||
* simply the number converted to a string. That is, "0" for camera ID 0,
|
* simply the number converted to a string. That is, "0" for camera ID 0,
|
||||||
* "1" for camera ID 1.
|
* "1" for camera ID 1.
|
||||||
*
|
*
|
||||||
* The value here must be static, and cannot change after the first call to
|
* Version information (based on camera_module_t.common.module_api_version):
|
||||||
* this method
|
*
|
||||||
|
* CAMERA_MODULE_API_VERSION_2_3 or lower:
|
||||||
|
*
|
||||||
|
* The value here must be static, and cannot change after the first call
|
||||||
|
* to this method.
|
||||||
|
*
|
||||||
|
* CAMERA_MODULE_API_VERSION_2_4 or higher:
|
||||||
|
*
|
||||||
|
* The value here must be static, and must count only built-in cameras,
|
||||||
|
* which have CAMERA_FACING_BACK or CAMERA_FACING_FRONT camera facing values
|
||||||
|
* (camera_info.facing). The HAL must not include the external cameras
|
||||||
|
* (camera_info.facing == CAMERA_FACING_EXTERNAL) into the return value
|
||||||
|
* of this call. Frameworks will use camera_device_status_change callback
|
||||||
|
* to manage number of external cameras.
|
||||||
*/
|
*/
|
||||||
int (*get_number_of_cameras)(void);
|
int (*get_number_of_cameras)(void);
|
||||||
|
|
||||||
|
@ -442,6 +507,14 @@ typedef struct camera_module {
|
||||||
*
|
*
|
||||||
* -EINVAL: The input arguments are invalid, i.e. the id is invalid,
|
* -EINVAL: The input arguments are invalid, i.e. the id is invalid,
|
||||||
* and/or the module is invalid.
|
* and/or the module is invalid.
|
||||||
|
*
|
||||||
|
* Version information (based on camera_module_t.common.module_api_version):
|
||||||
|
*
|
||||||
|
* CAMERA_MODULE_API_VERSION_2_4 or higher:
|
||||||
|
*
|
||||||
|
* When a camera is disconnected, its camera id becomes invalid. Calling this
|
||||||
|
* this method with this invalid camera id will get -EINVAL and NULL camera
|
||||||
|
* static metadata (camera_info.static_camera_characteristics).
|
||||||
*/
|
*/
|
||||||
int (*get_camera_info)(int camera_id, struct camera_info *info);
|
int (*get_camera_info)(int camera_id, struct camera_info *info);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue