platform_hardware_interfaces/camera/device/README.md
Zhijun He 8486e4179c Camera: HIDLized camera HALs, first set
* Common camera definitions (camera.common/1.0)
  * Basic status codes, shared types
* Provider 2.4 API (camera.provider/2.4), including vendor tag APIs
  * Enumerate and acquire camera device instances
  * Mostly equivalent to legacy camera module v2.4.
* Device 1.0 API (camera.device/1.0)
  * Mostly equivalent to legacy camera HAL v1.0.
* Device 3.2 API (camera.device/3.2)
  * Mostly equivalent to legacy camera HAL v3.2.
* Metadata 3.2 API (camera.metadata/3.2)
  * Definitions for valid metadata fields for device 3.2

Only the key initial interfaces are added; default implementations are
in a later CL. Other interfaces that will likely need to be added:

* Other provider minor versions
* Other device 3.x minor versions

Test: make -j32
Bug: 30985004
Bug: 32991603
Change-Id: I1c6a9a269bf45276055707bbc58cfc50d29fa919
2016-12-02 19:43:39 +00:00

76 lines
2.8 KiB
Markdown

## Camera Device HAL ##
---
## Overview: ##
The camera.device HAL interface is used by the Android camera service to operate
individual camera devices. Instances of camera.device HAL interface can be obtained
via one of the ICameraProvider::getCameraDeviceInterface_V<N>_x() methods, where N
is the major version of the camera device interface.
Obtaining the device interface does not turn on the respective camera device;
each camera device interface has an actual open() method to begin an active
camera session. Without invoking open(), the interface can be used for querying
camera static information.
More complete information about the Android camera HAL and subsystem can be found at
[source.android.com](http://source.android.com/devices/camera/index.html).
## Version history: ##
### ICameraDevice.hal@1.0:
HIDL version of the legacy camera device HAL. Intended as a shim for devices
needing to use the deprecated pre-HIDL camera device HAL v1.0.
May be used in HIDL passthrough mode for devices upgrading to the Android O
release; must be used in binderized mode for devices launching in the O release.
It is strongly recommended to not use this interface for new devices, as new
devices may not use this interface starting with the Android P release, and all
support for ICameraDevice@1.0 will be removed with the Android R release.
This HAL interface version only allows support at the LEGACY level for the
android.hardware.camera2 API.
Subsidiary HALs:
#### ICameraDevice1PreviewCallback.hal@1.0:
Callback interface for obtaining, filling, and returning graphics buffers for
preview operation with the ICameraDevice@1.0 inteface.
#### ICameraDevice1Callback.hal@1.0:
Callback interface for sending events and data buffers from the HAL to the
camera service.
### ICameraDevice.hal@3.2:
HIDL version of the baseline camera device HAL, required for LIMITED or FULL
operation through the android.hardware.camera2 API.
The main HAL contains methods for static queries about the device, similar to
the HALv3-specific sections of the legacy camera module HAL. Simply obtaining an
instance of the camera device interface does not turn on the camera device.
May be used in passthrough mode for devices upgrading to the Android O release;
must be used in binderized mode for all new devices launching with Android O or
later.
The open() method actually opens the camera device for use, returning a Session
interface for operating the active camera. It takes a Callback interface as an
argument.
Subsidiary HALs:
#### ICameraDevice3Session.hal@3.2:
Closely matches the features and operation of the pre-HIDL camera device HAL
v3.2, containing methods for configuring an active camera device and submitting
capture requests to it.
#### ICameraDevice3Callback.hal@3.2:
Callback interface for sending completed captures and other asynchronous events
from tehe HAL to the client.