| /* |
| * 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.automotive.evs@1.0; |
| |
| |
| /** |
| * Structure describing the basic properties of an EVS camera |
| * |
| * The HAL is responsible for filling out this structure for each |
| * EVS camera in the system. |
| */ |
| struct CameraDesc { |
| /* Unique identifier for camera devices. This may be a path to detected |
| * camera device; for example, "/dev/video0". |
| */ |
| string cameraId; |
| |
| /* Opaque value from driver. Vendor may use this field to store additional |
| * information; for example, sensor and bridge chip id. |
| */ |
| uint32_t vendorFlags; |
| }; |
| |
| |
| /** |
| * Structure describing the basic properties of an EVS display |
| * |
| * The HAL is responsible for filling out this structure to describe |
| * the EVS display. As an implementation detail, this may be a physical |
| * display or a virtual display that is overlaid or mixed with another |
| * presentation device. |
| */ |
| struct DisplayDesc { |
| /* Unique identifier for the display */ |
| string displayId; |
| |
| /* Opaque value from driver */ |
| uint32_t vendorFlags; |
| }; |
| |
| |
| /** |
| * Structure representing an image buffer through our APIs |
| * |
| * In addition to the handle to the graphics memory, we need to retain |
| * the properties of the buffer for easy reference and reconstruction of |
| * an ANativeWindowBuffer object on the remote side of API calls. |
| * (Not least because OpenGL expect an ANativeWindowBuffer* for us as a |
| * texture via eglCreateImageKHR(). |
| * See also related types from android.hardware.graphics.common |
| * TODO: b/34722508 Review details of interaction of this structure with gralloc and OpenGL. |
| * Specifically consider if format and/or usage should become enumerated types. |
| */ |
| struct BufferDesc { |
| /* A frame width in the units of pixels */ |
| uint32_t width; |
| |
| /* A frame height in the units of pixels */ |
| uint32_t height; |
| |
| /* A frame stride in the units of pixels, to match gralloc */ |
| uint32_t stride; |
| |
| /* The size of a pixel in the units of bytes */ |
| uint32_t pixelSize; |
| |
| /* The image format of the frame; may contain values from |
| * android_pixel_format_t |
| */ |
| uint32_t format; |
| |
| /* May contain values from Gralloc.h */ |
| uint32_t usage; |
| |
| /* Opaque value from driver */ |
| uint32_t bufferId; |
| |
| /* Gralloc memory buffer handle */ |
| handle memHandle; |
| }; |
| |
| |
| /** |
| * States for control of the EVS display |
| * |
| * The DisplayInfo structure describes the basic properties of an EVS display. Any EVS |
| * implementation is required to have one. The HAL is responsible for filling out this |
| * structure to describe the EVS display. As an implementation detail, this may be a |
| * physical display or a virtual display that is overlaid or mixed with another |
| * presentation device. |
| */ |
| enum DisplayState : uint32_t { |
| /* Display has not been requested by any application yet */ |
| NOT_OPEN = 0, |
| |
| /* Display is inhibited */ |
| NOT_VISIBLE, |
| |
| /* Will become visible with next frame */ |
| VISIBLE_ON_NEXT_FRAME, |
| |
| /* Display is currently active */ |
| VISIBLE, |
| |
| /* Driver is in an undefined state. Interface should be closed. */ |
| DEAD, |
| |
| /* Must be the last */ |
| NUM_STATES |
| }; |
| |
| |
| /** Error codes used in EVS HAL interface. */ |
| enum EvsResult : uint32_t { |
| OK = 0, |
| INVALID_ARG, |
| STREAM_ALREADY_RUNNING, |
| BUFFER_NOT_AVAILABLE, |
| OWNERSHIP_LOST, |
| UNDERLYING_SERVICE_ERROR, |
| }; |