platform_hardware_interfaces/camera/device/3.5/ICameraDevice.hal
Emilian Peev 06c07730de Camera: Extend stream combination query documentation
Stream combination queries differ from regular stream
configuration in several ways. Extend documentation
and mention any fields that Hal implementations must
ignore when checking the input arguments.

Bug: 111593096
Test: Android builds successfully
Change-Id: Iab97d2cf8aebc29c9ec4c34a382893299a9b9752
2019-01-16 11:21:00 +00:00

119 lines
5 KiB
Text

/*
* Copyright (C) 2018 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.5;
import android.hardware.camera.common@1.0::Status;
import @3.2::CameraMetadata;
import @3.2::ICameraDevice;
import @3.4::StreamConfiguration;
/**
* Camera device interface
*
* Supports the android.hardware.Camera API, and the android.hardware.camera2
* API at LIMITED or better hardware level.
*
*/
interface ICameraDevice extends @3.2::ICameraDevice {
/**
* getPhysicalCameraCharacteristics:
*
* Return the static camera information for a physical camera ID backing
* this logical camera device. This information may not change between consecutive calls.
*
* Note that HAL must support this function for physical camera IDs that are
* not exposed via ICameraProvider::getCameraIdList(). Calling
* getCameraDeviceInterface_V3_x() on these camera IDs must return ILLEGAL_ARGUMENT.
*
* The characteristics of all cameras returned by
* ICameraProvider::getCameraIdList() must be queried via
* getCameraCharacteristics(). Calling getPhysicalCameraCharacteristics() on
* those cameras must return ILLEGAL_ARGUMENT.
*
* @param physicalCameraId The physical camera id parsed from the logical
* camera's ANDROID_LOGICAL_MULTI_CAMERA_PHYSICAL_IDS static metadata
* key. The framework assumes that this ID is just the <id> part of fully
* qualified camera device name "device@<major>.<minor>/<type>/<id>". And
* the physical camera must be of the same version and type as the parent
* logical camera device.
*
* @return status Status code for the operation, one of:
* OK:
* On a successful query of the physical camera device characteristics
* INTERNAL_ERROR:
* The camera device cannot be opened due to an internal
* error.
* CAMERA_DISCONNECTED:
* An external camera device has been disconnected, and is no longer
* available. This camera device interface is now stale, and a new
* instance must be acquired if the device is reconnected. All
* subsequent calls on this interface must return
* CAMERA_DISCONNECTED.
* ILLEGAL_ARGUMENT:
* If the physicalCameraId is not a valid physical camera Id outside
* of ICameraProvider::getCameraIdList().
*
* @return cameraCharacteristics
* The static metadata for this logical camera device's physical device, or an empty
* metadata structure if status is not OK.
*
*/
getPhysicalCameraCharacteristics(string physicalCameraId)
generates (Status status, CameraMetadata cameraCharacteristics);
/**
* isStreamCombinationSupported:
*
* Check for device support of specific camera stream combination.
*
* The streamList must contain at least one output-capable stream, and may
* not contain more than one input-capable stream.
* In contrast to regular stream configuration the framework does not create
* or initialize any actual streams. This means that Hal must not use or
* consider the stream "id" value.
*
* ------------------------------------------------------------------------
*
* Preconditions:
*
* The framework can call this method at any time before, during and
* after active session configuration. This means that calls must not
* impact the performance of pending camera requests in any way. In
* particular there must not be any glitches or delays during normal
* camera streaming.
*
* Performance requirements:
* This call is expected to be significantly faster than stream
* configuration. In general HW and SW camera settings must not be
* changed and there must not be a user-visible impact on camera performance.
*
* @return Status Status code for the operation, one of:
* OK:
* On successful stream combination query.
* METHOD_NOT_SUPPORTED:
* The camera device does not support stream combination query.
* INTERNAL_ERROR:
* The stream combination query cannot complete due to internal
* error.
* @return true in case the stream combination is supported, false otherwise.
*
*/
isStreamCombinationSupported(@3.4::StreamConfiguration streams)
generates (Status status, bool queryStatus);
};