Home | History | Annotate | Download | only in 3.5
      1 /*
      2  * Copyright (C) 2018 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package android.hardware.camera.device@3.5;
     18 
     19 import @3.2::StreamBuffer;
     20 import @3.4::ICameraDeviceCallback;
     21 
     22 /**
     23  * Callback methods for the HAL to call into the framework.
     24  */
     25 interface ICameraDeviceCallback extends @3.4::ICameraDeviceCallback {
     26 
     27     /**
     28      * requestStreamBuffers:
     29      *
     30      * Synchronous callback for HAL to ask for output buffers from camera service.
     31      *
     32      * This call may be serialized in camera service so it is strongly
     33      * recommended to only call this method from one thread.
     34      *
     35      * When camera device advertises
     36      * (CameraMetadataEnumAndroidInfoSupportedBufferManagementVersion ==
     37      * ANDROID_INFO_SUPPORTED_BUFFER_MANAGEMENT_VERSION_HIDL_DEVICE_3_5), HAL
     38      * can use this method to request buffers from camera service.
     39      *
     40      * @return status Status code for the operation, one of:
     41      *     OK: all requested buffers are returned
     42      *     FAILED_PARTIAL: some streams failed while some succeeds. Check
     43      *             individual StreamBufferRet for details.
     44      *     FAILED_CONFIGURING: the request failed because camera servicve is
     45      *             performing configureStreams and no buffers are returned.
     46      *     FAILED_UNKNOWN: the request failed for unknown reason and no buffers
     47      *             are returned.
     48      *
     49      * Performance requirements:
     50      * This is a blocking call that takes more time with more buffers requested.
     51      * HAL must not request large amount of buffers on a latency critical code
     52      * path. It is highly recommended to use a dedicated thread to perform
     53      * all requestStreamBuffers calls, and adjust the thread priority and/or
     54      * timing of making the call in order for buffers to arrive before HAL is
     55      * ready to fill the buffer.
     56      */
     57     requestStreamBuffers(vec<BufferRequest> bufReqs)
     58             generates (BufferRequestStatus st, vec<StreamBufferRet> buffers);
     59 
     60     /**
     61      * returnStreamBuffers:
     62      *
     63      * Synchronous callback for HAL to return output buffers to camera service.
     64      *
     65      * If this method is called during a configureStreams call, it must be blocked
     66      * until camera service finishes the ongoing configureStreams call.
     67      */
     68     returnStreamBuffers(vec<StreamBuffer> buffers);
     69 
     70 };
     71