<!-- Copyright (C) 2013 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.
-->
<HTML>
<BODY>
<p>The android.hardware.camera2 package provides an interface to
individual camera devices connected to an Android device. It replaces
the deprecated {@link android.hardware.Camera} class.</p>

<p>This package models a camera device as a pipeline, which takes in
input requests for capturing a single frame, captures the single image
per the request, and then outputs one capture result metadata packet,
plus a set of output image buffers for the request. The requests are
processed in-order, and multiple requests can be in flight at
once. Since the camera device is a pipeline with multiple stages,
having multiple requests in flight is required to maintain full
framerate on most Android devices.</p>

<p>To enumerate, query, and open available camera devices, obtain a
{@link android.hardware.camera2.CameraManager} instance.</p>

<p>Individual {@link android.hardware.camera2.CameraDevice
CameraDevices} provide a set of static property information that
describes the hardware device and the available settings and output
parameters for the device. This information is provided through the
{@link android.hardware.camera2.CameraProperties} object.</p>

<p>To capture or stream images from a camera device, the application
must first configure a set of output Surfaces for use with the camera
device, with {@link
android.hardware.camera2.CameraDevice#configureOutputs}. Each
Surface has to be pre-configured with an appropriate size and format
(if applicable) to match the sizes and formats available from the
camera device. A target Surface can be obtained from a variety of
classes, including {@link android.view.SurfaceView}, {@link
android.graphics.SurfaceTexture} via {@link
android.view.Surface#Surface(SurfaceTexture), {@link
android.media.MediaCodec}, and {@link android.media.ImageReader}.
</p>

<p>The application then needs to construct a {@link
android.hardware.camera2.CaptureRequest}, which defines all the
capture parameters needed by a camera device to capture a single
image. The request also lists which of the configured output Surfaces
should be used as targets for this capture. The CameraDevice has a
{@link android.hardware.camera2.CameraDevice#createCaptureRequest
convenience factory method} for creating a request for a given use
case which is optimized for the Android device the application is
running on.</p>

<p>Once the request has been set up, it can be handed to the
CameraDevice either for a one-shot {@link
android.hardware.camera2.CameraDevice#capture} or for an endlessly
{@link android.hardware.camera2.CameraDevice#setRepeatingRequest
repeating} use. Both methods also accept a list of requests to use as
a burst capture / repeating burst. Repeating requests have a lower
priority than captures, so a request submitted
through <code>capture()</code> while there's a repeating request
configured will be captured as soon as the current repeat (burst)
capture completes.</p>

<p>After processing a request, the camera device will produce a {@link
android.hardware.camera2.CaptureResult} object, which contains
information about the state of the camera device at time of capture,
and the final settings used. These may vary somewhat from the request,
if rounding or resolving contradictory parameters was necessary. The
camera device will also send a frame of image data into each of the
output streams included in the request. These are produced
asynchronously relative to the output CaptureResult, sometimes
substantially later.</p>

</BODY>
</HTML>
