| /* |
| * Copyright (C) 2021 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.camera.device@3.7; |
| |
| import @3.2::CameraMetadata; |
| import @3.2::StreamConfigurationMode; |
| import @3.4::CaptureRequest; |
| import @3.4::Stream; |
| |
| import android.hardware.camera.metadata@3.6::CameraMetadataEnumAndroidSensorPixelMode; |
| |
| /** |
| * Stream: |
| * |
| * A descriptor for a single camera input or output stream. A stream is defined |
| * by the framework by its buffer resolution and format, and additionally by the |
| * HAL with the gralloc usage flags and the maximum in-flight buffer count. |
| * |
| * This version extends the @3.4 Stream with the multi-resolution output surface |
| * group Id field. |
| */ |
| struct Stream { |
| /** |
| * The definition of Stream from the prior version. |
| */ |
| @3.4::Stream v3_4; |
| |
| /** |
| * The surface group id used for multi-resolution output streams. |
| * |
| * This works similar to the surfaceGroupId of OutputConfiguration in the |
| * public API, with the exception that this is for multi-resolution image |
| * reader and is used by the camera HAL to choose a target stream within |
| * the same group to which images are written. All streams in the same group |
| * will have the same image format, data space, and usage flag. |
| * |
| * The framework must only call processCaptureRequest on at most one of the |
| * streams within a surface group. Depending on current active physical |
| * camera backing the logical multi-camera, or the pixel mode the camera is |
| * running in, the HAL can choose to request and return a buffer from any |
| * stream within the same group. -1 means that this stream is an input |
| * stream, or is an output stream which doesn't belong to any group. |
| * |
| * Streams with the same non-negative group id must have the same format and |
| * usage flag. |
| */ |
| int32_t groupId; |
| |
| /** |
| * The sensor pixel modes used by this stream. This can assist the camera |
| * HAL in decision making about stream combination support. |
| * If this is empty, the HAL must assume that this stream will only be used |
| * with ANDROID_SENSOR_PIXEL_MODE set to ANDROID_SENSOR_PIXEL_MODE_DEFAULT. |
| */ |
| vec<CameraMetadataEnumAndroidSensorPixelMode> sensorPixelModesUsed; |
| }; |
| |
| /** |
| * StreamConfiguration: |
| * |
| * Identical to @3.5::StreamConfiguration, except that the streams |
| * vector contains @3.7::Stream. |
| */ |
| struct StreamConfiguration { |
| /** |
| * An array of camera stream pointers, defining the input/output |
| * configuration for the camera HAL device. |
| */ |
| vec<Stream> streams; |
| |
| /** |
| * The definition of operation mode from prior version. |
| * |
| */ |
| @3.2::StreamConfigurationMode operationMode; |
| |
| /** |
| * The definition of session parameters from prior version. |
| */ |
| @3.2::CameraMetadata sessionParams; |
| |
| /** |
| * The definition of stream configuration counter from prior version. |
| */ |
| uint32_t streamConfigCounter; |
| |
| /** |
| * If an input stream is configured, whether the input stream is expected to |
| * receive variable resolution images. |
| * |
| * This flag can only be set to true if the camera device supports |
| * multi-resolution input streams by advertising input stream configurations in |
| * physicalCameraMultiResolutionStreamConfigurations in its physical cameras' |
| * characteristics. |
| * |
| * When this flag is set to true, the input stream's width and height can be |
| * any one of the supported multi-resolution input stream sizes. |
| */ |
| bool multiResolutionInputImage; |
| }; |
| |
| /** |
| * CaptureRequest: |
| * |
| * This version extends 3.4::CaptureRequest with the input buffer's width and |
| * height. |
| */ |
| struct CaptureRequest { |
| /** |
| * The definition of CaptureRequest from the prior version. |
| */ |
| @3.4::CaptureRequest v3_4; |
| |
| /** |
| * The width and height of the input buffer for this capture request. |
| * |
| * These fields will be [0, 0] if no input buffer exists in the capture |
| * request. |
| * |
| * If the stream configuration contains an input stream and has the |
| * multiResolutionInputImage flag set to true, the camera client may submit a |
| * reprocessing request with input buffer size different than the |
| * configured input stream size. In that case, the inputWith and inputHeight |
| * fields will be the actual size of the input image. |
| * |
| * If the stream configuration contains an input stream and the |
| * multiResolutionInputImage flag is false, the inputWidth and inputHeight must |
| * match the input stream size. |
| */ |
| uint32_t inputWidth; |
| uint32_t inputHeight; |
| }; |