blob: fb5c7fa89edec1d825fe5f8c50e7d193a6b99205 [file] [log] [blame]
Shuzhen Wang25d67102020-12-04 12:57:09 -08001/*
2 * Copyright (C) 2021 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.camera.device@3.7;
18
19import android.hardware.camera.common@1.0::Status;
20import @3.2::BufferCache;
21import @3.5::StreamConfiguration;
22import @3.6::ICameraDeviceSession;
23import @3.6::HalStreamConfiguration;
24
25/**
26 * Camera device active session interface.
27 *
28 * Obtained via ICameraDevice::open(), this interface contains the methods to
29 * configure and request captures from an active camera device.
30 */
31interface ICameraDeviceSession extends @3.6::ICameraDeviceSession {
32 /**
33 * configureStreams_3_7:
34 *
35 * Identical to @3.6::ICameraDeviceSession.configureStreams_3_6, except that:
36 *
37 * - The requestedConfiguration allows the camera framework to configure
38 * stream groups.
39 * - For requested configurations of streams within the same group, the
40 * corresponding halConfiguration must have the same usage flags and
41 * maxBuffers.
42 * - Within a CaptureRequest, the application is guaranteed not to request
43 * more than one streams within the same stream group. When one of the
44 * stream within a stream group is requested, the camera HAL can either
45 * produce output on that stream, or any other stream within the same
46 * stream group.
47 * - The requestedConfiguration allows the camera framework to indicate that
48 * input images of different sizes may be submitted within capture
49 * requests.
50 *
51 * @return status Status code for the operation, one of:
52 * OK:
53 * On successful stream configuration.
54 * INTERNAL_ERROR:
55 * If there has been a fatal error and the device is no longer
56 * operational. Only close() can be called successfully by the
57 * framework after this error is returned.
58 * ILLEGAL_ARGUMENT:
59 * If the requested stream configuration is invalid. Some examples
60 * of invalid stream configurations include:
61 * - Including more than 1 INPUT stream
62 * - Not including any OUTPUT streams
63 * - Including streams with unsupported formats, or an unsupported
64 * size for that format.
65 * - Including too many output streams of a certain format.
66 * - Unsupported rotation configuration
67 * - Stream sizes/formats don't satisfy the
68 * StreamConfigurationMode requirements
69 * for non-NORMAL mode, or the requested operation_mode is not
70 * supported by the HAL.
71 * - Unsupported usage flag
72 * - Unsupported stream groupIds, or unsupported multi-resolution
73 * input stream.
74 * The camera service cannot filter out all possible illegal stream
75 * configurations, since some devices may support more simultaneous
76 * streams or larger stream resolutions than the minimum required
77 * for a given camera device hardware level. The HAL must return an
78 * ILLEGAL_ARGUMENT for any unsupported stream set, and then be
79 * ready to accept a future valid stream configuration in a later
80 * configureStreams call.
81 * @return halConfiguration The stream parameters desired by the HAL for
82 * each stream, including maximum buffers, the usage flags, and the
83 * override format.
84 */
85 configureStreams_3_7(StreamConfiguration requestedConfiguration)
86 generates (Status status, @3.6::HalStreamConfiguration halConfiguration);
87
88 /**
89 * processCaptureRequest_3_7:
90 *
91 * Identical to @3.4::ICameraDeviceSession.processCaptureRequest, except that:
92 *
93 * - The capture request can include width and height of the input buffer for
94 * a reprocessing request.
95 *
96 * @return status Status code for the operation, one of:
97 * OK:
98 * On a successful start to processing the capture request
99 * ILLEGAL_ARGUMENT:
100 * If the input is malformed (the settings are empty when not
101 * allowed, the physical camera settings are invalid, there are 0
102 * output buffers, etc) and capture processing
103 * cannot start. Failures during request processing must be
104 * handled by calling ICameraDeviceCallback::notify(). In case of
105 * this error, the framework retains responsibility for the
106 * stream buffers' fences and the buffer handles; the HAL must not
107 * close the fences or return these buffers with
108 * ICameraDeviceCallback::processCaptureResult().
109 * In case of multi-resolution input image, this error must be returned
110 * if the caller passes in a CaptureRequest with an invalid
111 * [inputWith, inputHeight].
112 * INTERNAL_ERROR:
113 * If the camera device has encountered a serious error. After this
114 * error is returned, only the close() method can be successfully
115 * called by the framework.
116 * @return numRequestProcessed Number of requests successfully processed by
117 * camera HAL. When status is OK, this must be equal to the size of
118 * requests. When the call fails, this number is the number of requests
119 * that HAL processed successfully before HAL runs into an error.
120 *
121 */
122 processCaptureRequest_3_7(vec<CaptureRequest> requests, vec<BufferCache> cachesToRemove)
123 generates (Status status, uint32_t numRequestProcessed);
124};