page.title=Camera HAL v3 overview
@jd:body

<!--
    Copyright 2014 The Android Open Source Project

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->
<div id="qv-wrapper">
  <div id="qv">
    <h2>In this document</h2>
    <ol id="auto-toc">
    </ol>
  </div>
</div>

<p>
Android's camera Hardware Abstraction Layer (HAL) connects the higher level 
camera framework APIs in 
<a
href="http://developer.android.com/reference/android/hardware/Camera.html">android.hardware.Camera</a> 
to your underlying camera driver and hardware. The latest version of Android 
introduces a new, underlying implementation of the camera stack. If you have 
previously developed a camera HAL module and driver for other versions of 
Android, be aware that there are significant changes in the camera pipeline.</p>
<p>Version 1 of the camera HAL is still supported for future releases of Android 
  because many devices still rely on it. Implementing both HALs is also supported 
  by the Android camera service, which is useful when you want to support a less 
  capable front-facing camera with version 1 of the HAL and a more advanced 
  back-facing camera with version 3 of the HAL. Version 2 was a stepping stone to 
  version 3 and is not supported.</p>

<p>
There is only one camera HAL module (with its own version number, currently 1, 2,
or 2.1), which lists multiple independent camera devices that each have
their own version. Camera module v2 or newer is required to support devices v2 or newer, and such
camera modules can have a mix of camera device versions. This is what we mean
when we say Android supports implementing both HALs.
</p>

<p class="note"><strong>Note:</strong> The new camera HAL is in active
development and can change at any time. This document describes at a high level
the design of the camera subsystem and omits many details. See <a
href="versioning.html">Camera version support</a> for our plans.</p>

<h2 id="overview">Overview</h2>

<p>
Version 1 of the camera subsystem was designed as a black box with high-level 
controls. Roughly speaking, the old subsystem has three operating modes:</p>

<ul>
<li>Preview</li>
<li>Video Record</li>
<li>Still Capture</li>
</ul>

<p>Each mode has slightly different and overlapping capabilities. This made it hard 
to implement new types of features, such as burst mode, since it would fall 
between two of these modes.</p>
<img src="images/camera_block.png" alt="Camera block diagram" id="figure1" />
<p class="img-caption">
  <strong>Figure 1.</strong> Camera components
</p>

<h2 id="v3-enhance">Version 3 enhancements</h2>

<p>The aim of the Android Camera API redesign is to substantially increase the 
ability of applications to control the camera subsystem on Android devices while 
reorganizing the API to make it more efficient and maintainable.</p>

<p>The additional control makes it easier to build high-quality camera applications 
on Android devices that can operate reliably across multiple products while 
still using device-specific algorithms whenever possible to maximize quality and 
performance.</p>

<p>Version 3 of the camera subsystem structures the operation modes into a single 
unified view, which can be used to implement any of the previous modes and 
several others, such as burst mode. This results in better user control for 
focus and exposure and more post-processing, such as noise reduction, contrast 
and sharpening. Further, this simplified view makes it easier for application 
developers to use the camera's various functions.<br/>
The API models the camera subsystem as a pipeline that converts incoming 
requests for frame captures into frames, on a 1:1 basis. The requests 
encapsulate all configuration information about the capture and processing of a 
frame. This includes: resolution and pixel format; manual sensor, lens and flash 
control; 3A operating modes; RAW->YUV processing control; statistics generation; 
and so on.</p>

<p>In simple terms, the application framework requests a frame from the camera 
subsystem, and the camera subsystem returns results to an output stream. In 
addition, metadata that contains information such as color spaces and lens 
shading is generated for each set of results. The following sections and 
diagrams give you more detail about each component.<br/>
You can think of camera version 3 as a pipeline to camera version 1's one-way 
stream. It converts each capture request into one image captured by the sensor, 
which is processed into: </p>

<ul>
<li>A Result object with metadata about the capture.</li>
<li>One to N buffers of image data, each into its own destination Surface.</li>
</ul>

<p>The set of possible output Surfaces is preconfigured:</p>

<ul>
<li>Each Surface is a destination for a stream of image buffers of a fixed 
resolution.</li>
<li>Only a small number of Surfaces can be configured as outputs at once (~3).</li>
</ul>

<p>A request contains all desired capture settings and the list of output Surfaces 
to push image buffers into for this request (out of the total configured set). A 
request can be one-shot ( with capture() ), or it may be repeated indefinitely 
(with setRepeatingRequest() ). Captures have priority over repeating
requests.</p>
<img src="images/camera_simple_model.png" alt="Camera data model" id="figure2" />
<p class="img-caption">
  <strong>Figure 2.</strong> Camera core operation model
</p>

<h2 id="supported-version">Supported version</h2>

<p>Camera devices that support this version of the HAL must return 
CAMERA_DEVICE_API_VERSION_3_1 in camera_device_t.common.version and in 
camera_info_t.device_version (from camera_module_t.get_camera_info).<br/>
Camera modules that may contain version 3.1 devices must implement at least 
version 2.0 of the camera module interface (as defined by 
camera_module_t.common.module_api_version).<br/>
See camera_common.h for more versioning details.</p>
