1*4d7e907cSAndroid Build Coastguard Worker/* 2*4d7e907cSAndroid Build Coastguard Worker * Copyright (C) 2018 The Android Open Source Project 3*4d7e907cSAndroid Build Coastguard Worker * 4*4d7e907cSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*4d7e907cSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*4d7e907cSAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*4d7e907cSAndroid Build Coastguard Worker * 8*4d7e907cSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*4d7e907cSAndroid Build Coastguard Worker * 10*4d7e907cSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*4d7e907cSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*4d7e907cSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*4d7e907cSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*4d7e907cSAndroid Build Coastguard Worker * limitations under the License. 15*4d7e907cSAndroid Build Coastguard Worker */ 16*4d7e907cSAndroid Build Coastguard Worker 17*4d7e907cSAndroid Build Coastguard Workerpackage [email protected]; 18*4d7e907cSAndroid Build Coastguard Worker 19*4d7e907cSAndroid Build Coastguard Workerimport [email protected]::Status; 20*4d7e907cSAndroid Build Coastguard Workerimport @3.2::CameraMetadata; 21*4d7e907cSAndroid Build Coastguard Workerimport @3.2::ICameraDevice; 22*4d7e907cSAndroid Build Coastguard Workerimport @3.4::StreamConfiguration; 23*4d7e907cSAndroid Build Coastguard Worker 24*4d7e907cSAndroid Build Coastguard Worker/** 25*4d7e907cSAndroid Build Coastguard Worker * Camera device interface 26*4d7e907cSAndroid Build Coastguard Worker * 27*4d7e907cSAndroid Build Coastguard Worker * Supports the android.hardware.Camera API, and the android.hardware.camera2 28*4d7e907cSAndroid Build Coastguard Worker * API at LIMITED or better hardware level. 29*4d7e907cSAndroid Build Coastguard Worker * 30*4d7e907cSAndroid Build Coastguard Worker */ 31*4d7e907cSAndroid Build Coastguard Workerinterface ICameraDevice extends @3.2::ICameraDevice { 32*4d7e907cSAndroid Build Coastguard Worker 33*4d7e907cSAndroid Build Coastguard Worker /** 34*4d7e907cSAndroid Build Coastguard Worker * getPhysicalCameraCharacteristics: 35*4d7e907cSAndroid Build Coastguard Worker * 36*4d7e907cSAndroid Build Coastguard Worker * Return the static camera information for a physical camera ID backing 37*4d7e907cSAndroid Build Coastguard Worker * this logical camera device. This information may not change between consecutive calls. 38*4d7e907cSAndroid Build Coastguard Worker * 39*4d7e907cSAndroid Build Coastguard Worker * Note that HAL must support this function for physical camera IDs that are 40*4d7e907cSAndroid Build Coastguard Worker * not exposed via ICameraProvider::getCameraIdList(). Calling 41*4d7e907cSAndroid Build Coastguard Worker * getCameraDeviceInterface_V3_x() on these camera IDs must return ILLEGAL_ARGUMENT. 42*4d7e907cSAndroid Build Coastguard Worker * 43*4d7e907cSAndroid Build Coastguard Worker * The characteristics of all cameras returned by 44*4d7e907cSAndroid Build Coastguard Worker * ICameraProvider::getCameraIdList() must be queried via 45*4d7e907cSAndroid Build Coastguard Worker * getCameraCharacteristics(). Calling getPhysicalCameraCharacteristics() on 46*4d7e907cSAndroid Build Coastguard Worker * those cameras must return ILLEGAL_ARGUMENT. 47*4d7e907cSAndroid Build Coastguard Worker * 48*4d7e907cSAndroid Build Coastguard Worker * @param physicalCameraId The physical camera id parsed from the logical 49*4d7e907cSAndroid Build Coastguard Worker * camera's ANDROID_LOGICAL_MULTI_CAMERA_PHYSICAL_IDS static metadata 50*4d7e907cSAndroid Build Coastguard Worker * key. The framework assumes that this ID is just the <id> part of fully 51*4d7e907cSAndroid Build Coastguard Worker * qualified camera device name "device@<major>.<minor>/<type>/<id>". And 52*4d7e907cSAndroid Build Coastguard Worker * the physical camera must be of the same version and type as the parent 53*4d7e907cSAndroid Build Coastguard Worker * logical camera device. 54*4d7e907cSAndroid Build Coastguard Worker * 55*4d7e907cSAndroid Build Coastguard Worker * @return status Status code for the operation, one of: 56*4d7e907cSAndroid Build Coastguard Worker * OK: 57*4d7e907cSAndroid Build Coastguard Worker * On a successful query of the physical camera device characteristics 58*4d7e907cSAndroid Build Coastguard Worker * INTERNAL_ERROR: 59*4d7e907cSAndroid Build Coastguard Worker * The camera device cannot be opened due to an internal 60*4d7e907cSAndroid Build Coastguard Worker * error. 61*4d7e907cSAndroid Build Coastguard Worker * CAMERA_DISCONNECTED: 62*4d7e907cSAndroid Build Coastguard Worker * An external camera device has been disconnected, and is no longer 63*4d7e907cSAndroid Build Coastguard Worker * available. This camera device interface is now stale, and a new 64*4d7e907cSAndroid Build Coastguard Worker * instance must be acquired if the device is reconnected. All 65*4d7e907cSAndroid Build Coastguard Worker * subsequent calls on this interface must return 66*4d7e907cSAndroid Build Coastguard Worker * CAMERA_DISCONNECTED. 67*4d7e907cSAndroid Build Coastguard Worker * ILLEGAL_ARGUMENT: 68*4d7e907cSAndroid Build Coastguard Worker * If the physicalCameraId is not a valid physical camera Id outside 69*4d7e907cSAndroid Build Coastguard Worker * of ICameraProvider::getCameraIdList(). 70*4d7e907cSAndroid Build Coastguard Worker * 71*4d7e907cSAndroid Build Coastguard Worker * @return cameraCharacteristics 72*4d7e907cSAndroid Build Coastguard Worker * The static metadata for this logical camera device's physical device, or an empty 73*4d7e907cSAndroid Build Coastguard Worker * metadata structure if status is not OK. 74*4d7e907cSAndroid Build Coastguard Worker * 75*4d7e907cSAndroid Build Coastguard Worker */ 76*4d7e907cSAndroid Build Coastguard Worker getPhysicalCameraCharacteristics(string physicalCameraId) 77*4d7e907cSAndroid Build Coastguard Worker generates (Status status, CameraMetadata cameraCharacteristics); 78*4d7e907cSAndroid Build Coastguard Worker 79*4d7e907cSAndroid Build Coastguard Worker 80*4d7e907cSAndroid Build Coastguard Worker /** 81*4d7e907cSAndroid Build Coastguard Worker * isStreamCombinationSupported: 82*4d7e907cSAndroid Build Coastguard Worker * 83*4d7e907cSAndroid Build Coastguard Worker * Check for device support of specific camera stream combination. 84*4d7e907cSAndroid Build Coastguard Worker * 85*4d7e907cSAndroid Build Coastguard Worker * The streamList must contain at least one output-capable stream, and may 86*4d7e907cSAndroid Build Coastguard Worker * not contain more than one input-capable stream. 87*4d7e907cSAndroid Build Coastguard Worker * In contrast to regular stream configuration the framework does not create 88*4d7e907cSAndroid Build Coastguard Worker * or initialize any actual streams. This means that Hal must not use or 89*4d7e907cSAndroid Build Coastguard Worker * consider the stream "id" value. 90*4d7e907cSAndroid Build Coastguard Worker * 91*4d7e907cSAndroid Build Coastguard Worker * ------------------------------------------------------------------------ 92*4d7e907cSAndroid Build Coastguard Worker * 93*4d7e907cSAndroid Build Coastguard Worker * Preconditions: 94*4d7e907cSAndroid Build Coastguard Worker * 95*4d7e907cSAndroid Build Coastguard Worker * The framework can call this method at any time before, during and 96*4d7e907cSAndroid Build Coastguard Worker * after active session configuration. This means that calls must not 97*4d7e907cSAndroid Build Coastguard Worker * impact the performance of pending camera requests in any way. In 98*4d7e907cSAndroid Build Coastguard Worker * particular there must not be any glitches or delays during normal 99*4d7e907cSAndroid Build Coastguard Worker * camera streaming. 100*4d7e907cSAndroid Build Coastguard Worker * 101*4d7e907cSAndroid Build Coastguard Worker * Performance requirements: 102*4d7e907cSAndroid Build Coastguard Worker * This call is expected to be significantly faster than stream 103*4d7e907cSAndroid Build Coastguard Worker * configuration. In general HW and SW camera settings must not be 104*4d7e907cSAndroid Build Coastguard Worker * changed and there must not be a user-visible impact on camera performance. 105*4d7e907cSAndroid Build Coastguard Worker * 106*4d7e907cSAndroid Build Coastguard Worker * @return Status Status code for the operation, one of: 107*4d7e907cSAndroid Build Coastguard Worker * OK: 108*4d7e907cSAndroid Build Coastguard Worker * On successful stream combination query. 109*4d7e907cSAndroid Build Coastguard Worker * METHOD_NOT_SUPPORTED: 110*4d7e907cSAndroid Build Coastguard Worker * The camera device does not support stream combination query. 111*4d7e907cSAndroid Build Coastguard Worker * INTERNAL_ERROR: 112*4d7e907cSAndroid Build Coastguard Worker * The stream combination query cannot complete due to internal 113*4d7e907cSAndroid Build Coastguard Worker * error. 114*4d7e907cSAndroid Build Coastguard Worker * @return true in case the stream combination is supported, false otherwise. 115*4d7e907cSAndroid Build Coastguard Worker * 116*4d7e907cSAndroid Build Coastguard Worker */ 117*4d7e907cSAndroid Build Coastguard Worker isStreamCombinationSupported(@3.4::StreamConfiguration streams) 118*4d7e907cSAndroid Build Coastguard Worker generates (Status status, bool queryStatus); 119*4d7e907cSAndroid Build Coastguard Worker}; 120