1 /*
2 * Copyright (c) 2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "camera_ffi.h"
17
18 using namespace OHOS::FFI;
19
20 namespace OHOS {
21 namespace CameraStandard {
22
23 extern "C" {
FfiCameraManagerConstructor()24 int64_t FfiCameraManagerConstructor()
25 {
26 auto cameraManagerImpl = FFIData::Create<CJCameraManager>();
27 if (cameraManagerImpl == nullptr) {
28 return -1;
29 }
30 return cameraManagerImpl->GetID();
31 }
32
FfiCameraManagerGetSupportedSceneModes(int64_t id,CJCameraDevice cameraDevice,int32_t * errCode)33 CArrI32 FfiCameraManagerGetSupportedSceneModes(int64_t id, CJCameraDevice cameraDevice, int32_t *errCode)
34 {
35 auto cameraManagerImpl = FFIData::GetData<CJCameraManager>(id);
36 if (cameraManagerImpl == nullptr) {
37 *errCode = CameraError::CAMERA_SERVICE_ERROR;
38 return CArrI32{0};
39 }
40 std::string cameraId = std::string(cameraDevice.cameraId);
41 return cameraManagerImpl->GetSupportedSceneModes(cameraId, errCode);
42 }
43
FfiCameraManagerGetSupportedCameras(int64_t id,int32_t * errCode)44 CArrCJCameraDevice FfiCameraManagerGetSupportedCameras(int64_t id, int32_t *errCode)
45 {
46 auto cameraManagerImpl = FFIData::GetData<CJCameraManager>(id);
47 if (cameraManagerImpl == nullptr) {
48 *errCode = CameraError::CAMERA_SERVICE_ERROR;
49 return CArrCJCameraDevice{0};
50 }
51 return cameraManagerImpl->GetSupportedCameras(errCode);
52 }
53
FfiCameraManagerGetSupportedOutputCapability(int64_t id,CJCameraDevice cameraDevice,int32_t modeType,int32_t * errCode)54 CJCameraOutputCapability FfiCameraManagerGetSupportedOutputCapability(int64_t id, CJCameraDevice cameraDevice,
55 int32_t modeType, int32_t *errCode)
56 {
57 auto cameraManagerImpl = FFIData::GetData<CJCameraManager>(id);
58 if (cameraManagerImpl == nullptr) {
59 *errCode = CameraError::CAMERA_SERVICE_ERROR;
60 return CJCameraOutputCapability{CArrCJProfile{0}, CArrCJProfile{0}, CArrCJVideoProfile{0}, CArrI32{0}};
61 }
62 std::string cameraId = std::string(cameraDevice.cameraId);
63 sptr<CameraDevice> cameraInfo = cameraManagerImpl->GetCameraDeviceById(cameraId);
64 if (cameraInfo == nullptr) {
65 *errCode = CameraError::INVALID_PARAM;
66 return CJCameraOutputCapability{CArrCJProfile{0}, CArrCJProfile{0}, CArrCJVideoProfile{0}, CArrI32{0}};
67 }
68 sptr<CameraOutputCapability> cameraOutputCapability =
69 cameraManagerImpl->GetSupportedOutputCapability(cameraInfo, modeType);
70 return CameraOutputCapabilityToCJCameraOutputCapability(cameraOutputCapability, errCode);
71 }
72
FfiCameraManagerIsCameraMuted()73 bool FfiCameraManagerIsCameraMuted()
74 {
75 return CJCameraManager::IsCameraMuted();
76 }
77
FfiCameraManagerCreateCameraInputWithCameraDevice(int64_t id,CJCameraDevice cameraDevice,int32_t * errCode)78 int64_t FfiCameraManagerCreateCameraInputWithCameraDevice(int64_t id, CJCameraDevice cameraDevice, int32_t *errCode)
79 {
80 auto cameraManagerImpl = FFIData::GetData<CJCameraManager>(id);
81 if (cameraManagerImpl == nullptr) {
82 *errCode = CameraError::CAMERA_SERVICE_ERROR;
83 return -1;
84 }
85
86 std::string cameraId = std::string(cameraDevice.cameraId);
87 sptr<CameraDevice> cameraInfo = cameraManagerImpl->GetCameraDeviceById(cameraId);
88 if (cameraInfo == nullptr) {
89 *errCode = CameraError::INVALID_PARAM;
90 return -1;
91 }
92 sptr<CameraInput> cameraInput = nullptr;
93 *errCode = cameraManagerImpl->CreateCameraInputWithCameraDevice(cameraInfo, &cameraInput);
94 if (*errCode != CameraError::NO_ERROR) {
95 return -1;
96 }
97 auto cameraInputImpl = FFIData::Create<CJCameraInput>(cameraInput);
98 if (cameraInputImpl == nullptr) {
99 *errCode = CameraError::CAMERA_SERVICE_ERROR;
100 return -1;
101 }
102
103 return cameraInputImpl->GetID();
104 }
105
FfiCameraManagerCreateCameraInputWithCameraDeviceInfo(int64_t id,int32_t cameraPosition,int32_t cameraType,int32_t * errCode)106 int64_t FfiCameraManagerCreateCameraInputWithCameraDeviceInfo(int64_t id, int32_t cameraPosition, int32_t cameraType,
107 int32_t *errCode)
108 {
109 sptr<CameraInput> cameraInput = nullptr;
110 auto cameraManagerImpl = FFIData::GetData<CJCameraManager>(id);
111 if (cameraManagerImpl == nullptr) {
112 *errCode = CameraError::CAMERA_SERVICE_ERROR;
113 return -1;
114 }
115
116 *errCode = cameraManagerImpl->CreateCameraInputWithCameraDeviceInfo(
117 static_cast<const CameraPosition>(cameraPosition), static_cast<const CameraType>(cameraType), &cameraInput);
118 if (*errCode != CameraError::NO_ERROR) {
119 return -1;
120 }
121 auto cameraInputImpl = FFIData::Create<CJCameraInput>(cameraInput);
122 if (cameraInputImpl == nullptr) {
123 *errCode = CameraError::CAMERA_SERVICE_ERROR;
124 return -1;
125 }
126
127 return cameraInputImpl->GetID();
128 }
129
FfiCameraManagerCreatePreviewOutput(CJProfile profile,const char * surfaceId,int32_t * errCode)130 int64_t FfiCameraManagerCreatePreviewOutput(CJProfile profile, const char *surfaceId, int32_t *errCode)
131 {
132 std::string surfaceId_s = std::string(surfaceId);
133 Size size = {profile.width, profile.height};
134 Profile c_Profile(CameraFormat(profile.format), size);
135
136 *errCode = CJPreviewOutput::CreatePreviewOutput(c_Profile, surfaceId_s);
137 if (*errCode == CameraError::CAMERA_SERVICE_ERROR) {
138 return -1;
139 }
140
141 auto previewOutputImpl = FFIData::Create<CJPreviewOutput>();
142 if (previewOutputImpl == nullptr) {
143 *errCode = CameraError::CAMERA_SERVICE_ERROR;
144 return -1;
145 }
146 *errCode = CameraError::NO_ERROR;
147 return previewOutputImpl->GetID();
148 }
149
FfiCameraManagerCreatePreviewOutputWithoutProfile(const char * surfaceId,int32_t * errCode)150 int64_t FfiCameraManagerCreatePreviewOutputWithoutProfile(const char *surfaceId, int32_t *errCode)
151 {
152 std::string surfaceId_s = std::string(surfaceId);
153 *errCode = CJPreviewOutput::CreatePreviewOutputWithoutProfile(surfaceId_s);
154 if (*errCode != CameraError::NO_ERROR) {
155 return -1;
156 }
157
158 auto previewOutputImpl = FFIData::Create<CJPreviewOutput>();
159 if (previewOutputImpl == nullptr) {
160 *errCode = CameraError::CAMERA_SERVICE_ERROR;
161 return -1;
162 }
163 return previewOutputImpl->GetID();
164 }
165
FfiCameraManagerCreatePhotoOutput(int32_t * errCode)166 int64_t FfiCameraManagerCreatePhotoOutput(int32_t *errCode)
167 {
168 *errCode = CJPhotoOutput::CreatePhotoOutput();
169 if (*errCode != CameraError::NO_ERROR) {
170 return -1;
171 }
172
173 auto photoOutputImpl = FFIData::Create<CJPhotoOutput>();
174 if (photoOutputImpl == nullptr) {
175 *errCode = CameraError::CAMERA_SERVICE_ERROR;
176 return -1;
177 }
178 return photoOutputImpl->GetID();
179 }
180
FfiCameraManagerCreatePhotoOutputWithProfile(CJProfile profile,int32_t * errCode)181 int64_t FfiCameraManagerCreatePhotoOutputWithProfile(CJProfile profile, int32_t *errCode)
182 {
183 Size size = {profile.width, profile.height};
184 Profile c_Profile(CameraFormat(profile.format), size);
185
186 *errCode = CJPhotoOutput::CreatePhotoOutputWithProfile(c_Profile);
187 if (*errCode != CameraError::NO_ERROR) {
188 return -1;
189 }
190
191 auto photoOutputImpl = FFIData::Create<CJPhotoOutput>();
192 if (photoOutputImpl == nullptr) {
193 *errCode = CameraError::CAMERA_SERVICE_ERROR;
194 return -1;
195 }
196 return photoOutputImpl->GetID();
197 }
198
FfiCameraManagerCreateVideoOutput(CJVideoProfile profile,char * surfaceId,int32_t * errCode)199 int64_t FfiCameraManagerCreateVideoOutput(CJVideoProfile profile, char *surfaceId, int32_t *errCode)
200 {
201 Size size = {profile.width, profile.height};
202 std::vector<int32_t> framerates = {profile.frameRateRange.min, profile.frameRateRange.max};
203 VideoProfile videoProfile = VideoProfile(CameraFormat(profile.format), size, framerates);
204
205 *errCode = CJVideoOutput::CreateVideoOutput(videoProfile, surfaceId);
206 if (*errCode != CameraError::NO_ERROR) {
207 return -1;
208 }
209
210 auto videoOutputImpl = FFIData::Create<CJVideoOutput>();
211 if (videoOutputImpl == nullptr) {
212 *errCode = CameraError::CAMERA_SERVICE_ERROR;
213 return -1;
214 }
215 return videoOutputImpl->GetID();
216 }
217
FfiCameraManagerCreateVideoOutputWithOutProfile(char * surfaceId,int32_t * errCode)218 int64_t FfiCameraManagerCreateVideoOutputWithOutProfile(char *surfaceId, int32_t *errCode)
219 {
220 *errCode = CJVideoOutput::CreateVideoOutputWithOutProfile(surfaceId);
221 if (*errCode != CameraError::NO_ERROR) {
222 return -1;
223 }
224
225 auto videoOutputImpl = FFIData::Create<CJVideoOutput>();
226 if (videoOutputImpl == nullptr) {
227 *errCode = CameraError::CAMERA_SERVICE_ERROR;
228 return -1;
229 }
230 return videoOutputImpl->GetID();
231 }
232
FfiCameraManagerCreateMetadataOutput(CArrI32 metadataObjectTypes,int32_t * errCode)233 int64_t FfiCameraManagerCreateMetadataOutput(CArrI32 metadataObjectTypes, int32_t *errCode)
234 {
235 std::vector<MetadataObjectType> vec;
236 for (int32_t i = 0; i < metadataObjectTypes.size; i++) {
237 vec.push_back(static_cast<MetadataObjectType>(metadataObjectTypes.head[i]));
238 }
239 *errCode = CJMetadataOutput::CreateMetadataOutput(vec);
240 if (*errCode != CameraError::NO_ERROR) {
241 return -1;
242 }
243
244 auto metadataOutputImpl = FFIData::Create<CJMetadataOutput>();
245 if (metadataOutputImpl == nullptr) {
246 *errCode = CameraError::CAMERA_SERVICE_ERROR;
247 return -1;
248 }
249 return metadataOutputImpl->GetID();
250 }
251
FfiCameraManagerCreateSession(int32_t mode,int32_t * errCode)252 int64_t FfiCameraManagerCreateSession(int32_t mode, int32_t *errCode)
253 {
254 auto cameraSession_ = CJCameraManager::CreateSession(mode);
255 if (cameraSession_ == nullptr) {
256 MEDIA_ERR_LOG("Failed to create Video session instance");
257 *errCode = SERVICE_FATL_ERROR;
258 return -1;
259 }
260 auto session = FFIData::Create<CJSession>(cameraSession_);
261 if (session == nullptr) {
262 *errCode = CameraError::CAMERA_SERVICE_ERROR;
263 return -1;
264 }
265 return session->GetID();
266 }
267
FfiCameraManagerIsTorchSupported()268 bool FfiCameraManagerIsTorchSupported()
269 {
270 return CJCameraManager::IsTorchSupported();
271 }
272
FfiCameraManagerIsTorchModeSupported(int32_t modeType)273 bool FfiCameraManagerIsTorchModeSupported(int32_t modeType)
274 {
275 return CJCameraManager::IsTorchModeSupported(modeType);
276 }
277
FfiCameraManagerGetTorchMode()278 int32_t FfiCameraManagerGetTorchMode()
279 {
280 return CJCameraManager::GetTorchMode();
281 }
282
FfiCameraManagerSetTorchMode(int32_t modeType)283 int32_t FfiCameraManagerSetTorchMode(int32_t modeType)
284 {
285 return CJCameraManager::SetTorchMode(modeType);
286 }
287
FfiCameraManagerOnCameraStatusChanged(int64_t id,int64_t callbackId)288 int32_t FfiCameraManagerOnCameraStatusChanged(int64_t id, int64_t callbackId)
289 {
290 auto cameraManagerImpl = FFIData::GetData<CJCameraManager>(id);
291 if (cameraManagerImpl == nullptr) {
292 return CameraError::CAMERA_SERVICE_ERROR;
293 }
294 cameraManagerImpl->OnCameraStatusChanged(callbackId);
295 return CameraError::NO_ERROR;
296 }
297
FfiCameraManagerOffCameraStatusChanged(int64_t id,int64_t callbackId)298 int32_t FfiCameraManagerOffCameraStatusChanged(int64_t id, int64_t callbackId)
299 {
300 auto cameraManagerImpl = FFIData::GetData<CJCameraManager>(id);
301 if (cameraManagerImpl == nullptr) {
302 return CameraError::CAMERA_SERVICE_ERROR;
303 }
304 cameraManagerImpl->OffCameraStatusChanged(callbackId);
305 return CameraError::NO_ERROR;
306 }
307
FfiCameraManagerOffAllCameraStatusChanged(int64_t id)308 int32_t FfiCameraManagerOffAllCameraStatusChanged(int64_t id)
309 {
310 auto cameraManagerImpl = FFIData::GetData<CJCameraManager>(id);
311 if (cameraManagerImpl == nullptr) {
312 return CameraError::CAMERA_SERVICE_ERROR;
313 }
314 cameraManagerImpl->OffAllCameraStatusChanged();
315 return CameraError::NO_ERROR;
316 }
317
FfiCameraManagerOnFoldStatusChanged(int64_t id,int64_t callbackId)318 int32_t FfiCameraManagerOnFoldStatusChanged(int64_t id, int64_t callbackId)
319 {
320 auto cameraManagerImpl = FFIData::GetData<CJCameraManager>(id);
321 if (cameraManagerImpl == nullptr) {
322 return CameraError::CAMERA_SERVICE_ERROR;
323 }
324 cameraManagerImpl->OnFoldStatusChanged(callbackId);
325 return CameraError::NO_ERROR;
326 }
327
FfiCameraManagerOffFoldStatusChanged(int64_t id,int64_t callbackId)328 int32_t FfiCameraManagerOffFoldStatusChanged(int64_t id, int64_t callbackId)
329 {
330 auto cameraManagerImpl = FFIData::GetData<CJCameraManager>(id);
331 if (cameraManagerImpl == nullptr) {
332 return CameraError::CAMERA_SERVICE_ERROR;
333 }
334 cameraManagerImpl->OffFoldStatusChanged(callbackId);
335 return CameraError::NO_ERROR;
336 }
337
FfiCameraManagerOffAllFoldStatusChanged(int64_t id)338 int32_t FfiCameraManagerOffAllFoldStatusChanged(int64_t id)
339 {
340 auto cameraManagerImpl = FFIData::GetData<CJCameraManager>(id);
341 if (cameraManagerImpl == nullptr) {
342 return CameraError::CAMERA_SERVICE_ERROR;
343 }
344 cameraManagerImpl->OffAllFoldStatusChanged();
345 return CameraError::NO_ERROR;
346 }
347
FfiCameraManagerOnTorchStatusChange(int64_t id,int64_t callbackId)348 int32_t FfiCameraManagerOnTorchStatusChange(int64_t id, int64_t callbackId)
349 {
350 auto cameraManagerImpl = FFIData::GetData<CJCameraManager>(id);
351 if (cameraManagerImpl == nullptr) {
352 return CameraError::CAMERA_SERVICE_ERROR;
353 }
354 cameraManagerImpl->OnTorchStatusChange(callbackId);
355 return CameraError::NO_ERROR;
356 }
357
FfiCameraManagerOffTorchStatusChange(int64_t id,int64_t callbackId)358 int32_t FfiCameraManagerOffTorchStatusChange(int64_t id, int64_t callbackId)
359 {
360 auto cameraManagerImpl = FFIData::GetData<CJCameraManager>(id);
361 if (cameraManagerImpl == nullptr) {
362 return CameraError::CAMERA_SERVICE_ERROR;
363 }
364 cameraManagerImpl->OffTorchStatusChange(callbackId);
365 return CameraError::NO_ERROR;
366 }
367
FfiCameraManagerOffAllTorchStatusChange(int64_t id)368 int32_t FfiCameraManagerOffAllTorchStatusChange(int64_t id)
369 {
370 auto cameraManagerImpl = FFIData::GetData<CJCameraManager>(id);
371 if (cameraManagerImpl == nullptr) {
372 return CameraError::CAMERA_SERVICE_ERROR;
373 }
374 cameraManagerImpl->OffAllTorchStatusChange();
375 return CameraError::NO_ERROR;
376 }
377
FfiCameraInputOpen(int64_t id)378 int32_t FfiCameraInputOpen(int64_t id)
379 {
380 auto instance = FFIData::GetData<CJCameraInput>(id);
381 if (instance == nullptr) {
382 return CameraError::CAMERA_SERVICE_ERROR;
383 }
384 return instance->Open();
385 }
386
FfiCameraInputOpenWithIsEnableSecureCamera(int64_t id,bool isEnableSecureCamera,uint64_t * secureSeqId)387 int32_t FfiCameraInputOpenWithIsEnableSecureCamera(int64_t id, bool isEnableSecureCamera, uint64_t *secureSeqId)
388 {
389 auto instance = FFIData::GetData<CJCameraInput>(id);
390 if (instance == nullptr) {
391 return CameraError::CAMERA_SERVICE_ERROR;
392 }
393 return instance->Open(isEnableSecureCamera, secureSeqId);
394 }
395
FfiCameraInputClose(int64_t id)396 int32_t FfiCameraInputClose(int64_t id)
397 {
398 auto instance = FFIData::GetData<CJCameraInput>(id);
399 if (instance == nullptr) {
400 return CameraError::CAMERA_SERVICE_ERROR;
401 }
402 return instance->Close();
403 }
404
FfiCameraInputOnError(int64_t id,int64_t callbackId)405 int32_t FfiCameraInputOnError(int64_t id, int64_t callbackId)
406 {
407 auto instance = FFIData::GetData<CJCameraInput>(id);
408 if (instance == nullptr) {
409 return CameraError::CAMERA_SERVICE_ERROR;
410 }
411 instance->OnError(callbackId);
412 return CameraError::NO_ERROR;
413 }
414
FfiCameraInputOffError(int64_t id,int64_t callbackId)415 int32_t FfiCameraInputOffError(int64_t id, int64_t callbackId)
416 {
417 auto instance = FFIData::GetData<CJCameraInput>(id);
418 if (instance == nullptr) {
419 return CameraError::CAMERA_SERVICE_ERROR;
420 }
421 instance->OffError(callbackId);
422 return CameraError::NO_ERROR;
423 }
424
FfiCameraInputOffAllError(int64_t id)425 int32_t FfiCameraInputOffAllError(int64_t id)
426 {
427 auto instance = FFIData::GetData<CJCameraInput>(id);
428 if (instance == nullptr) {
429 return CameraError::CAMERA_SERVICE_ERROR;
430 }
431 instance->OffAllError();
432 return CameraError::NO_ERROR;
433 }
434
FfiCameraPreviewOutputGetSupportedFrameRates(int64_t id,int32_t * errCode)435 CArrFrameRateRange FfiCameraPreviewOutputGetSupportedFrameRates(int64_t id, int32_t *errCode)
436 {
437 auto instance = FFIData::GetData<CJPreviewOutput>(id);
438 if (instance == nullptr) {
439 *errCode = CameraError::CAMERA_SERVICE_ERROR;
440 return CArrFrameRateRange{0};
441 }
442 return instance->GetSupportedFrameRates(errCode);
443 }
444
FfiCameraPreviewOutputSetFrameRate(int64_t id,int32_t min,int32_t max)445 int32_t FfiCameraPreviewOutputSetFrameRate(int64_t id, int32_t min, int32_t max)
446 {
447 auto instance = FFIData::GetData<CJPreviewOutput>(id);
448 if (instance == nullptr) {
449 return CameraError::CAMERA_SERVICE_ERROR;
450 }
451 return instance->SetFrameRate(min, max);
452 }
453
FfiCameraPreviewOutputGetActiveFrameRate(int64_t id,int32_t * errCode)454 FrameRateRange FfiCameraPreviewOutputGetActiveFrameRate(int64_t id, int32_t *errCode)
455 {
456 auto instance = FFIData::GetData<CJPreviewOutput>(id);
457 if (instance == nullptr) {
458 *errCode = CameraError::CAMERA_SERVICE_ERROR;
459 return FrameRateRange{0};
460 }
461 return instance->GetActiveFrameRate(errCode);
462 }
463
FfiCameraPreviewOutputGetActiveProfile(int64_t id,int32_t * errCode)464 CJProfile FfiCameraPreviewOutputGetActiveProfile(int64_t id, int32_t *errCode)
465 {
466 auto instance = FFIData::GetData<CJPreviewOutput>(id);
467 if (instance == nullptr) {
468 *errCode = CameraError::CAMERA_SERVICE_ERROR;
469 return CJProfile{0};
470 }
471 return instance->GetActiveProfile(errCode);
472 }
473
FfiCameraPreviewOutputGetPreviewRotation(int64_t id,int32_t value,int32_t * errCode)474 int32_t FfiCameraPreviewOutputGetPreviewRotation(int64_t id, int32_t value, int32_t *errCode)
475 {
476 auto instance = FFIData::GetData<CJPreviewOutput>(id);
477 if (instance == nullptr) {
478 *errCode = CameraError::CAMERA_SERVICE_ERROR;
479 return 0;
480 }
481 return instance->GetPreviewRotation(value, errCode);
482 }
483
FfiCameraPreviewOutputSetPreviewRotation(int64_t id,int32_t imageRotation,bool isDisplayLocked)484 int32_t FfiCameraPreviewOutputSetPreviewRotation(int64_t id, int32_t imageRotation, bool isDisplayLocked)
485 {
486 auto instance = FFIData::GetData<CJPreviewOutput>(id);
487 if (instance == nullptr) {
488 return CameraError::CAMERA_SERVICE_ERROR;
489 }
490 return instance->SetPreviewRotation(imageRotation, isDisplayLocked);
491 }
492
FfiCameraPreviewOutputOnFrameStart(int64_t id,int64_t callbackId)493 int32_t FfiCameraPreviewOutputOnFrameStart(int64_t id, int64_t callbackId)
494 {
495 auto instance = FFIData::GetData<CJPreviewOutput>(id);
496 if (instance == nullptr) {
497 return CameraError::CAMERA_SERVICE_ERROR;
498 }
499 instance->OnFrameStart(callbackId);
500 return CameraError::NO_ERROR;
501 }
502
FfiCameraPreviewOutputOnFrameEnd(int64_t id,int64_t callbackId)503 int32_t FfiCameraPreviewOutputOnFrameEnd(int64_t id, int64_t callbackId)
504 {
505 auto instance = FFIData::GetData<CJPreviewOutput>(id);
506 if (instance == nullptr) {
507 return CameraError::CAMERA_SERVICE_ERROR;
508 }
509 instance->OnFrameEnd(callbackId);
510 return CameraError::NO_ERROR;
511 }
512
FfiCameraPreviewOutputOnError(int64_t id,int64_t callbackId)513 int32_t FfiCameraPreviewOutputOnError(int64_t id, int64_t callbackId)
514 {
515 auto instance = FFIData::GetData<CJPreviewOutput>(id);
516 if (instance == nullptr) {
517 return CameraError::CAMERA_SERVICE_ERROR;
518 }
519 instance->OnError(callbackId);
520 return CameraError::NO_ERROR;
521 }
522
FfiCameraPreviewOutputOffFrameStart(int64_t id,int64_t callbackId)523 int32_t FfiCameraPreviewOutputOffFrameStart(int64_t id, int64_t callbackId)
524 {
525 auto instance = FFIData::GetData<CJPreviewOutput>(id);
526 if (instance == nullptr) {
527 return CameraError::CAMERA_SERVICE_ERROR;
528 }
529 instance->OffFrameStart(callbackId);
530 return CameraError::NO_ERROR;
531 }
532
FfiCameraPreviewOutputOffFrameEnd(int64_t id,int64_t callbackId)533 int32_t FfiCameraPreviewOutputOffFrameEnd(int64_t id, int64_t callbackId)
534 {
535 auto instance = FFIData::GetData<CJPreviewOutput>(id);
536 if (instance == nullptr) {
537 return CameraError::CAMERA_SERVICE_ERROR;
538 }
539 instance->OffFrameEnd(callbackId);
540 return CameraError::NO_ERROR;
541 }
542
FfiCameraPreviewOutputOffError(int64_t id,int64_t callbackId)543 int32_t FfiCameraPreviewOutputOffError(int64_t id, int64_t callbackId)
544 {
545 auto instance = FFIData::GetData<CJPreviewOutput>(id);
546 if (instance == nullptr) {
547 return CameraError::CAMERA_SERVICE_ERROR;
548 }
549 instance->OffError(callbackId);
550 return CameraError::NO_ERROR;
551 }
552
FfiCameraPreviewOutputOffAllFrameStart(int64_t id)553 int32_t FfiCameraPreviewOutputOffAllFrameStart(int64_t id)
554 {
555 auto instance = FFIData::GetData<CJPreviewOutput>(id);
556 if (instance == nullptr) {
557 return CameraError::CAMERA_SERVICE_ERROR;
558 }
559 instance->OffAllFrameStart();
560 return CameraError::NO_ERROR;
561 }
562
FfiCameraPreviewOutputOffAllFrameEnd(int64_t id)563 int32_t FfiCameraPreviewOutputOffAllFrameEnd(int64_t id)
564 {
565 auto instance = FFIData::GetData<CJPreviewOutput>(id);
566 if (instance == nullptr) {
567 return CameraError::CAMERA_SERVICE_ERROR;
568 }
569 instance->OffAllFrameEnd();
570 return CameraError::NO_ERROR;
571 }
572
FfiCameraPreviewOutputOffAllError(int64_t id)573 int32_t FfiCameraPreviewOutputOffAllError(int64_t id)
574 {
575 auto instance = FFIData::GetData<CJPreviewOutput>(id);
576 if (instance == nullptr) {
577 return CameraError::CAMERA_SERVICE_ERROR;
578 }
579 instance->OffAllError();
580 return CameraError::NO_ERROR;
581 }
582
FfiCameraPreviewOutputRelease(int64_t id)583 int32_t FfiCameraPreviewOutputRelease(int64_t id)
584 {
585 auto instance = FFIData::GetData<CJPreviewOutput>(id);
586 if (instance == nullptr) {
587 return CameraError::CAMERA_SERVICE_ERROR;
588 }
589 return instance->Release();
590 }
591
FfiCameraPhotoOutputCapture(int64_t id)592 int32_t FfiCameraPhotoOutputCapture(int64_t id)
593 {
594 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
595 if (photoOutput == nullptr) {
596 return CameraError::CAMERA_SERVICE_ERROR;
597 }
598 return photoOutput->Capture();
599 }
600
FfiCameraPhotoOutputCaptureWithSetting(int64_t id,CJPhotoCaptureSetting setting)601 int32_t FfiCameraPhotoOutputCaptureWithSetting(int64_t id, CJPhotoCaptureSetting setting)
602 {
603 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
604 if (photoOutput == nullptr) {
605 return CameraError::CAMERA_SERVICE_ERROR;
606 }
607 return photoOutput->Capture(setting, false);
608 }
609
FfiCameraPhotoOutputCaptureWithSettingV2(int64_t id,CJPhotoCaptureSetting * setting,bool isLocationNone)610 FFI_EXPORT int32_t FfiCameraPhotoOutputCaptureWithSettingV2(int64_t id, CJPhotoCaptureSetting *setting,
611 bool isLocationNone)
612 {
613 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
614 if (photoOutput == nullptr) {
615 return CameraError::CAMERA_SERVICE_ERROR;
616 }
617 return photoOutput->Capture(*setting, isLocationNone);
618 }
619
FfiCameraPhotoOutputOnCaptureStartWithInfo(int64_t id,int64_t callbackId)620 int32_t FfiCameraPhotoOutputOnCaptureStartWithInfo(int64_t id, int64_t callbackId)
621 {
622 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
623 if (photoOutput == nullptr) {
624 return CameraError::CAMERA_SERVICE_ERROR;
625 }
626 photoOutput->OnCaptureStartWithInfo(callbackId);
627 return CameraError::NO_ERROR;
628 }
629
FfiCameraPhotoOutputOffCaptureStartWithInfo(int64_t id,int64_t callbackId)630 int32_t FfiCameraPhotoOutputOffCaptureStartWithInfo(int64_t id, int64_t callbackId)
631 {
632 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
633 if (photoOutput == nullptr) {
634 return CameraError::CAMERA_SERVICE_ERROR;
635 }
636 photoOutput->OffCaptureStartWithInfo(callbackId);
637 return CameraError::NO_ERROR;
638 }
639
FfiCameraPhotoOutputOffAllCaptureStartWithInfo(int64_t id)640 int32_t FfiCameraPhotoOutputOffAllCaptureStartWithInfo(int64_t id)
641 {
642 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
643 if (photoOutput == nullptr) {
644 return CameraError::CAMERA_SERVICE_ERROR;
645 }
646 photoOutput->OffAllCaptureStartWithInfo();
647 return CameraError::NO_ERROR;
648 }
649
FfiCameraPhotoOutputOnFrameShutter(int64_t id,int64_t callbackId)650 int32_t FfiCameraPhotoOutputOnFrameShutter(int64_t id, int64_t callbackId)
651 {
652 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
653 if (photoOutput == nullptr) {
654 return CameraError::CAMERA_SERVICE_ERROR;
655 }
656 photoOutput->OnFrameShutter(callbackId);
657 return CameraError::NO_ERROR;
658 }
659
FfiCameraPhotoOutputOffFrameShutter(int64_t id,int64_t callbackId)660 int32_t FfiCameraPhotoOutputOffFrameShutter(int64_t id, int64_t callbackId)
661 {
662 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
663 if (photoOutput == nullptr) {
664 return CameraError::CAMERA_SERVICE_ERROR;
665 }
666 photoOutput->OffFrameShutter(callbackId);
667 return CameraError::NO_ERROR;
668 }
669
FfiCameraPhotoOutputOffAllFrameShutter(int64_t id)670 int32_t FfiCameraPhotoOutputOffAllFrameShutter(int64_t id)
671 {
672 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
673 if (photoOutput == nullptr) {
674 return CameraError::CAMERA_SERVICE_ERROR;
675 }
676 photoOutput->OffAllFrameShutter();
677 return CameraError::NO_ERROR;
678 }
679
FfiCameraPhotoOutputOnCaptureEnd(int64_t id,int64_t callbackId)680 int32_t FfiCameraPhotoOutputOnCaptureEnd(int64_t id, int64_t callbackId)
681 {
682 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
683 if (photoOutput == nullptr) {
684 return CameraError::CAMERA_SERVICE_ERROR;
685 }
686 photoOutput->OnCaptureEnd(callbackId);
687 return CameraError::NO_ERROR;
688 }
689
FfiCameraPhotoOutputOffCaptureEnd(int64_t id,int64_t callbackId)690 int32_t FfiCameraPhotoOutputOffCaptureEnd(int64_t id, int64_t callbackId)
691 {
692 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
693 if (photoOutput == nullptr) {
694 return CameraError::CAMERA_SERVICE_ERROR;
695 }
696 photoOutput->OffCaptureEnd(callbackId);
697 return CameraError::NO_ERROR;
698 }
699
FfiCameraPhotoOutputOffAllCaptureEnd(int64_t id)700 int32_t FfiCameraPhotoOutputOffAllCaptureEnd(int64_t id)
701 {
702 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
703 if (photoOutput == nullptr) {
704 return CameraError::CAMERA_SERVICE_ERROR;
705 }
706 photoOutput->OffAllCaptureEnd();
707 return CameraError::NO_ERROR;
708 }
709
FfiCameraPhotoOutputOnFrameShutterEnd(int64_t id,int64_t callbackId)710 int32_t FfiCameraPhotoOutputOnFrameShutterEnd(int64_t id, int64_t callbackId)
711 {
712 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
713 if (photoOutput == nullptr) {
714 return CameraError::CAMERA_SERVICE_ERROR;
715 }
716 photoOutput->OnFrameShutterEnd(callbackId);
717 return CameraError::NO_ERROR;
718 }
719
FfiCameraPhotoOutputOffFrameShutterEnd(int64_t id,int64_t callbackId)720 int32_t FfiCameraPhotoOutputOffFrameShutterEnd(int64_t id, int64_t callbackId)
721 {
722 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
723 if (photoOutput == nullptr) {
724 return CameraError::CAMERA_SERVICE_ERROR;
725 }
726 photoOutput->OffFrameShutterEnd(callbackId);
727 return CameraError::NO_ERROR;
728 }
729
FfiCameraPhotoOutputOffAllFrameShutterEnd(int64_t id)730 int32_t FfiCameraPhotoOutputOffAllFrameShutterEnd(int64_t id)
731 {
732 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
733 if (photoOutput == nullptr) {
734 return CameraError::CAMERA_SERVICE_ERROR;
735 }
736 photoOutput->OffAllFrameShutterEnd();
737 return CameraError::NO_ERROR;
738 }
739
FfiCameraPhotoOutputOnCaptureReady(int64_t id,int64_t callbackId)740 int32_t FfiCameraPhotoOutputOnCaptureReady(int64_t id, int64_t callbackId)
741 {
742 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
743 if (photoOutput == nullptr) {
744 return CameraError::CAMERA_SERVICE_ERROR;
745 }
746 photoOutput->OnCaptureReady(callbackId);
747 return CameraError::NO_ERROR;
748 }
749
FfiCameraPhotoOutputOffCaptureReady(int64_t id,int64_t callbackId)750 int32_t FfiCameraPhotoOutputOffCaptureReady(int64_t id, int64_t callbackId)
751 {
752 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
753 if (photoOutput == nullptr) {
754 return CameraError::CAMERA_SERVICE_ERROR;
755 }
756 photoOutput->OffCaptureReady(callbackId);
757 return CameraError::NO_ERROR;
758 }
759
FfiCameraPhotoOutputOffAllCaptureReady(int64_t id)760 int32_t FfiCameraPhotoOutputOffAllCaptureReady(int64_t id)
761 {
762 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
763 if (photoOutput == nullptr) {
764 return CameraError::CAMERA_SERVICE_ERROR;
765 }
766 photoOutput->OffAllCaptureReady();
767 return CameraError::NO_ERROR;
768 }
769
FfiCameraPhotoOutputOnEstimatedCaptureDuration(int64_t id,int64_t callbackId)770 int32_t FfiCameraPhotoOutputOnEstimatedCaptureDuration(int64_t id, int64_t callbackId)
771 {
772 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
773 if (photoOutput == nullptr) {
774 return CameraError::CAMERA_SERVICE_ERROR;
775 }
776 photoOutput->OnEstimatedCaptureDuration(callbackId);
777 return CameraError::NO_ERROR;
778 }
779
FfiCameraPhotoOutputOffEstimatedCaptureDuration(int64_t id,int64_t callbackId)780 int32_t FfiCameraPhotoOutputOffEstimatedCaptureDuration(int64_t id, int64_t callbackId)
781 {
782 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
783 if (photoOutput == nullptr) {
784 return CameraError::CAMERA_SERVICE_ERROR;
785 }
786 photoOutput->OffEstimatedCaptureDuration(callbackId);
787 return CameraError::NO_ERROR;
788 }
789
FfiCameraPhotoOutputOffAllEstimatedCaptureDuration(int64_t id)790 int32_t FfiCameraPhotoOutputOffAllEstimatedCaptureDuration(int64_t id)
791 {
792 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
793 if (photoOutput == nullptr) {
794 return CameraError::CAMERA_SERVICE_ERROR;
795 }
796 photoOutput->OffAllEstimatedCaptureDuration();
797 return CameraError::NO_ERROR;
798 }
799
FfiCameraPhotoOutputOnError(int64_t id,int64_t callbackId)800 int32_t FfiCameraPhotoOutputOnError(int64_t id, int64_t callbackId)
801 {
802 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
803 if (photoOutput == nullptr) {
804 return CameraError::CAMERA_SERVICE_ERROR;
805 }
806 photoOutput->OnError(callbackId);
807 return CameraError::NO_ERROR;
808 }
809
FfiCameraPhotoOutputOffError(int64_t id,int64_t callbackId)810 int32_t FfiCameraPhotoOutputOffError(int64_t id, int64_t callbackId)
811 {
812 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
813 if (photoOutput == nullptr) {
814 return CameraError::CAMERA_SERVICE_ERROR;
815 }
816 photoOutput->OffError(callbackId);
817 return CameraError::NO_ERROR;
818 }
819
FfiCameraPhotoOutputOffAllError(int64_t id)820 int32_t FfiCameraPhotoOutputOffAllError(int64_t id)
821 {
822 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
823 if (photoOutput == nullptr) {
824 return CameraError::CAMERA_SERVICE_ERROR;
825 }
826 photoOutput->OffAllError();
827 return CameraError::NO_ERROR;
828 }
829
FfiCameraPhotoOutputIsMovingPhotoSupported(int64_t id,int32_t * errCode)830 bool FfiCameraPhotoOutputIsMovingPhotoSupported(int64_t id, int32_t *errCode)
831 {
832 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
833 if (photoOutput == nullptr) {
834 *errCode = CameraError::CAMERA_SERVICE_ERROR;
835 return false;
836 }
837 return photoOutput->IsMovingPhotoSupported(errCode);
838 }
839
FfiCameraPhotoOutputEnableMovingPhoto(int64_t id,bool enabled)840 int32_t FfiCameraPhotoOutputEnableMovingPhoto(int64_t id, bool enabled)
841 {
842 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
843 if (photoOutput == nullptr) {
844 return CameraError::CAMERA_SERVICE_ERROR;
845 }
846 return photoOutput->EnableMovingPhoto(enabled);
847 }
848
FfiCameraPhotoOutputIsMirrorSupported(int64_t id,int32_t * errCode)849 bool FfiCameraPhotoOutputIsMirrorSupported(int64_t id, int32_t *errCode)
850 {
851 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
852 if (photoOutput == nullptr) {
853 *errCode = CameraError::CAMERA_SERVICE_ERROR;
854 return false;
855 }
856 return photoOutput->IsMirrorSupported(errCode);
857 }
858
FfiCameraPhotoOutputEnableMirror(int64_t id,bool isMirror)859 int32_t FfiCameraPhotoOutputEnableMirror(int64_t id, bool isMirror)
860 {
861 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
862 if (photoOutput == nullptr) {
863 return CameraError::CAMERA_SERVICE_ERROR;
864 }
865 return photoOutput->EnableMirror(isMirror);
866 }
867
FfiCameraPhotoOutputSetMovingPhotoVideoCodecType(int64_t id,int32_t codecType)868 int32_t FfiCameraPhotoOutputSetMovingPhotoVideoCodecType(int64_t id, int32_t codecType)
869 {
870 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
871 if (photoOutput == nullptr) {
872 return CameraError::CAMERA_SERVICE_ERROR;
873 }
874 return photoOutput->SetMovingPhotoVideoCodecType(codecType);
875 }
876
FfiCameraPhotoOutputGetActiveProfile(int64_t id,int32_t * errCode)877 CJProfile FfiCameraPhotoOutputGetActiveProfile(int64_t id, int32_t *errCode)
878 {
879 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
880 if (photoOutput == nullptr) {
881 *errCode = CameraError::CAMERA_SERVICE_ERROR;
882 return CJProfile{0};
883 }
884 return photoOutput->GetActiveProfile(errCode);
885 }
886
FfiCameraPhotoOutputGetPhotoRotation(int64_t id,int32_t deviceDegree,int32_t * errCode)887 int32_t FfiCameraPhotoOutputGetPhotoRotation(int64_t id, int32_t deviceDegree, int32_t *errCode)
888 {
889 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
890 if (photoOutput == nullptr) {
891 *errCode = CameraError::CAMERA_SERVICE_ERROR;
892 return -1;
893 }
894 return photoOutput->GetPhotoRotation(deviceDegree, errCode);
895 }
896
FfiCameraPhotoOutputRelease(int64_t id)897 int32_t FfiCameraPhotoOutputRelease(int64_t id)
898 {
899 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
900 if (photoOutput == nullptr) {
901 return CameraError::CAMERA_SERVICE_ERROR;
902 }
903 return photoOutput->Release();
904 }
905
FfiCameraVideoOutputStart(int64_t id)906 int32_t FfiCameraVideoOutputStart(int64_t id)
907 {
908 auto videoOutput = FFIData::GetData<CJVideoOutput>(id);
909 if (videoOutput == nullptr) {
910 return CameraError::CAMERA_SERVICE_ERROR;
911 }
912 return videoOutput->Start();
913 }
914
FfiCameraVideoOutputStop(int64_t id)915 int32_t FfiCameraVideoOutputStop(int64_t id)
916 {
917 auto videoOutput = FFIData::GetData<CJVideoOutput>(id);
918 if (videoOutput == nullptr) {
919 return CameraError::CAMERA_SERVICE_ERROR;
920 }
921 return videoOutput->Stop();
922 }
923
FfiCameraVideoOutputGetSupportedFrameRates(int64_t id,int32_t * errCode)924 CArrFrameRateRange FfiCameraVideoOutputGetSupportedFrameRates(int64_t id, int32_t *errCode)
925 {
926 auto videoOutput = FFIData::GetData<CJVideoOutput>(id);
927 if (videoOutput == nullptr) {
928 *errCode = CameraError::CAMERA_SERVICE_ERROR;
929 return CArrFrameRateRange{0};
930 }
931 return videoOutput->GetSupportedFrameRates(errCode);
932 }
933
FfiCameraVideoOutputSetFrameRate(int64_t id,int32_t minFps,int32_t maxFps)934 int32_t FfiCameraVideoOutputSetFrameRate(int64_t id, int32_t minFps, int32_t maxFps)
935 {
936 auto videoOutput = FFIData::GetData<CJVideoOutput>(id);
937 if (videoOutput == nullptr) {
938 return CameraError::CAMERA_SERVICE_ERROR;
939 }
940 return videoOutput->SetFrameRate(minFps, maxFps);
941 }
942
FfiCameraVideoOutputGetActiveFrameRate(int64_t id,int32_t * errCode)943 FrameRateRange FfiCameraVideoOutputGetActiveFrameRate(int64_t id, int32_t *errCode)
944 {
945 auto videoOutput = FFIData::GetData<CJVideoOutput>(id);
946 if (videoOutput == nullptr) {
947 *errCode = CameraError::CAMERA_SERVICE_ERROR;
948 return FrameRateRange{0};
949 }
950 return videoOutput->GetActiveFrameRate(errCode);
951 }
952
FfiCameraVideoOutputGetActiveProfile(int64_t id,int32_t * errCode)953 CJVideoProfile FfiCameraVideoOutputGetActiveProfile(int64_t id, int32_t *errCode)
954 {
955 auto videoOutput = FFIData::GetData<CJVideoOutput>(id);
956 if (videoOutput == nullptr) {
957 *errCode = CameraError::CAMERA_SERVICE_ERROR;
958 return CJVideoProfile{0};
959 }
960 return videoOutput->GetActiveProfile(errCode);
961 }
962
FfiCameraVideoOutputGetVideoRotation(int64_t id,int32_t imageRotation,int32_t * errCode)963 int32_t FfiCameraVideoOutputGetVideoRotation(int64_t id, int32_t imageRotation, int32_t *errCode)
964 {
965 auto videoOutput = FFIData::GetData<CJVideoOutput>(id);
966 if (videoOutput == nullptr) {
967 *errCode = CameraError::CAMERA_SERVICE_ERROR;
968 return -1;
969 }
970 return videoOutput->GetVideoRotation(imageRotation, errCode);
971 }
972
FfiCameraVideoOutputOnFrameStart(int64_t id,int64_t callbackId)973 int32_t FfiCameraVideoOutputOnFrameStart(int64_t id, int64_t callbackId)
974 {
975 auto videoOutput = FFIData::GetData<CJVideoOutput>(id);
976 if (videoOutput == nullptr) {
977 return CameraError::CAMERA_SERVICE_ERROR;
978 }
979 videoOutput->OnFrameStart(callbackId);
980 return CameraError::NO_ERROR;
981 }
982
FfiCameraVideoOutputOffFrameStart(int64_t id,int64_t callbackId)983 int32_t FfiCameraVideoOutputOffFrameStart(int64_t id, int64_t callbackId)
984 {
985 auto videoOutput = FFIData::GetData<CJVideoOutput>(id);
986 if (videoOutput == nullptr) {
987 return CameraError::CAMERA_SERVICE_ERROR;
988 }
989 videoOutput->OffFrameStart(callbackId);
990 return CameraError::NO_ERROR;
991 }
992
FfiCameraVideoOutputOffAllFrameStart(int64_t id)993 int32_t FfiCameraVideoOutputOffAllFrameStart(int64_t id)
994 {
995 auto videoOutput = FFIData::GetData<CJVideoOutput>(id);
996 if (videoOutput == nullptr) {
997 return CameraError::CAMERA_SERVICE_ERROR;
998 }
999 videoOutput->OffAllFrameStart();
1000 return CameraError::NO_ERROR;
1001 }
1002
FfiCameraVideoOutputOnFrameEnd(int64_t id,int64_t callbackId)1003 int32_t FfiCameraVideoOutputOnFrameEnd(int64_t id, int64_t callbackId)
1004 {
1005 auto videoOutput = FFIData::GetData<CJVideoOutput>(id);
1006 if (videoOutput == nullptr) {
1007 return CameraError::CAMERA_SERVICE_ERROR;
1008 }
1009 videoOutput->OnFrameEnd(callbackId);
1010 return CameraError::NO_ERROR;
1011 }
1012
FfiCameraVideoOutputOffFrameEnd(int64_t id,int64_t callbackId)1013 int32_t FfiCameraVideoOutputOffFrameEnd(int64_t id, int64_t callbackId)
1014 {
1015 auto videoOutput = FFIData::GetData<CJVideoOutput>(id);
1016 if (videoOutput == nullptr) {
1017 return CameraError::CAMERA_SERVICE_ERROR;
1018 }
1019 videoOutput->OffFrameEnd(callbackId);
1020 return CameraError::NO_ERROR;
1021 }
1022
FfiCameraVideoOutputOffAllFrameEnd(int64_t id)1023 int32_t FfiCameraVideoOutputOffAllFrameEnd(int64_t id)
1024 {
1025 auto videoOutput = FFIData::GetData<CJVideoOutput>(id);
1026 if (videoOutput == nullptr) {
1027 return CameraError::CAMERA_SERVICE_ERROR;
1028 }
1029 videoOutput->OffAllFrameEnd();
1030 return CameraError::NO_ERROR;
1031 }
1032
FfiCameraVideoOutputOnError(int64_t id,int64_t callbackId)1033 int32_t FfiCameraVideoOutputOnError(int64_t id, int64_t callbackId)
1034 {
1035 auto videoOutput = FFIData::GetData<CJVideoOutput>(id);
1036 if (videoOutput == nullptr) {
1037 return CameraError::CAMERA_SERVICE_ERROR;
1038 }
1039 videoOutput->OnError(callbackId);
1040 return CameraError::NO_ERROR;
1041 }
1042
FfiCameraVideoOutputOffError(int64_t id,int64_t callbackId)1043 int32_t FfiCameraVideoOutputOffError(int64_t id, int64_t callbackId)
1044 {
1045 auto videoOutput = FFIData::GetData<CJVideoOutput>(id);
1046 if (videoOutput == nullptr) {
1047 return CameraError::CAMERA_SERVICE_ERROR;
1048 }
1049 videoOutput->OffError(callbackId);
1050 return CameraError::NO_ERROR;
1051 }
1052
FfiCameraVideoOutputOffAllError(int64_t id)1053 int32_t FfiCameraVideoOutputOffAllError(int64_t id)
1054 {
1055 auto videoOutput = FFIData::GetData<CJVideoOutput>(id);
1056 if (videoOutput == nullptr) {
1057 return CameraError::CAMERA_SERVICE_ERROR;
1058 }
1059 videoOutput->OffAllError();
1060 return CameraError::NO_ERROR;
1061 }
1062
FfiCameraVideoOutputRelease(int64_t id)1063 int32_t FfiCameraVideoOutputRelease(int64_t id)
1064 {
1065 auto videoOutput = FFIData::GetData<CJVideoOutput>(id);
1066 if (videoOutput == nullptr) {
1067 return CameraError::CAMERA_SERVICE_ERROR;
1068 }
1069 return videoOutput->Release();
1070 }
1071
FfiCameraMetadataOutputStart(int64_t id)1072 int32_t FfiCameraMetadataOutputStart(int64_t id)
1073 {
1074 auto metadataOutput = FFIData::GetData<CJMetadataOutput>(id);
1075 if (metadataOutput == nullptr) {
1076 MEDIA_ERR_LOG("Start Failed!");
1077 return CameraError::CAMERA_SERVICE_ERROR;
1078 }
1079 return metadataOutput->Start();
1080 }
1081
FfiCameraMetadataOutputStop(int64_t id)1082 int32_t FfiCameraMetadataOutputStop(int64_t id)
1083 {
1084 auto metadataOutput = FFIData::GetData<CJMetadataOutput>(id);
1085 if (metadataOutput == nullptr) {
1086 MEDIA_ERR_LOG("Stop Failed!");
1087 return CameraError::CAMERA_SERVICE_ERROR;
1088 }
1089 return metadataOutput->Stop();
1090 }
1091
FfiCameraMetadataOutputOnMetadataObjectsAvailable(int64_t id,int64_t callbackId)1092 int32_t FfiCameraMetadataOutputOnMetadataObjectsAvailable(int64_t id, int64_t callbackId)
1093 {
1094 auto metadataOutput = FFIData::GetData<CJMetadataOutput>(id);
1095 if (metadataOutput == nullptr) {
1096 return CameraError::CAMERA_SERVICE_ERROR;
1097 }
1098 metadataOutput->OnMetadataObjectsAvailable(callbackId);
1099 return CameraError::NO_ERROR;
1100 }
1101
FfiCameraMetadataOutputOffMetadataObjectsAvailable(int64_t id,int64_t callbackId)1102 int32_t FfiCameraMetadataOutputOffMetadataObjectsAvailable(int64_t id, int64_t callbackId)
1103 {
1104 auto metadataOutput = FFIData::GetData<CJMetadataOutput>(id);
1105 if (metadataOutput == nullptr) {
1106 return CameraError::CAMERA_SERVICE_ERROR;
1107 }
1108 metadataOutput->OffMetadataObjectsAvailable(callbackId);
1109 return CameraError::NO_ERROR;
1110 }
1111
FfiCameraMetadataOutputOffAllMetadataObjectsAvailable(int64_t id)1112 int32_t FfiCameraMetadataOutputOffAllMetadataObjectsAvailable(int64_t id)
1113 {
1114 auto metadataOutput = FFIData::GetData<CJMetadataOutput>(id);
1115 if (metadataOutput == nullptr) {
1116 return CameraError::CAMERA_SERVICE_ERROR;
1117 }
1118 metadataOutput->OffAllMetadataObjectsAvailable();
1119 return CameraError::NO_ERROR;
1120 }
1121
FfiCameraMetadataOutputOnError(int64_t id,int64_t callbackId)1122 int32_t FfiCameraMetadataOutputOnError(int64_t id, int64_t callbackId)
1123 {
1124 auto metadataOutput = FFIData::GetData<CJMetadataOutput>(id);
1125 if (metadataOutput == nullptr) {
1126 return CameraError::CAMERA_SERVICE_ERROR;
1127 }
1128 metadataOutput->OnError(callbackId);
1129 return CameraError::NO_ERROR;
1130 }
1131
FfiCameraMetadataOutputOffError(int64_t id,int64_t callbackId)1132 int32_t FfiCameraMetadataOutputOffError(int64_t id, int64_t callbackId)
1133 {
1134 auto metadataOutput = FFIData::GetData<CJMetadataOutput>(id);
1135 if (metadataOutput == nullptr) {
1136 return CameraError::CAMERA_SERVICE_ERROR;
1137 }
1138 metadataOutput->OffError(callbackId);
1139 return CameraError::NO_ERROR;
1140 }
1141
FfiCameraMetadataOutputOffAllError(int64_t id)1142 int32_t FfiCameraMetadataOutputOffAllError(int64_t id)
1143 {
1144 auto metadataOutput = FFIData::GetData<CJMetadataOutput>(id);
1145 if (metadataOutput == nullptr) {
1146 return CameraError::CAMERA_SERVICE_ERROR;
1147 }
1148 metadataOutput->OffAllError();
1149 return CameraError::NO_ERROR;
1150 }
1151
FfiCameraMetadataOutputRelease(int64_t id)1152 int32_t FfiCameraMetadataOutputRelease(int64_t id)
1153 {
1154 auto metadataOutput = FFIData::GetData<CJMetadataOutput>(id);
1155 if (metadataOutput == nullptr) {
1156 return CameraError::CAMERA_SERVICE_ERROR;
1157 }
1158 return metadataOutput->Release();
1159 }
1160
FfiCameraSessionBeginConfig(int64_t id)1161 int32_t FfiCameraSessionBeginConfig(int64_t id)
1162 {
1163 auto instance = FFIData::GetData<CJSession>(id);
1164 if (instance == nullptr) {
1165 return CameraError::CAMERA_SERVICE_ERROR;
1166 }
1167 return instance->BeginConfig();
1168 }
1169
FfiCameraSessionCommitConfig(int64_t id)1170 int32_t FfiCameraSessionCommitConfig(int64_t id)
1171 {
1172 auto instance = FFIData::GetData<CJSession>(id);
1173 if (instance == nullptr) {
1174 return CameraError::CAMERA_SERVICE_ERROR;
1175 }
1176 return instance->CommitConfig();
1177 }
1178
FfiCameraSessionCanAddInput(int64_t id,int64_t cameraInputId,int32_t * errCode)1179 bool FfiCameraSessionCanAddInput(int64_t id, int64_t cameraInputId, int32_t *errCode)
1180 {
1181 auto instance = FFIData::GetData<CJSession>(id);
1182 auto cameraInput = FFIData::GetData<CJCameraInput>(cameraInputId);
1183 if (instance == nullptr || cameraInput == nullptr) {
1184 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1185 return false;
1186 }
1187 return instance->CanAddInput(cameraInput);
1188 }
1189
FfiCameraSessionAddInput(int64_t id,int64_t cameraInputId)1190 int32_t FfiCameraSessionAddInput(int64_t id, int64_t cameraInputId)
1191 {
1192 auto instance = FFIData::GetData<CJSession>(id);
1193 auto cameraInput = FFIData::GetData<CJCameraInput>(cameraInputId);
1194 if (instance == nullptr || cameraInput == nullptr) {
1195 return CameraError::CAMERA_SERVICE_ERROR;
1196 }
1197 return instance->AddInput(cameraInput);
1198 }
1199
FfiCameraSessionRemoveInput(int64_t id,int64_t cameraInputId)1200 int32_t FfiCameraSessionRemoveInput(int64_t id, int64_t cameraInputId)
1201 {
1202 auto instance = FFIData::GetData<CJSession>(id);
1203 auto cameraInput = FFIData::GetData<CJCameraInput>(cameraInputId);
1204 if (instance == nullptr || cameraInput == nullptr) {
1205 return CameraError::CAMERA_SERVICE_ERROR;
1206 }
1207 return instance->RemoveInput(cameraInput);
1208 }
1209
GetCameraOutput(int64_t cameraOutputId,int32_t outputType)1210 static sptr<CameraOutput> GetCameraOutput(int64_t cameraOutputId, int32_t outputType)
1211 {
1212 if (outputType == METADATA_OUTPUT) {
1213 return FFIData::GetData<CJMetadataOutput>(cameraOutputId);
1214 }
1215 if (outputType == PHOTO_OUTPUT) {
1216 return FFIData::GetData<CJPhotoOutput>(cameraOutputId);
1217 }
1218 if (outputType == PREVIEW_OUTPUT) {
1219 return FFIData::GetData<CJPreviewOutput>(cameraOutputId);
1220 }
1221 return FFIData::GetData<CJVideoOutput>(cameraOutputId);
1222 }
1223
FfiCameraSessionCanAddOutput(int64_t id,int64_t cameraOutputId,int32_t outputType,int32_t * errCode)1224 bool FfiCameraSessionCanAddOutput(int64_t id, int64_t cameraOutputId, int32_t outputType, int32_t *errCode)
1225 {
1226 auto instance = FFIData::GetData<CJSession>(id);
1227 auto cameraOutput = GetCameraOutput(cameraOutputId, outputType);
1228 if (instance == nullptr || cameraOutput == nullptr) {
1229 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1230 return false;
1231 }
1232 return instance->CanAddOutput(cameraOutput);
1233 }
1234
FfiCameraSessionAddOutput(int64_t id,int64_t cameraOutputId,int32_t outputType)1235 int32_t FfiCameraSessionAddOutput(int64_t id, int64_t cameraOutputId, int32_t outputType)
1236 {
1237 auto instance = FFIData::GetData<CJSession>(id);
1238 auto cameraOutput = GetCameraOutput(cameraOutputId, outputType);
1239 if (instance == nullptr || cameraOutput == nullptr) {
1240 return CameraError::CAMERA_SERVICE_ERROR;
1241 }
1242 return instance->AddOutput(cameraOutput);
1243 }
1244
FfiCameraSessionRemoveOutput(int64_t id,int64_t cameraOutputId,int32_t outputType)1245 int32_t FfiCameraSessionRemoveOutput(int64_t id, int64_t cameraOutputId, int32_t outputType)
1246 {
1247 auto instance = FFIData::GetData<CJSession>(id);
1248 auto cameraOutput = GetCameraOutput(cameraOutputId, outputType);
1249 if (instance == nullptr || cameraOutput == nullptr) {
1250 return CameraError::CAMERA_SERVICE_ERROR;
1251 }
1252 return instance->RemoveOutput(cameraOutput);
1253 }
1254
FfiCameraSessionStart(int64_t id)1255 int32_t FfiCameraSessionStart(int64_t id)
1256 {
1257 auto instance = FFIData::GetData<CJSession>(id);
1258 if (instance == nullptr) {
1259 return CameraError::CAMERA_SERVICE_ERROR;
1260 }
1261 return instance->Start();
1262 }
1263
FfiCameraSessionStop(int64_t id)1264 int32_t FfiCameraSessionStop(int64_t id)
1265 {
1266 auto instance = FFIData::GetData<CJSession>(id);
1267 if (instance == nullptr) {
1268 return CameraError::CAMERA_SERVICE_ERROR;
1269 }
1270 return instance->Stop();
1271 }
1272
FfiCameraSessionRelease(int64_t id)1273 int32_t FfiCameraSessionRelease(int64_t id)
1274 {
1275 auto instance = FFIData::GetData<CJSession>(id);
1276 if (instance == nullptr) {
1277 return CameraError::CAMERA_SERVICE_ERROR;
1278 }
1279 return instance->Release();
1280 }
1281
FfiCameraSessionCanPreconfig(int64_t id,int32_t preconfigType,int32_t preconfigRatio,int32_t * errCode)1282 FFI_EXPORT bool FfiCameraSessionCanPreconfig(int64_t id, int32_t preconfigType, int32_t preconfigRatio,
1283 int32_t *errCode)
1284 {
1285 auto instance = FFIData::GetData<CJSession>(id);
1286 if (instance == nullptr) {
1287 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1288 return false;
1289 }
1290
1291 bool isSupported = false;
1292 *errCode = instance->CanPreconfig(static_cast<PreconfigType>(preconfigType),
1293 static_cast<ProfileSizeRatio>(preconfigRatio), isSupported);
1294 return isSupported;
1295 }
1296
FfiCameraSessionPreconfig(int64_t id,int32_t preconfigType,int32_t preconfigRatio,int32_t * errCode)1297 FFI_EXPORT void FfiCameraSessionPreconfig(int64_t id, int32_t preconfigType, int32_t preconfigRatio, int32_t *errCode)
1298 {
1299 auto instance = FFIData::GetData<CJSession>(id);
1300 if (instance == nullptr) {
1301 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1302 return;
1303 }
1304
1305 *errCode =
1306 instance->Preconfig(static_cast<PreconfigType>(preconfigType), static_cast<ProfileSizeRatio>(preconfigRatio));
1307 }
1308
FfiCameraSessionAddSecureOutput(int64_t id,int64_t cameraOutputId,int32_t * errCode)1309 FFI_EXPORT void FfiCameraSessionAddSecureOutput(int64_t id, int64_t cameraOutputId, int32_t *errCode)
1310 {
1311 auto instance = FFIData::GetData<CJSession>(id);
1312 if (instance == nullptr) {
1313 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1314 return;
1315 }
1316
1317 auto cameraOutput = FFIData::GetData<CJPreviewOutput>(cameraOutputId);
1318 if (cameraOutput == nullptr) {
1319 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1320 return;
1321 }
1322
1323 *errCode = instance->AddSecureOutput(cameraOutput);
1324 }
1325
FfiCameraOnError(int64_t id,int64_t callbackId,int32_t * errCode)1326 FFI_EXPORT void FfiCameraOnError(int64_t id, int64_t callbackId, int32_t *errCode)
1327 {
1328 auto instance = FFIData::GetData<CJSession>(id);
1329 if (instance == nullptr) {
1330 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1331 return;
1332 }
1333
1334 instance->OnError(callbackId);
1335 *errCode = CameraError::NO_ERROR;
1336 }
1337
FfiCameraOffError(int64_t id,int64_t callbackId,int32_t * errCode)1338 FFI_EXPORT void FfiCameraOffError(int64_t id, int64_t callbackId, int32_t *errCode)
1339 {
1340 auto instance = FFIData::GetData<CJSession>(id);
1341 if (instance == nullptr) {
1342 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1343 return;
1344 }
1345
1346 instance->OffError(callbackId);
1347 *errCode = CameraError::NO_ERROR;
1348 }
1349
FfiCameraOffAllError(int64_t id,int32_t * errCode)1350 FFI_EXPORT void FfiCameraOffAllError(int64_t id, int32_t *errCode)
1351 {
1352 auto instance = FFIData::GetData<CJSession>(id);
1353 if (instance == nullptr) {
1354 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1355 return;
1356 }
1357
1358 instance->OffAllError();
1359 *errCode = CameraError::NO_ERROR;
1360 }
1361
FfiCameraOnFocusStateChange(int64_t id,int64_t callbackId,int32_t * errCode)1362 FFI_EXPORT void FfiCameraOnFocusStateChange(int64_t id, int64_t callbackId, int32_t *errCode)
1363 {
1364 auto instance = FFIData::GetData<CJSession>(id);
1365 if (instance == nullptr) {
1366 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1367 return;
1368 }
1369
1370 instance->OnFocusStateChange(callbackId);
1371 *errCode = CameraError::NO_ERROR;
1372 }
1373
FfiCameraOffFocusStateChange(int64_t id,int64_t callbackId,int32_t * errCode)1374 FFI_EXPORT void FfiCameraOffFocusStateChange(int64_t id, int64_t callbackId, int32_t *errCode)
1375 {
1376 auto instance = FFIData::GetData<CJSession>(id);
1377 if (instance == nullptr) {
1378 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1379 return;
1380 }
1381
1382 instance->OffFocusStateChange(callbackId);
1383 *errCode = CameraError::NO_ERROR;
1384 }
1385
FfiCameraOffAllFocusStateChange(int64_t id,int32_t * errCode)1386 FFI_EXPORT void FfiCameraOffAllFocusStateChange(int64_t id, int32_t *errCode)
1387 {
1388 auto instance = FFIData::GetData<CJSession>(id);
1389 if (instance == nullptr) {
1390 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1391 return;
1392 }
1393
1394 instance->OffAllFocusStateChange();
1395 *errCode = CameraError::NO_ERROR;
1396 }
1397
FfiCameraOnSmoothZoomInfoAvailable(int64_t id,int64_t callbackId,int32_t * errCode)1398 FFI_EXPORT void FfiCameraOnSmoothZoomInfoAvailable(int64_t id, int64_t callbackId, int32_t *errCode)
1399 {
1400 auto instance = FFIData::GetData<CJSession>(id);
1401 if (instance == nullptr) {
1402 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1403 return;
1404 }
1405
1406 instance->OnSmoothZoom(callbackId);
1407 *errCode = CameraError::NO_ERROR;
1408 }
1409
FfiCameraOffSmoothZoomInfoAvailable(int64_t id,int64_t callbackId,int32_t * errCode)1410 FFI_EXPORT void FfiCameraOffSmoothZoomInfoAvailable(int64_t id, int64_t callbackId, int32_t *errCode)
1411 {
1412 auto instance = FFIData::GetData<CJSession>(id);
1413 if (instance == nullptr) {
1414 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1415 return;
1416 }
1417
1418 instance->OffSmoothZoom(callbackId);
1419 *errCode = CameraError::NO_ERROR;
1420 }
1421
FfiCameraOffAllSmoothZoomInfoAvailable(int64_t id,int32_t * errCode)1422 FFI_EXPORT void FfiCameraOffAllSmoothZoomInfoAvailable(int64_t id, int32_t *errCode)
1423 {
1424 auto instance = FFIData::GetData<CJSession>(id);
1425 if (instance == nullptr) {
1426 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1427 return;
1428 }
1429
1430 instance->OffAllSmoothZoom();
1431 *errCode = CameraError::NO_ERROR;
1432 }
1433
FfiCameraAutoExposureIsExposureModeSupported(int64_t id,int32_t aeMode,int32_t * errCode)1434 FFI_EXPORT bool FfiCameraAutoExposureIsExposureModeSupported(int64_t id, int32_t aeMode, int32_t *errCode)
1435 {
1436 auto instance = FFIData::GetData<CJSession>(id);
1437 if (instance == nullptr) {
1438 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1439 return false;
1440 }
1441
1442 bool isSupported = false;
1443 *errCode = instance->IsExposureModeSupported(static_cast<ExposureMode>(aeMode), isSupported);
1444 return isSupported;
1445 }
1446
FfiCameraAutoExposureGetExposureBiasRange(int64_t id,int32_t * errCode)1447 FFI_EXPORT CArrFloat32 FfiCameraAutoExposureGetExposureBiasRange(int64_t id, int32_t *errCode)
1448 {
1449 auto instance = FFIData::GetData<CJSession>(id);
1450 if (instance == nullptr) {
1451 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1452 return CArrFloat32{0, 0};
1453 }
1454
1455 CArrFloat32 cArr = CArrFloat32{0};
1456 *errCode = instance->GetExposureBiasRange(cArr);
1457 return cArr;
1458 }
1459
FfiCameraAutoExposureGetExposureMode(int64_t id,int32_t * errCode)1460 FFI_EXPORT int32_t FfiCameraAutoExposureGetExposureMode(int64_t id, int32_t *errCode)
1461 {
1462 auto instance = FFIData::GetData<CJSession>(id);
1463 if (instance == nullptr) {
1464 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1465 return static_cast<int32_t>(ExposureMode::EXPOSURE_MODE_UNSUPPORTED);
1466 }
1467
1468 ExposureMode aeMode = ExposureMode::EXPOSURE_MODE_UNSUPPORTED;
1469 *errCode = instance->GetExposureMode(aeMode);
1470 return static_cast<int32_t>(aeMode);
1471 }
1472
FfiCameraAutoExposureSetExposureMode(int64_t id,int32_t aeMode,int32_t * errCode)1473 FFI_EXPORT void FfiCameraAutoExposureSetExposureMode(int64_t id, int32_t aeMode, int32_t *errCode)
1474 {
1475 auto instance = FFIData::GetData<CJSession>(id);
1476 if (instance == nullptr) {
1477 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1478 return;
1479 }
1480
1481 *errCode = instance->SetExposureMode(static_cast<ExposureMode>(aeMode));
1482 }
1483
FfiCameraAutoExposureGetMeteringPoint(int64_t id,int32_t * errCode)1484 FFI_EXPORT CameraPoint FfiCameraAutoExposureGetMeteringPoint(int64_t id, int32_t *errCode)
1485 {
1486 auto instance = FFIData::GetData<CJSession>(id);
1487 if (instance == nullptr) {
1488 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1489 return CameraPoint{0, 0};
1490 }
1491
1492 CameraPoint point;
1493 *errCode = instance->GetMeteringPoint(point);
1494 return point;
1495 }
1496
FfiCameraAutoExposureSetMeteringPoint(int64_t id,CameraPoint point,int32_t * errCode)1497 FFI_EXPORT void FfiCameraAutoExposureSetMeteringPoint(int64_t id, CameraPoint point, int32_t *errCode)
1498 {
1499 auto instance = FFIData::GetData<CJSession>(id);
1500 if (instance == nullptr) {
1501 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1502 return;
1503 }
1504
1505 *errCode = instance->SetMeteringPoint(point);
1506 }
1507
FfiCameraAutoExposureSetExposureBias(int64_t id,float exposureBias,int32_t * errCode)1508 FFI_EXPORT void FfiCameraAutoExposureSetExposureBias(int64_t id, float exposureBias, int32_t *errCode)
1509 {
1510 auto instance = FFIData::GetData<CJSession>(id);
1511 if (instance == nullptr) {
1512 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1513 return;
1514 }
1515
1516 *errCode = instance->SetExposureBias(exposureBias);
1517 }
1518
FfiCameraAutoExposureGetExposureValue(int64_t id,int32_t * errCode)1519 FFI_EXPORT float FfiCameraAutoExposureGetExposureValue(int64_t id, int32_t *errCode)
1520 {
1521 auto instance = FFIData::GetData<CJSession>(id);
1522 if (instance == nullptr) {
1523 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1524 return 0;
1525 }
1526
1527 float exposureValue = 0;
1528 *errCode = instance->GetExposureValue(exposureValue);
1529 return exposureValue;
1530 }
1531
FfiCameraColorManagementGetSupportedColorSpaces(int64_t id,int32_t * errCode)1532 FFI_EXPORT CArrI32 FfiCameraColorManagementGetSupportedColorSpaces(int64_t id, int32_t *errCode)
1533 {
1534 auto instance = FFIData::GetData<CJSession>(id);
1535 if (instance == nullptr) {
1536 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1537 return CArrI32{0, 0};
1538 }
1539
1540 CArrI32 cArr = CArrI32{0};
1541 instance->GetSupportedColorSpaces(cArr);
1542 *errCode = CameraError::NO_ERROR;
1543 return cArr;
1544 }
1545
FfiCameraColorManagementSetColorSpace(int64_t id,int32_t colorSpace,int32_t * errCode)1546 FFI_EXPORT void FfiCameraColorManagementSetColorSpace(int64_t id, int32_t colorSpace, int32_t *errCode)
1547 {
1548 auto instance = FFIData::GetData<CJSession>(id);
1549 if (instance == nullptr) {
1550 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1551 return;
1552 }
1553
1554 *errCode = instance->SetColorSpace(static_cast<ColorSpace>(colorSpace));
1555 }
1556
FfiCameraColorManagementGetActiveColorSpace(int64_t id,int32_t * errCode)1557 FFI_EXPORT int32_t FfiCameraColorManagementGetActiveColorSpace(int64_t id, int32_t *errCode)
1558 {
1559 auto instance = FFIData::GetData<CJSession>(id);
1560 if (instance == nullptr) {
1561 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1562 return static_cast<int32_t>(ColorSpace::COLOR_SPACE_UNKNOWN);
1563 }
1564
1565 ColorSpace colorSpace = ColorSpace::COLOR_SPACE_UNKNOWN;
1566 *errCode = instance->GetActiveColorSpace(colorSpace);
1567 return static_cast<int32_t>(colorSpace);
1568 }
1569
FfiCameraFlashQueryFlashModeSupported(int64_t id,int32_t flashMode,int32_t * errCode)1570 FFI_EXPORT bool FfiCameraFlashQueryFlashModeSupported(int64_t id, int32_t flashMode, int32_t *errCode)
1571 {
1572 auto instance = FFIData::GetData<CJSession>(id);
1573 if (instance == nullptr) {
1574 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1575 return false;
1576 }
1577
1578 bool isSupported = false;
1579 *errCode = instance->IsFlashModeSupported(static_cast<FlashMode>(flashMode), isSupported);
1580 return isSupported;
1581 }
1582
FfiCameraFlashQueryHasFlash(int64_t id,int32_t * errCode)1583 FFI_EXPORT bool FfiCameraFlashQueryHasFlash(int64_t id, int32_t *errCode)
1584 {
1585 auto instance = FFIData::GetData<CJSession>(id);
1586 if (instance == nullptr) {
1587 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1588 return false;
1589 }
1590
1591 bool hasFlash = false;
1592 *errCode = instance->HasFlash(hasFlash);
1593 return hasFlash;
1594 }
1595
FfiCameraFlashGetFlashMode(int64_t id,int32_t * errCode)1596 FFI_EXPORT int32_t FfiCameraFlashGetFlashMode(int64_t id, int32_t *errCode)
1597 {
1598 auto instance = FFIData::GetData<CJSession>(id);
1599 if (instance == nullptr) {
1600 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1601 return 0;
1602 }
1603
1604 FlashMode flashMode = FlashMode::FLASH_MODE_CLOSE;
1605 *errCode = instance->GetFlashMode(flashMode);
1606 return static_cast<int32_t>(flashMode);
1607 }
1608
FfiCameraFlashSetFlashMode(int64_t id,int32_t flashMode,int32_t * errCode)1609 FFI_EXPORT void FfiCameraFlashSetFlashMode(int64_t id, int32_t flashMode, int32_t *errCode)
1610 {
1611 auto instance = FFIData::GetData<CJSession>(id);
1612 if (instance == nullptr) {
1613 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1614 return;
1615 }
1616
1617 *errCode = instance->SetFlashMode(static_cast<FlashMode>(flashMode));
1618 }
1619
FfiCameraFocusIsFocusModeSupported(int64_t id,int32_t afMode,int32_t * errCode)1620 FFI_EXPORT bool FfiCameraFocusIsFocusModeSupported(int64_t id, int32_t afMode, int32_t *errCode)
1621 {
1622 auto instance = FFIData::GetData<CJSession>(id);
1623 if (instance == nullptr) {
1624 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1625 return false;
1626 }
1627
1628 bool isSupported = false;
1629 *errCode = instance->IsFocusModeSupported(static_cast<FocusMode>(afMode), isSupported);
1630 return isSupported;
1631 }
1632
FfiCameraFocusSetFocusMode(int64_t id,int32_t afMode,int32_t * errCode)1633 FFI_EXPORT void FfiCameraFocusSetFocusMode(int64_t id, int32_t afMode, int32_t *errCode)
1634 {
1635 auto instance = FFIData::GetData<CJSession>(id);
1636 if (instance == nullptr) {
1637 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1638 return;
1639 }
1640
1641 *errCode = instance->SetFocusMode(static_cast<FocusMode>(afMode));
1642 }
1643
FfiCameraFocusGetFocusMode(int64_t id,int32_t * errCode)1644 FFI_EXPORT int32_t FfiCameraFocusGetFocusMode(int64_t id, int32_t *errCode)
1645 {
1646 auto instance = FFIData::GetData<CJSession>(id);
1647 if (instance == nullptr) {
1648 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1649 return 0;
1650 }
1651
1652 FocusMode afMode = FocusMode::FOCUS_MODE_MANUAL;
1653 *errCode = instance->GetFocusMode(afMode);
1654 return static_cast<int32_t>(afMode);
1655 }
1656
FfiCameraFocusSetFocusPoint(int64_t id,CameraPoint point,int32_t * errCode)1657 FFI_EXPORT void FfiCameraFocusSetFocusPoint(int64_t id, CameraPoint point, int32_t *errCode)
1658 {
1659 auto instance = FFIData::GetData<CJSession>(id);
1660 if (instance == nullptr) {
1661 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1662 return;
1663 }
1664
1665 *errCode = instance->SetFocusPoint(point);
1666 }
1667
FfiCameraFocusGetFocusPoint(int64_t id,int32_t * errCode)1668 FFI_EXPORT CameraPoint FfiCameraFocusGetFocusPoint(int64_t id, int32_t *errCode)
1669 {
1670 auto instance = FFIData::GetData<CJSession>(id);
1671 if (instance == nullptr) {
1672 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1673 return CameraPoint{0, 0};
1674 }
1675
1676 CameraPoint point;
1677 *errCode = instance->GetFocusPoint(point);
1678 return point;
1679 }
1680
FfiCameraFocusGetFocalLength(int64_t id,int32_t * errCode)1681 FFI_EXPORT float FfiCameraFocusGetFocalLength(int64_t id, int32_t *errCode)
1682 {
1683 auto instance = FFIData::GetData<CJSession>(id);
1684 if (instance == nullptr) {
1685 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1686 return 0;
1687 }
1688
1689 float focalLength = 0;
1690 *errCode = instance->GetFocalLength(focalLength);
1691 return focalLength;
1692 }
1693
FfiCameraStabilizationIsVideoStabilizationModeSupported(int64_t id,int32_t vsMode,int32_t * errCode)1694 FFI_EXPORT bool FfiCameraStabilizationIsVideoStabilizationModeSupported(int64_t id, int32_t vsMode, int32_t *errCode)
1695 {
1696 auto instance = FFIData::GetData<CJSession>(id);
1697 if (instance == nullptr) {
1698 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1699 return false;
1700 }
1701
1702 bool isSupported = false;
1703 *errCode = instance->IsVideoStabilizationModeSupported(static_cast<VideoStabilizationMode>(vsMode), isSupported);
1704 return isSupported;
1705 }
1706
FfiCameraStabilizationGetActiveVideoStabilizationMode(int64_t id,int32_t * errCode)1707 FFI_EXPORT int32_t FfiCameraStabilizationGetActiveVideoStabilizationMode(int64_t id, int32_t *errCode)
1708 {
1709 auto instance = FFIData::GetData<CJSession>(id);
1710 if (instance == nullptr) {
1711 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1712 return 0;
1713 }
1714
1715 VideoStabilizationMode vsMode = VideoStabilizationMode::OFF;
1716 *errCode = instance->GetActiveVideoStabilizationMode(vsMode);
1717 return static_cast<int32_t>(vsMode);
1718 }
1719
FfiCameraStabilizationSetVideoStabilizationMode(int64_t id,int32_t vsMode,int32_t * errCode)1720 FFI_EXPORT void FfiCameraStabilizationSetVideoStabilizationMode(int64_t id, int32_t vsMode, int32_t *errCode)
1721 {
1722 auto instance = FFIData::GetData<CJSession>(id);
1723 if (instance == nullptr) {
1724 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1725 return;
1726 }
1727
1728 *errCode = instance->SetVideoStabilizationMode(static_cast<VideoStabilizationMode>(vsMode));
1729 }
1730
FfiCameraZoomGetZoomRatioRange(int64_t id,int32_t * errCode)1731 FFI_EXPORT CArrFloat32 FfiCameraZoomGetZoomRatioRange(int64_t id, int32_t *errCode)
1732 {
1733 auto instance = FFIData::GetData<CJSession>(id);
1734 if (instance == nullptr) {
1735 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1736 return CArrFloat32{0, 0};
1737 }
1738
1739 CArrFloat32 cArr = CArrFloat32{0};
1740 *errCode = instance->GetZoomRatioRange(cArr);
1741 return cArr;
1742 }
1743
FfiCameraZoomSetZoomRatio(int64_t id,float zoomRatio,int32_t * errCode)1744 FFI_EXPORT void FfiCameraZoomSetZoomRatio(int64_t id, float zoomRatio, int32_t *errCode)
1745 {
1746 auto instance = FFIData::GetData<CJSession>(id);
1747 if (instance == nullptr) {
1748 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1749 return;
1750 }
1751
1752 *errCode = instance->SetZoomRatio(zoomRatio);
1753 }
1754
FfiCameraZoomGetZoomRatio(int64_t id,int32_t * errCode)1755 FFI_EXPORT float FfiCameraZoomGetZoomRatio(int64_t id, int32_t *errCode)
1756 {
1757 auto instance = FFIData::GetData<CJSession>(id);
1758 if (instance == nullptr) {
1759 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1760 return 0;
1761 }
1762
1763 float zoomRatio = 0;
1764 *errCode = instance->GetZoomRatio(zoomRatio);
1765 return zoomRatio;
1766 }
1767
FfiCameraZoomSetSmoothZoom(int64_t id,float targetRatio,int32_t mode,int32_t * errCode)1768 FFI_EXPORT void FfiCameraZoomSetSmoothZoom(int64_t id, float targetRatio, int32_t mode, int32_t *errCode)
1769 {
1770 auto instance = FFIData::GetData<CJSession>(id);
1771 if (instance == nullptr) {
1772 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1773 return;
1774 }
1775
1776 *errCode = instance->SetSmoothZoom(targetRatio, static_cast<uint32_t>(mode));
1777 }
1778
1779 } // extern "C"
1780 } // namespace CameraStandard
1781 } // namespace OHOS