/* * Copyright (C) 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. */ package android.hardware.camera2; import android.hardware.camera2.impl.CameraMetadataNative; import android.hardware.camera2.impl.CaptureResultExtras; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** *

The total assembled results of a single image capture from the image sensor.

* *

Contains the final configuration for the capture hardware (sensor, lens, * flash), the processing pipeline, the control algorithms, and the output * buffers.

* *

A {@code TotalCaptureResult} is produced by a {@link CameraDevice} after processing a * {@link CaptureRequest}. All properties listed for capture requests can also * be queried on the capture result, to determine the final values used for * capture. The result also includes additional metadata about the state of the * camera device during the capture.

* *

All properties returned by {@link CameraCharacteristics#getAvailableCaptureResultKeys()} * are available (that is {@link CaptureResult#get} will return non-{@code null}, if and only if * that key that was enabled by the request. A few keys such as * {@link CaptureResult#STATISTICS_FACES} are disabled by default unless enabled with a switch (such * as {@link CaptureRequest#STATISTICS_FACE_DETECT_MODE}). Refer to each key documentation on * a case-by-case basis.

* *

{@link TotalCaptureResult} objects are immutable.

* * @see CameraDevice.CaptureCallback#onCaptureCompleted */ public final class TotalCaptureResult extends CaptureResult { private final List mPartialResults; /** * Takes ownership of the passed-in camera metadata and the partial results * * @param partials a list of partial results; {@code null} will be substituted for an empty list * @hide */ public TotalCaptureResult(CameraMetadataNative results, CaptureRequest parent, CaptureResultExtras extras, List partials) { super(results, parent, extras); if (partials == null) { mPartialResults = new ArrayList<>(); } else { mPartialResults = partials; } } /** * Creates a request-less result. * *

For testing only.

* @hide */ public TotalCaptureResult(CameraMetadataNative results, int sequenceId) { super(results, sequenceId); mPartialResults = new ArrayList<>(); } /** * Get the read-only list of partial results that compose this total result. * *

The list is returned is unmodifiable; attempting to modify it will result in a * {@code UnsupportedOperationException} being thrown.

* *

The list size will be inclusive between {@code 0} and * {@link CameraCharacteristics#REQUEST_PARTIAL_RESULT_COUNT}, with elements in ascending order * of when {@link CameraCaptureSession.CaptureCallback#onCaptureProgressed} was invoked.

* * @return unmodifiable list of partial results */ public List getPartialResults() { return Collections.unmodifiableList(mPartialResults); } }