<!-- 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.photography 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.photography.CameraManager} instance.</p>

<p>Individual {@link android.hardware.photography.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.photography.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.photography.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.photography.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.photography.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.photography.CameraDevice#capture} or for an endlessly
{@link android.hardware.photography.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.photography.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>
