1*ec779b8eSAndroid Build Coastguard Worker /*
2*ec779b8eSAndroid Build Coastguard Worker * Copyright (C) 2015 The Android Open Source Project
3*ec779b8eSAndroid Build Coastguard Worker *
4*ec779b8eSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License");
5*ec779b8eSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License.
6*ec779b8eSAndroid Build Coastguard Worker * You may obtain a copy of the License at
7*ec779b8eSAndroid Build Coastguard Worker *
8*ec779b8eSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0
9*ec779b8eSAndroid Build Coastguard Worker *
10*ec779b8eSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software
11*ec779b8eSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS,
12*ec779b8eSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*ec779b8eSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and
14*ec779b8eSAndroid Build Coastguard Worker * limitations under the License.
15*ec779b8eSAndroid Build Coastguard Worker */
16*ec779b8eSAndroid Build Coastguard Worker
17*ec779b8eSAndroid Build Coastguard Worker //#define LOG_NDEBUG 0
18*ec779b8eSAndroid Build Coastguard Worker #define LOG_TAG "NdkCameraCaptureSession"
19*ec779b8eSAndroid Build Coastguard Worker #define ATRACE_TAG ATRACE_TAG_CAMERA
20*ec779b8eSAndroid Build Coastguard Worker
21*ec779b8eSAndroid Build Coastguard Worker #include <utils/Log.h>
22*ec779b8eSAndroid Build Coastguard Worker #include <utils/Mutex.h>
23*ec779b8eSAndroid Build Coastguard Worker #include <utils/StrongPointer.h>
24*ec779b8eSAndroid Build Coastguard Worker #include <utils/Trace.h>
25*ec779b8eSAndroid Build Coastguard Worker
26*ec779b8eSAndroid Build Coastguard Worker #include <camera/NdkCameraDevice.h>
27*ec779b8eSAndroid Build Coastguard Worker #include <camera/NdkCaptureRequest.h>
28*ec779b8eSAndroid Build Coastguard Worker #include <camera/NdkCameraCaptureSession.h>
29*ec779b8eSAndroid Build Coastguard Worker #include "impl/ACameraCaptureSession.h"
30*ec779b8eSAndroid Build Coastguard Worker
31*ec779b8eSAndroid Build Coastguard Worker #include "impl/ACameraCaptureSession.inc"
32*ec779b8eSAndroid Build Coastguard Worker
33*ec779b8eSAndroid Build Coastguard Worker #include "NdkCameraCaptureSession.inc"
34*ec779b8eSAndroid Build Coastguard Worker
35*ec779b8eSAndroid Build Coastguard Worker using namespace android;
36*ec779b8eSAndroid Build Coastguard Worker
37*ec779b8eSAndroid Build Coastguard Worker EXPORT
ACameraCaptureSession_close(ACameraCaptureSession * session)38*ec779b8eSAndroid Build Coastguard Worker void ACameraCaptureSession_close(ACameraCaptureSession* session) {
39*ec779b8eSAndroid Build Coastguard Worker ATRACE_CALL();
40*ec779b8eSAndroid Build Coastguard Worker if (session != nullptr) {
41*ec779b8eSAndroid Build Coastguard Worker session->closeByApp();
42*ec779b8eSAndroid Build Coastguard Worker }
43*ec779b8eSAndroid Build Coastguard Worker return;
44*ec779b8eSAndroid Build Coastguard Worker }
45*ec779b8eSAndroid Build Coastguard Worker
46*ec779b8eSAndroid Build Coastguard Worker EXPORT
ACameraCaptureSession_getDevice(ACameraCaptureSession * session,ACameraDevice ** device)47*ec779b8eSAndroid Build Coastguard Worker camera_status_t ACameraCaptureSession_getDevice(
48*ec779b8eSAndroid Build Coastguard Worker ACameraCaptureSession* session, ACameraDevice **device) {
49*ec779b8eSAndroid Build Coastguard Worker ATRACE_CALL();
50*ec779b8eSAndroid Build Coastguard Worker if (session == nullptr || device == nullptr) {
51*ec779b8eSAndroid Build Coastguard Worker ALOGE("%s: Error: invalid input: session %p, device %p",
52*ec779b8eSAndroid Build Coastguard Worker __FUNCTION__, session, device);
53*ec779b8eSAndroid Build Coastguard Worker return ACAMERA_ERROR_INVALID_PARAMETER;
54*ec779b8eSAndroid Build Coastguard Worker }
55*ec779b8eSAndroid Build Coastguard Worker
56*ec779b8eSAndroid Build Coastguard Worker if (session->isClosed()) {
57*ec779b8eSAndroid Build Coastguard Worker ALOGE("%s: session %p is already closed", __FUNCTION__, session);
58*ec779b8eSAndroid Build Coastguard Worker *device = nullptr;
59*ec779b8eSAndroid Build Coastguard Worker return ACAMERA_ERROR_SESSION_CLOSED;
60*ec779b8eSAndroid Build Coastguard Worker }
61*ec779b8eSAndroid Build Coastguard Worker
62*ec779b8eSAndroid Build Coastguard Worker *device = session->getDevice();
63*ec779b8eSAndroid Build Coastguard Worker if (*device == nullptr) {
64*ec779b8eSAndroid Build Coastguard Worker // Should not reach here
65*ec779b8eSAndroid Build Coastguard Worker ALOGE("%s: unknown failure: device is null", __FUNCTION__);
66*ec779b8eSAndroid Build Coastguard Worker return ACAMERA_ERROR_UNKNOWN;
67*ec779b8eSAndroid Build Coastguard Worker }
68*ec779b8eSAndroid Build Coastguard Worker return ACAMERA_OK;
69*ec779b8eSAndroid Build Coastguard Worker }
70*ec779b8eSAndroid Build Coastguard Worker
71*ec779b8eSAndroid Build Coastguard Worker EXPORT
ACameraCaptureSession_capture(ACameraCaptureSession * session,ACameraCaptureSession_captureCallbacks * cbs,int numRequests,ACaptureRequest ** requests,int * captureSequenceId)72*ec779b8eSAndroid Build Coastguard Worker camera_status_t ACameraCaptureSession_capture(
73*ec779b8eSAndroid Build Coastguard Worker ACameraCaptureSession* session, /*optional*/ACameraCaptureSession_captureCallbacks* cbs,
74*ec779b8eSAndroid Build Coastguard Worker int numRequests, ACaptureRequest** requests,
75*ec779b8eSAndroid Build Coastguard Worker /*optional*/int* captureSequenceId) {
76*ec779b8eSAndroid Build Coastguard Worker ATRACE_CALL();
77*ec779b8eSAndroid Build Coastguard Worker return captureTemplate(session, cbs, numRequests, requests, captureSequenceId);
78*ec779b8eSAndroid Build Coastguard Worker }
79*ec779b8eSAndroid Build Coastguard Worker
80*ec779b8eSAndroid Build Coastguard Worker EXPORT
ACameraCaptureSession_captureV2(ACameraCaptureSession * session,ACameraCaptureSession_captureCallbacksV2 * cbs,int numRequests,ACaptureRequest ** requests,int * captureSequenceId)81*ec779b8eSAndroid Build Coastguard Worker camera_status_t ACameraCaptureSession_captureV2(
82*ec779b8eSAndroid Build Coastguard Worker ACameraCaptureSession* session, /*optional*/ACameraCaptureSession_captureCallbacksV2* cbs,
83*ec779b8eSAndroid Build Coastguard Worker int numRequests, ACaptureRequest** requests,
84*ec779b8eSAndroid Build Coastguard Worker /*optional*/int* captureSequenceId) {
85*ec779b8eSAndroid Build Coastguard Worker ATRACE_CALL();
86*ec779b8eSAndroid Build Coastguard Worker return captureTemplate(session, cbs, numRequests, requests, captureSequenceId);
87*ec779b8eSAndroid Build Coastguard Worker }
88*ec779b8eSAndroid Build Coastguard Worker
89*ec779b8eSAndroid Build Coastguard Worker EXPORT
ACameraCaptureSession_logicalCamera_capture(ACameraCaptureSession * session,ACameraCaptureSession_logicalCamera_captureCallbacks * lcbs,int numRequests,ACaptureRequest ** requests,int * captureSequenceId)90*ec779b8eSAndroid Build Coastguard Worker camera_status_t ACameraCaptureSession_logicalCamera_capture(
91*ec779b8eSAndroid Build Coastguard Worker ACameraCaptureSession* session,
92*ec779b8eSAndroid Build Coastguard Worker /*optional*/ACameraCaptureSession_logicalCamera_captureCallbacks* lcbs,
93*ec779b8eSAndroid Build Coastguard Worker int numRequests, ACaptureRequest** requests,
94*ec779b8eSAndroid Build Coastguard Worker /*optional*/int* captureSequenceId) {
95*ec779b8eSAndroid Build Coastguard Worker ATRACE_CALL();
96*ec779b8eSAndroid Build Coastguard Worker return captureTemplate(session, lcbs, numRequests, requests, captureSequenceId);
97*ec779b8eSAndroid Build Coastguard Worker }
98*ec779b8eSAndroid Build Coastguard Worker
99*ec779b8eSAndroid Build Coastguard Worker EXPORT
ACameraCaptureSession_logicalCamera_captureV2(ACameraCaptureSession * session,ACameraCaptureSession_logicalCamera_captureCallbacksV2 * lcbs,int numRequests,ACaptureRequest ** requests,int * captureSequenceId)100*ec779b8eSAndroid Build Coastguard Worker camera_status_t ACameraCaptureSession_logicalCamera_captureV2(
101*ec779b8eSAndroid Build Coastguard Worker ACameraCaptureSession* session,
102*ec779b8eSAndroid Build Coastguard Worker /*optional*/ACameraCaptureSession_logicalCamera_captureCallbacksV2* lcbs,
103*ec779b8eSAndroid Build Coastguard Worker int numRequests, ACaptureRequest** requests,
104*ec779b8eSAndroid Build Coastguard Worker /*optional*/int* captureSequenceId) {
105*ec779b8eSAndroid Build Coastguard Worker ATRACE_CALL();
106*ec779b8eSAndroid Build Coastguard Worker return captureTemplate(session, lcbs, numRequests, requests, captureSequenceId);
107*ec779b8eSAndroid Build Coastguard Worker }
108*ec779b8eSAndroid Build Coastguard Worker
109*ec779b8eSAndroid Build Coastguard Worker EXPORT
ACameraCaptureSession_setRepeatingRequestV2(ACameraCaptureSession * session,ACameraCaptureSession_captureCallbacksV2 * cbs,int numRequests,ACaptureRequest ** requests,int * captureSequenceId)110*ec779b8eSAndroid Build Coastguard Worker camera_status_t ACameraCaptureSession_setRepeatingRequestV2(
111*ec779b8eSAndroid Build Coastguard Worker ACameraCaptureSession* session, /*optional*/ACameraCaptureSession_captureCallbacksV2* cbs,
112*ec779b8eSAndroid Build Coastguard Worker int numRequests, ACaptureRequest** requests,
113*ec779b8eSAndroid Build Coastguard Worker /*optional*/int* captureSequenceId) {
114*ec779b8eSAndroid Build Coastguard Worker ATRACE_CALL();
115*ec779b8eSAndroid Build Coastguard Worker return setRepeatingRequestTemplate(session, cbs, numRequests, requests, captureSequenceId);
116*ec779b8eSAndroid Build Coastguard Worker }
117*ec779b8eSAndroid Build Coastguard Worker
118*ec779b8eSAndroid Build Coastguard Worker EXPORT
ACameraCaptureSession_setRepeatingRequest(ACameraCaptureSession * session,ACameraCaptureSession_captureCallbacks * cbs,int numRequests,ACaptureRequest ** requests,int * captureSequenceId)119*ec779b8eSAndroid Build Coastguard Worker camera_status_t ACameraCaptureSession_setRepeatingRequest(
120*ec779b8eSAndroid Build Coastguard Worker ACameraCaptureSession* session, /*optional*/ACameraCaptureSession_captureCallbacks* cbs,
121*ec779b8eSAndroid Build Coastguard Worker int numRequests, ACaptureRequest** requests,
122*ec779b8eSAndroid Build Coastguard Worker /*optional*/int* captureSequenceId) {
123*ec779b8eSAndroid Build Coastguard Worker ATRACE_CALL();
124*ec779b8eSAndroid Build Coastguard Worker return setRepeatingRequestTemplate(session, cbs, numRequests, requests, captureSequenceId);
125*ec779b8eSAndroid Build Coastguard Worker }
126*ec779b8eSAndroid Build Coastguard Worker
127*ec779b8eSAndroid Build Coastguard Worker
128*ec779b8eSAndroid Build Coastguard Worker EXPORT
ACameraCaptureSession_logicalCamera_setRepeatingRequest(ACameraCaptureSession * session,ACameraCaptureSession_logicalCamera_captureCallbacks * lcbs,int numRequests,ACaptureRequest ** requests,int * captureSequenceId)129*ec779b8eSAndroid Build Coastguard Worker camera_status_t ACameraCaptureSession_logicalCamera_setRepeatingRequest(
130*ec779b8eSAndroid Build Coastguard Worker ACameraCaptureSession* session,
131*ec779b8eSAndroid Build Coastguard Worker /*optional*/ACameraCaptureSession_logicalCamera_captureCallbacks* lcbs,
132*ec779b8eSAndroid Build Coastguard Worker int numRequests, ACaptureRequest** requests,
133*ec779b8eSAndroid Build Coastguard Worker /*optional*/int* captureSequenceId) {
134*ec779b8eSAndroid Build Coastguard Worker ATRACE_CALL();
135*ec779b8eSAndroid Build Coastguard Worker return setRepeatingRequestTemplate(session, lcbs, numRequests, requests, captureSequenceId);
136*ec779b8eSAndroid Build Coastguard Worker }
137*ec779b8eSAndroid Build Coastguard Worker
138*ec779b8eSAndroid Build Coastguard Worker
139*ec779b8eSAndroid Build Coastguard Worker EXPORT
ACameraCaptureSession_logicalCamera_setRepeatingRequestV2(ACameraCaptureSession * session,ACameraCaptureSession_logicalCamera_captureCallbacksV2 * lcbs,int numRequests,ACaptureRequest ** requests,int * captureSequenceId)140*ec779b8eSAndroid Build Coastguard Worker camera_status_t ACameraCaptureSession_logicalCamera_setRepeatingRequestV2(
141*ec779b8eSAndroid Build Coastguard Worker ACameraCaptureSession* session,
142*ec779b8eSAndroid Build Coastguard Worker /*optional*/ACameraCaptureSession_logicalCamera_captureCallbacksV2* lcbs,
143*ec779b8eSAndroid Build Coastguard Worker int numRequests, ACaptureRequest** requests,
144*ec779b8eSAndroid Build Coastguard Worker /*optional*/int* captureSequenceId) {
145*ec779b8eSAndroid Build Coastguard Worker ATRACE_CALL();
146*ec779b8eSAndroid Build Coastguard Worker return setRepeatingRequestTemplate(session, lcbs, numRequests, requests, captureSequenceId);
147*ec779b8eSAndroid Build Coastguard Worker }
148*ec779b8eSAndroid Build Coastguard Worker
149*ec779b8eSAndroid Build Coastguard Worker EXPORT
ACameraCaptureSession_stopRepeating(ACameraCaptureSession * session)150*ec779b8eSAndroid Build Coastguard Worker camera_status_t ACameraCaptureSession_stopRepeating(ACameraCaptureSession* session) {
151*ec779b8eSAndroid Build Coastguard Worker ATRACE_CALL();
152*ec779b8eSAndroid Build Coastguard Worker if (session == nullptr) {
153*ec779b8eSAndroid Build Coastguard Worker ALOGE("%s: Error: session is null", __FUNCTION__);
154*ec779b8eSAndroid Build Coastguard Worker return ACAMERA_ERROR_INVALID_PARAMETER;
155*ec779b8eSAndroid Build Coastguard Worker }
156*ec779b8eSAndroid Build Coastguard Worker
157*ec779b8eSAndroid Build Coastguard Worker if (session->isClosed()) {
158*ec779b8eSAndroid Build Coastguard Worker ALOGE("%s: session %p is already closed", __FUNCTION__, session);
159*ec779b8eSAndroid Build Coastguard Worker return ACAMERA_ERROR_SESSION_CLOSED;
160*ec779b8eSAndroid Build Coastguard Worker }
161*ec779b8eSAndroid Build Coastguard Worker return session->stopRepeating();
162*ec779b8eSAndroid Build Coastguard Worker }
163*ec779b8eSAndroid Build Coastguard Worker
164*ec779b8eSAndroid Build Coastguard Worker EXPORT
ACameraCaptureSession_abortCaptures(ACameraCaptureSession * session)165*ec779b8eSAndroid Build Coastguard Worker camera_status_t ACameraCaptureSession_abortCaptures(ACameraCaptureSession* session) {
166*ec779b8eSAndroid Build Coastguard Worker ATRACE_CALL();
167*ec779b8eSAndroid Build Coastguard Worker if (session == nullptr) {
168*ec779b8eSAndroid Build Coastguard Worker ALOGE("%s: Error: session is null", __FUNCTION__);
169*ec779b8eSAndroid Build Coastguard Worker return ACAMERA_ERROR_INVALID_PARAMETER;
170*ec779b8eSAndroid Build Coastguard Worker }
171*ec779b8eSAndroid Build Coastguard Worker
172*ec779b8eSAndroid Build Coastguard Worker if (session->isClosed()) {
173*ec779b8eSAndroid Build Coastguard Worker ALOGE("%s: session %p is already closed", __FUNCTION__, session);
174*ec779b8eSAndroid Build Coastguard Worker return ACAMERA_ERROR_SESSION_CLOSED;
175*ec779b8eSAndroid Build Coastguard Worker }
176*ec779b8eSAndroid Build Coastguard Worker return session->abortCaptures();
177*ec779b8eSAndroid Build Coastguard Worker }
178*ec779b8eSAndroid Build Coastguard Worker
179*ec779b8eSAndroid Build Coastguard Worker EXPORT
ACameraCaptureSessionShared_startStreaming(ACameraCaptureSession *,ACameraCaptureSession_captureCallbacksV2 *,int,ANativeWindow **,int *)180*ec779b8eSAndroid Build Coastguard Worker camera_status_t ACameraCaptureSessionShared_startStreaming(
181*ec779b8eSAndroid Build Coastguard Worker ACameraCaptureSession* /*session*/, ACameraCaptureSession_captureCallbacksV2* /*callbacks*/,
182*ec779b8eSAndroid Build Coastguard Worker int /*numOutputWindows*/, ANativeWindow** /*window*/,
183*ec779b8eSAndroid Build Coastguard Worker int* /*captureSequenceId*/) {
184*ec779b8eSAndroid Build Coastguard Worker ATRACE_CALL();
185*ec779b8eSAndroid Build Coastguard Worker // Todo: need to add implementation
186*ec779b8eSAndroid Build Coastguard Worker return ACAMERA_OK;
187*ec779b8eSAndroid Build Coastguard Worker }
188*ec779b8eSAndroid Build Coastguard Worker
189*ec779b8eSAndroid Build Coastguard Worker EXPORT
ACameraCaptureSessionShared_logicalCamera_startStreaming(ACameraCaptureSession *,ACameraCaptureSession_logicalCamera_captureCallbacksV2 *,int,ANativeWindow **,int *)190*ec779b8eSAndroid Build Coastguard Worker camera_status_t ACameraCaptureSessionShared_logicalCamera_startStreaming(
191*ec779b8eSAndroid Build Coastguard Worker ACameraCaptureSession* /*session*/,
192*ec779b8eSAndroid Build Coastguard Worker ACameraCaptureSession_logicalCamera_captureCallbacksV2* /*callbacks*/,
193*ec779b8eSAndroid Build Coastguard Worker int /*numOutputWindows*/, ANativeWindow** /*windows*/,
194*ec779b8eSAndroid Build Coastguard Worker int* /*captureSequenceId*/) {
195*ec779b8eSAndroid Build Coastguard Worker ATRACE_CALL();
196*ec779b8eSAndroid Build Coastguard Worker // Todo: need to add implementation
197*ec779b8eSAndroid Build Coastguard Worker return ACAMERA_OK;
198*ec779b8eSAndroid Build Coastguard Worker }
199*ec779b8eSAndroid Build Coastguard Worker
200*ec779b8eSAndroid Build Coastguard Worker EXPORT
ACameraCaptureSessionShared_stopStreaming(ACameraCaptureSession *)201*ec779b8eSAndroid Build Coastguard Worker camera_status_t ACameraCaptureSessionShared_stopStreaming(ACameraCaptureSession* /*session*/) {
202*ec779b8eSAndroid Build Coastguard Worker ATRACE_CALL();
203*ec779b8eSAndroid Build Coastguard Worker // Todo: need to add implementation
204*ec779b8eSAndroid Build Coastguard Worker return ACAMERA_OK;
205*ec779b8eSAndroid Build Coastguard Worker }
206*ec779b8eSAndroid Build Coastguard Worker
207*ec779b8eSAndroid Build Coastguard Worker EXPORT
ACameraCaptureSession_updateSharedOutput(ACameraCaptureSession * session,ACaptureSessionOutput * output)208*ec779b8eSAndroid Build Coastguard Worker camera_status_t ACameraCaptureSession_updateSharedOutput(ACameraCaptureSession* session,
209*ec779b8eSAndroid Build Coastguard Worker ACaptureSessionOutput* output) {
210*ec779b8eSAndroid Build Coastguard Worker ATRACE_CALL();
211*ec779b8eSAndroid Build Coastguard Worker if (session == nullptr) {
212*ec779b8eSAndroid Build Coastguard Worker ALOGE("%s: Error: session is null", __FUNCTION__);
213*ec779b8eSAndroid Build Coastguard Worker return ACAMERA_ERROR_INVALID_PARAMETER;
214*ec779b8eSAndroid Build Coastguard Worker }
215*ec779b8eSAndroid Build Coastguard Worker
216*ec779b8eSAndroid Build Coastguard Worker if (session->isClosed()) {
217*ec779b8eSAndroid Build Coastguard Worker ALOGE("%s: session %p is already closed", __FUNCTION__, session);
218*ec779b8eSAndroid Build Coastguard Worker return ACAMERA_ERROR_SESSION_CLOSED;
219*ec779b8eSAndroid Build Coastguard Worker }
220*ec779b8eSAndroid Build Coastguard Worker return session->updateOutputConfiguration(output);
221*ec779b8eSAndroid Build Coastguard Worker }
222*ec779b8eSAndroid Build Coastguard Worker
223*ec779b8eSAndroid Build Coastguard Worker EXPORT
ACameraCaptureSession_setWindowPreparedCallback(ACameraCaptureSession * session,void * context,ACameraCaptureSession_prepareCallback cb)224*ec779b8eSAndroid Build Coastguard Worker camera_status_t ACameraCaptureSession_setWindowPreparedCallback(
225*ec779b8eSAndroid Build Coastguard Worker ACameraCaptureSession* session, void *context,
226*ec779b8eSAndroid Build Coastguard Worker ACameraCaptureSession_prepareCallback cb) {
227*ec779b8eSAndroid Build Coastguard Worker ATRACE_CALL();
228*ec779b8eSAndroid Build Coastguard Worker if (session == nullptr || cb == nullptr) {
229*ec779b8eSAndroid Build Coastguard Worker ALOGE("%s: Error: session %p / callback %p is null", __FUNCTION__, session, cb);
230*ec779b8eSAndroid Build Coastguard Worker return ACAMERA_ERROR_INVALID_PARAMETER;
231*ec779b8eSAndroid Build Coastguard Worker }
232*ec779b8eSAndroid Build Coastguard Worker
233*ec779b8eSAndroid Build Coastguard Worker if (session->isClosed()) {
234*ec779b8eSAndroid Build Coastguard Worker ALOGE("%s: session %p is already closed", __FUNCTION__, session);
235*ec779b8eSAndroid Build Coastguard Worker return ACAMERA_ERROR_SESSION_CLOSED;
236*ec779b8eSAndroid Build Coastguard Worker }
237*ec779b8eSAndroid Build Coastguard Worker session->setWindowPreparedCallback(context, cb);
238*ec779b8eSAndroid Build Coastguard Worker return ACAMERA_OK;
239*ec779b8eSAndroid Build Coastguard Worker }
240*ec779b8eSAndroid Build Coastguard Worker
241*ec779b8eSAndroid Build Coastguard Worker EXPORT
ACameraCaptureSession_prepareWindow(ACameraCaptureSession * session,ANativeWindow * window)242*ec779b8eSAndroid Build Coastguard Worker camera_status_t ACameraCaptureSession_prepareWindow(
243*ec779b8eSAndroid Build Coastguard Worker ACameraCaptureSession* session,
244*ec779b8eSAndroid Build Coastguard Worker ANativeWindow *window) {
245*ec779b8eSAndroid Build Coastguard Worker ATRACE_CALL();
246*ec779b8eSAndroid Build Coastguard Worker if (session == nullptr || window == nullptr) {
247*ec779b8eSAndroid Build Coastguard Worker ALOGE("%s: Error: session %p / window %p is null", __FUNCTION__, session, window);
248*ec779b8eSAndroid Build Coastguard Worker return ACAMERA_ERROR_INVALID_PARAMETER;
249*ec779b8eSAndroid Build Coastguard Worker }
250*ec779b8eSAndroid Build Coastguard Worker
251*ec779b8eSAndroid Build Coastguard Worker if (session->isClosed()) {
252*ec779b8eSAndroid Build Coastguard Worker ALOGE("%s: session %p is already closed", __FUNCTION__, session);
253*ec779b8eSAndroid Build Coastguard Worker return ACAMERA_ERROR_SESSION_CLOSED;
254*ec779b8eSAndroid Build Coastguard Worker }
255*ec779b8eSAndroid Build Coastguard Worker return session->prepare(window);
256*ec779b8eSAndroid Build Coastguard Worker }
257