blob: 54219811fc0f06e2804ec6ca29015e8ebf498482 [file] [log] [blame]
/*
* Copyright (C) 2016 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@1.0;
import android.hardware.camera.common@1.0::types;
import android.hardware.graphics.common@1.0::types;
/**
* Camera device HAL@1.0 preview stream operation interface.
*/
interface ICameraDevicePreviewCallback {
/**
* Acquire a buffer to write a preview buffer into.
*
* @return status The status code for this operation. If not OK, then
* buffer and stride must not be used.
* @return bufferId A unique ID for the returned buffer.
* @return buffer A handle to the buffer to write into. Must be non-null if the bufferId has not
* been seen by HAL before. Must be null if the bufferId is seen before. HAL must keep track
* of the bufferId to actual buffer handle mapping.
* @return stride The stride between two rows of pixels in this buffer.
*/
dequeueBuffer() generates (Status status, uint64_t bufferId, handle buffer, uint32_t stride);
/**
* Send a filled preview buffer to its consumer.
*
* @param bufferId The bufferId of the preview buffer
* @return status The status code for this operation.
*/
enqueueBuffer(uint64_t bufferId) generates (Status status);
/**
* Return a preview buffer unfilled. This buffer must not be sent on to the
* preview consumer as a valid buffer, but may be reused as if it were
* empty.
*
* @param bufferId The bufferId of the preview buffer
* @return status The status code for this operation.
*/
cancelBuffer(uint64_t bufferId) generates (Status status);
/**
* Set the number of preview buffers needed by the HAL.
*
* @param count The maximum number of preview buffers to allocate.
* @return status The status code for this operation.
*/
setBufferCount(uint32_t count) generates (Status status);
/**
* Set the dimensions and format of future preview buffers.
*
* The next buffer that is dequeued must match the requested size and
* format.
*
* @return Status The status code for this operation.
*/
setBuffersGeometry(uint32_t w, uint32_t h,
android.hardware.graphics.common@1.0::PixelFormat format)
generates (Status status);
/**
* Set the valid region of image data for the next buffer(s) to be enqueued.
*
* @return Status The status code for this operation.
*/
setCrop(int32_t left, int32_t top, int32_t right, int32_t bottom)
generates (Status status);
/**
* Set the producer usage flags for the next buffer(s) to be enqueued.
*
* @return Status The status code for this operation.
*/
setUsage(BufferUsage usage) generates (Status status);
/**
* Set the expected buffering mode for the preview output.
*/
setSwapInterval(int32_t interval) generates (Status status);
/**
* Get the minimum number of buffers the preview consumer endpoint needs
* to hold for correct operation.
*
* @return Status The status code for this operation.
* @return count The number of buffers the consumer has requested.
*/
getMinUndequeuedBufferCount() generates (Status status, uint32_t count);
/**
* Set the timestamp for the next buffer to enqueue
*
* Timestamps are measured in nanoseconds, and must be comparable
* and monotonically increasing between two frames in the same
* preview stream. They do not need to be comparable between
* consecutive or parallel preview streams, cameras, or app runs.
*
* @param timestamp The timestamp to set for future buffers.
* @return Status The status code for this operation.
*/
setTimestamp(int64_t timestamp) generates (Status status);
};