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