1## Camera Device HAL ##
2---
3
4## Overview: ##
5
6The camera.device HAL interface is used by the Android camera service to operate
7individual camera devices. Instances of camera.device HAL interface can be obtained
8via one of the ICameraProvider::getCameraDeviceInterface_V<N>_x() methods, where N
9is the major version of the camera device interface.
10
11Obtaining the device interface does not turn on the respective camera device;
12each camera device interface has an actual open() method to begin an active
13camera session. Without invoking open(), the interface can be used for querying
14camera static information.
15
16More complete information about the Android camera HAL and subsystem can be found at
17[source.android.com](http://source.android.com/devices/camera/index.html).
18
19## Version history: ##
20
21### ICameraDevice.hal@1.0:
22
23HIDL version of the legacy camera device HAL. Intended as a shim for devices
24needing to use the deprecated pre-HIDL camera device HAL v1.0.
25
26May be used in HIDL passthrough mode for devices upgrading to the Android O
27release; must be used in binderized mode for devices launching in the O release.
28
29It is strongly recommended to not use this interface for new devices, as new
30devices may not use this interface starting with the Android P release, and all
31support for ICameraDevice@1.0 will be removed with the Android R release.
32
33This HAL interface version only allows support at the LEGACY level for the
34android.hardware.camera2 API.
35
36Added in Android 8.0.
37
38Subsidiary HALs:
39
40#### ICameraDevice1PreviewCallback.hal@1.0:
41
42Callback interface for obtaining, filling, and returning graphics buffers for
43preview operation with the ICameraDevice@1.0 inteface.
44
45#### ICameraDevice1Callback.hal@1.0:
46
47Callback interface for sending events and data buffers from the HAL to the
48camera service.
49
50### ICameraDevice.hal@3.2:
51
52HIDL version of the baseline camera device HAL, required for LIMITED or FULL
53operation through the android.hardware.camera2 API.
54
55The main HAL contains methods for static queries about the device, similar to
56the HALv3-specific sections of the legacy camera module HAL. Simply obtaining an
57instance of the camera device interface does not turn on the camera device.
58
59May be used in passthrough mode for devices upgrading to the Android O release;
60must be used in binderized mode for all new devices launching with Android O or
61later.
62
63The open() method actually opens the camera device for use, returning a Session
64interface for operating the active camera. It takes a Callback interface as an
65argument.
66
67Added in Android 8.0.
68
69Subsidiary HALs:
70
71#### ICameraDevice3Session.hal@3.2:
72
73Closely matches the features and operation of the pre-HIDL camera device HAL
74v3.2, containing methods for configuring an active camera device and submitting
75capture requests to it.
76
77#### ICameraDevice3Callback.hal@3.2:
78
79Callback interface for sending completed captures and other asynchronous events
80from tehe HAL to the client.
81
82### ICameraDevice.hal@3.3:
83
84A minor revision to the ICameraDevice.hal@3.2.
85
86  - Adds support for overriding the output dataspace of a stream, which was
87    supported in the legacy camera HAL.
88
89Added in Android 8.1.
90
91### ICameraDevice.hal@3.4:
92
93A minor revision to the ICameraDevice.hal@3.3.
94
95  - Adds support for session parameters during stream configuration.
96
97Added in Android 9
98