blob: 1efd5ebf3d8f4fc68e1e2e391d58e091b4cfffce [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.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,
};