| /* |
| * 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 @3.2::StreamBuffer; |
| import @3.4::ICameraDeviceCallback; |
| |
| /** |
| * Callback methods for the HAL to call into the framework. |
| */ |
| interface ICameraDeviceCallback extends @3.4::ICameraDeviceCallback { |
| |
| /** |
| * requestStreamBuffers: |
| * |
| * Synchronous callback for HAL to ask for output buffers from camera service. |
| * |
| * This call may be serialized in camera service so it is strongly |
| * recommended to only call this method from one thread. |
| * |
| * When camera device advertises |
| * (CameraMetadataEnumAndroidInfoSupportedBufferManagementVersion == |
| * ANDROID_INFO_SUPPORTED_BUFFER_MANAGEMENT_VERSION_HIDL_DEVICE_3_5), HAL |
| * can use this method to request buffers from camera service. |
| * |
| * @return status Status code for the operation, one of: |
| * OK: all requested buffers are returned |
| * FAILED_PARTIAL: some streams failed while some succeeds. Check |
| * individual StreamBufferRet for details. |
| * FAILED_CONFIGURING: the request failed because camera servicve is |
| * performing configureStreams and no buffers are returned. |
| * FAILED_UNKNOWN: the request failed for unknown reason and no buffers |
| * are returned. |
| * |
| * Performance requirements: |
| * This is a blocking call that takes more time with more buffers requested. |
| * HAL must not request large amount of buffers on a latency critical code |
| * path. It is highly recommended to use a dedicated thread to perform |
| * all requestStreamBuffers calls, and adjust the thread priority and/or |
| * timing of making the call in order for buffers to arrive before HAL is |
| * ready to fill the buffer. |
| */ |
| requestStreamBuffers(vec<BufferRequest> bufReqs) |
| generates (BufferRequestStatus st, vec<StreamBufferRet> buffers); |
| |
| /** |
| * returnStreamBuffers: |
| * |
| * Synchronous callback for HAL to return output buffers to camera service. |
| * |
| * If this method is called during a configureStreams call, it must be blocked |
| * until camera service finishes the ongoing configureStreams call. |
| */ |
| returnStreamBuffers(vec<StreamBuffer> buffers); |
| |
| }; |