18486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun He## Camera Device HAL ##
28486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun He---
38486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun He
48486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun He## Overview: ##
58486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun He
68486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun HeThe camera.device HAL interface is used by the Android camera service to operate
78486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun Heindividual camera devices. Instances of camera.device HAL interface can be obtained
88486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun Hevia one of the ICameraProvider::getCameraDeviceInterface_V<N>_x() methods, where N
98486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun Heis the major version of the camera device interface.
108486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun He
118486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun HeObtaining the device interface does not turn on the respective camera device;
128486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun Heeach camera device interface has an actual open() method to begin an active
138486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun Hecamera session. Without invoking open(), the interface can be used for querying
148486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun Hecamera static information.
158486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun He
168486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun HeMore complete information about the Android camera HAL and subsystem can be found at
178486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun He[source.android.com](http://source.android.com/devices/camera/index.html).
188486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun He
198486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun He## Version history: ##
208486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun He
218486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun He### ICameraDevice.hal@1.0:
228486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun He
238486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun HeHIDL version of the legacy camera device HAL. Intended as a shim for devices
248486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun Heneeding to use the deprecated pre-HIDL camera device HAL v1.0.
258486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun He
268486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun HeMay be used in HIDL passthrough mode for devices upgrading to the Android O
278486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun Herelease; must be used in binderized mode for devices launching in the O release.
288486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun He
298486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun HeIt is strongly recommended to not use this interface for new devices, as new
308486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun Hedevices may not use this interface starting with the Android P release, and all
318486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun Hesupport for ICameraDevice@1.0 will be removed with the Android R release.
328486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun He
338486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun HeThis HAL interface version only allows support at the LEGACY level for the
348486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun Heandroid.hardware.camera2 API.
358486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun He
368486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun HeSubsidiary HALs:
378486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun He
388486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun He#### ICameraDevice1PreviewCallback.hal@1.0:
398486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun He
408486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun HeCallback interface for obtaining, filling, and returning graphics buffers for
418486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun Hepreview operation with the ICameraDevice@1.0 inteface.
428486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun He
438486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun He#### ICameraDevice1Callback.hal@1.0:
448486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun He
458486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun HeCallback interface for sending events and data buffers from the HAL to the
468486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun Hecamera service.
478486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun He
488486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun He### ICameraDevice.hal@3.2:
498486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun He
508486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun HeHIDL version of the baseline camera device HAL, required for LIMITED or FULL
518486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun Heoperation through the android.hardware.camera2 API.
528486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun He
538486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun HeThe main HAL contains methods for static queries about the device, similar to
548486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun Hethe HALv3-specific sections of the legacy camera module HAL. Simply obtaining an
558486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun Heinstance of the camera device interface does not turn on the camera device.
568486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun He
578486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun HeMay be used in passthrough mode for devices upgrading to the Android O release;
588486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun Hemust be used in binderized mode for all new devices launching with Android O or
598486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun Helater.
608486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun He
618486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun HeThe open() method actually opens the camera device for use, returning a Session
628486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun Heinterface for operating the active camera. It takes a Callback interface as an
638486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun Heargument.
648486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun He
658486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun HeSubsidiary HALs:
668486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun He
678486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun He#### ICameraDevice3Session.hal@3.2:
688486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun He
698486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun HeClosely matches the features and operation of the pre-HIDL camera device HAL
708486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun Hev3.2, containing methods for configuring an active camera device and submitting
718486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun Hecapture requests to it.
728486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun He
738486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun He#### ICameraDevice3Callback.hal@3.2:
748486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun He
758486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun HeCallback interface for sending completed captures and other asynchronous events
768486e4179cc493e3e64a22f830b307f9a5d2b095Zhijun Hefrom tehe HAL to the client.
77