blob: a4738728f3f53e476da7748a421e9e0b867577ac [file] [log] [blame]
Scott Randolph5c99d852016-11-15 17:01:23 -08001/*
2 * Copyright (C) 2016 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
17package android.hardware.evs@1.0;
18
19import types;
20
21
22/**
23 * Represents a single camera and is the primary interface for capturing images.
24 */
25interface IEvsDisplay {
26
27 /**
28 * Returns basic information about the EVS display provided by the system.
29 *
30 * See the description of the DisplayDesc structure below for details.
31 */
32 getDisplayInfo() generates (DisplayDesc info);
33
34
35 /**
36 * Clients may set the display state to express their desired state.
37 *
38 * The HAL implementation must gracefully accept a request for any state while in
39 * any other state, although the response may be to defer or ignore the request. The display
40 * is defined to start in the NOT_VISIBLE state upon initialization. The client is
41 * then expected to request the VISIBLE_ON_NEXT_FRAME state, and then begin providing
42 * video. When the display is no longer required, the client is expected to request
43 * the NOT_VISIBLE state after passing the last video frame.
44 * Returns INVALID_ARG if the requested state is not a recognized value.
45 */
46 setDisplayState(DisplayState state) generates (EvsResult result);
47
48
49 /**
50 * This call requests the current state of the display
51 *
52 * The HAL implementation should report the actual current state, which might
53 * transiently differ from the most recently requested state. Note, however, that
54 * the logic responsible for changing display states should generally live above
55 * the device layer, making it undesirable for the HAL implementation to spontaneously
56 * change display states.
57 */
58 getDisplayState() generates (DisplayState state);
59
60
61 /**
62 * This call returns a handle to a frame buffer associated with the display.
63 *
64 * The returned buffer may be locked and written to by software and/or GL. This buffer
65 * must be returned via a call to returnTargetBufferForDisplay() even if the
66 * display is no longer visible.
67 */
68 getTargetBuffer() generates (handle bufferHandle);
69
70
71 /**
72 * This call tells the display that the buffer is ready for display.
73 *
74 * The buffer is no longer valid for use by the client after this call.
75 * There is no maximum time the caller may hold onto the buffer before making this
76 * call. The buffer may be returned at any time and in any DisplayState, but all
77 * buffers are expected to be returned before the IEvsDisplay interface is destroyed.
78 */
79 returnTargetBufferForDisplay(handle bufferHandle) generates (EvsResult result);
80};