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);
608 }
609
FfiCameraPhotoOutputOnCaptureStartWithInfo(int64_t id,int64_t callbackId)610 int32_t FfiCameraPhotoOutputOnCaptureStartWithInfo(int64_t id, int64_t callbackId)
611 {
612 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
613 if (photoOutput == nullptr) {
614 return CameraError::CAMERA_SERVICE_ERROR;
615 }
616 photoOutput->OnCaptureStartWithInfo(callbackId);
617 return CameraError::NO_ERROR;
618 }
619
FfiCameraPhotoOutputOffCaptureStartWithInfo(int64_t id,int64_t callbackId)620 int32_t FfiCameraPhotoOutputOffCaptureStartWithInfo(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->OffCaptureStartWithInfo(callbackId);
627 return CameraError::NO_ERROR;
628 }
629
FfiCameraPhotoOutputOffAllCaptureStartWithInfo(int64_t id)630 int32_t FfiCameraPhotoOutputOffAllCaptureStartWithInfo(int64_t id)
631 {
632 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
633 if (photoOutput == nullptr) {
634 return CameraError::CAMERA_SERVICE_ERROR;
635 }
636 photoOutput->OffAllCaptureStartWithInfo();
637 return CameraError::NO_ERROR;
638 }
639
FfiCameraPhotoOutputOnFrameShutter(int64_t id,int64_t callbackId)640 int32_t FfiCameraPhotoOutputOnFrameShutter(int64_t id, int64_t callbackId)
641 {
642 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
643 if (photoOutput == nullptr) {
644 return CameraError::CAMERA_SERVICE_ERROR;
645 }
646 photoOutput->OnFrameShutter(callbackId);
647 return CameraError::NO_ERROR;
648 }
649
FfiCameraPhotoOutputOffFrameShutter(int64_t id,int64_t callbackId)650 int32_t FfiCameraPhotoOutputOffFrameShutter(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->OffFrameShutter(callbackId);
657 return CameraError::NO_ERROR;
658 }
659
FfiCameraPhotoOutputOffAllFrameShutter(int64_t id)660 int32_t FfiCameraPhotoOutputOffAllFrameShutter(int64_t id)
661 {
662 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
663 if (photoOutput == nullptr) {
664 return CameraError::CAMERA_SERVICE_ERROR;
665 }
666 photoOutput->OffAllFrameShutter();
667 return CameraError::NO_ERROR;
668 }
669
FfiCameraPhotoOutputOnCaptureEnd(int64_t id,int64_t callbackId)670 int32_t FfiCameraPhotoOutputOnCaptureEnd(int64_t id, int64_t callbackId)
671 {
672 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
673 if (photoOutput == nullptr) {
674 return CameraError::CAMERA_SERVICE_ERROR;
675 }
676 photoOutput->OnCaptureEnd(callbackId);
677 return CameraError::NO_ERROR;
678 }
679
FfiCameraPhotoOutputOffCaptureEnd(int64_t id,int64_t callbackId)680 int32_t FfiCameraPhotoOutputOffCaptureEnd(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->OffCaptureEnd(callbackId);
687 return CameraError::NO_ERROR;
688 }
689
FfiCameraPhotoOutputOffAllCaptureEnd(int64_t id)690 int32_t FfiCameraPhotoOutputOffAllCaptureEnd(int64_t id)
691 {
692 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
693 if (photoOutput == nullptr) {
694 return CameraError::CAMERA_SERVICE_ERROR;
695 }
696 photoOutput->OffAllCaptureEnd();
697 return CameraError::NO_ERROR;
698 }
699
FfiCameraPhotoOutputOnFrameShutterEnd(int64_t id,int64_t callbackId)700 int32_t FfiCameraPhotoOutputOnFrameShutterEnd(int64_t id, int64_t callbackId)
701 {
702 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
703 if (photoOutput == nullptr) {
704 return CameraError::CAMERA_SERVICE_ERROR;
705 }
706 photoOutput->OnFrameShutterEnd(callbackId);
707 return CameraError::NO_ERROR;
708 }
709
FfiCameraPhotoOutputOffFrameShutterEnd(int64_t id,int64_t callbackId)710 int32_t FfiCameraPhotoOutputOffFrameShutterEnd(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->OffFrameShutterEnd(callbackId);
717 return CameraError::NO_ERROR;
718 }
719
FfiCameraPhotoOutputOffAllFrameShutterEnd(int64_t id)720 int32_t FfiCameraPhotoOutputOffAllFrameShutterEnd(int64_t id)
721 {
722 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
723 if (photoOutput == nullptr) {
724 return CameraError::CAMERA_SERVICE_ERROR;
725 }
726 photoOutput->OffAllFrameShutterEnd();
727 return CameraError::NO_ERROR;
728 }
729
FfiCameraPhotoOutputOnCaptureReady(int64_t id,int64_t callbackId)730 int32_t FfiCameraPhotoOutputOnCaptureReady(int64_t id, int64_t callbackId)
731 {
732 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
733 if (photoOutput == nullptr) {
734 return CameraError::CAMERA_SERVICE_ERROR;
735 }
736 photoOutput->OnCaptureReady(callbackId);
737 return CameraError::NO_ERROR;
738 }
739
FfiCameraPhotoOutputOffCaptureReady(int64_t id,int64_t callbackId)740 int32_t FfiCameraPhotoOutputOffCaptureReady(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->OffCaptureReady(callbackId);
747 return CameraError::NO_ERROR;
748 }
749
FfiCameraPhotoOutputOffAllCaptureReady(int64_t id)750 int32_t FfiCameraPhotoOutputOffAllCaptureReady(int64_t id)
751 {
752 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
753 if (photoOutput == nullptr) {
754 return CameraError::CAMERA_SERVICE_ERROR;
755 }
756 photoOutput->OffAllCaptureReady();
757 return CameraError::NO_ERROR;
758 }
759
FfiCameraPhotoOutputOnEstimatedCaptureDuration(int64_t id,int64_t callbackId)760 int32_t FfiCameraPhotoOutputOnEstimatedCaptureDuration(int64_t id, int64_t callbackId)
761 {
762 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
763 if (photoOutput == nullptr) {
764 return CameraError::CAMERA_SERVICE_ERROR;
765 }
766 photoOutput->OnEstimatedCaptureDuration(callbackId);
767 return CameraError::NO_ERROR;
768 }
769
FfiCameraPhotoOutputOffEstimatedCaptureDuration(int64_t id,int64_t callbackId)770 int32_t FfiCameraPhotoOutputOffEstimatedCaptureDuration(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->OffEstimatedCaptureDuration(callbackId);
777 return CameraError::NO_ERROR;
778 }
779
FfiCameraPhotoOutputOffAllEstimatedCaptureDuration(int64_t id)780 int32_t FfiCameraPhotoOutputOffAllEstimatedCaptureDuration(int64_t id)
781 {
782 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
783 if (photoOutput == nullptr) {
784 return CameraError::CAMERA_SERVICE_ERROR;
785 }
786 photoOutput->OffAllEstimatedCaptureDuration();
787 return CameraError::NO_ERROR;
788 }
789
FfiCameraPhotoOutputOnError(int64_t id,int64_t callbackId)790 int32_t FfiCameraPhotoOutputOnError(int64_t id, int64_t callbackId)
791 {
792 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
793 if (photoOutput == nullptr) {
794 return CameraError::CAMERA_SERVICE_ERROR;
795 }
796 photoOutput->OnError(callbackId);
797 return CameraError::NO_ERROR;
798 }
799
FfiCameraPhotoOutputOffError(int64_t id,int64_t callbackId)800 int32_t FfiCameraPhotoOutputOffError(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->OffError(callbackId);
807 return CameraError::NO_ERROR;
808 }
809
FfiCameraPhotoOutputOffAllError(int64_t id)810 int32_t FfiCameraPhotoOutputOffAllError(int64_t id)
811 {
812 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
813 if (photoOutput == nullptr) {
814 return CameraError::CAMERA_SERVICE_ERROR;
815 }
816 photoOutput->OffAllError();
817 return CameraError::NO_ERROR;
818 }
819
FfiCameraPhotoOutputIsMovingPhotoSupported(int64_t id,int32_t * errCode)820 bool FfiCameraPhotoOutputIsMovingPhotoSupported(int64_t id, int32_t *errCode)
821 {
822 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
823 if (photoOutput == nullptr) {
824 *errCode = CameraError::CAMERA_SERVICE_ERROR;
825 return false;
826 }
827 return photoOutput->IsMovingPhotoSupported(errCode);
828 }
829
FfiCameraPhotoOutputEnableMovingPhoto(int64_t id,bool enabled)830 int32_t FfiCameraPhotoOutputEnableMovingPhoto(int64_t id, bool enabled)
831 {
832 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
833 if (photoOutput == nullptr) {
834 return CameraError::CAMERA_SERVICE_ERROR;
835 }
836 return photoOutput->EnableMovingPhoto(enabled);
837 }
838
FfiCameraPhotoOutputIsMirrorSupported(int64_t id,int32_t * errCode)839 bool FfiCameraPhotoOutputIsMirrorSupported(int64_t id, int32_t *errCode)
840 {
841 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
842 if (photoOutput == nullptr) {
843 *errCode = CameraError::CAMERA_SERVICE_ERROR;
844 return false;
845 }
846 return photoOutput->IsMirrorSupported(errCode);
847 }
848
FfiCameraPhotoOutputEnableMirror(int64_t id,bool isMirror)849 int32_t FfiCameraPhotoOutputEnableMirror(int64_t id, bool isMirror)
850 {
851 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
852 if (photoOutput == nullptr) {
853 return CameraError::CAMERA_SERVICE_ERROR;
854 }
855 return photoOutput->EnableMirror(isMirror);
856 }
857
FfiCameraPhotoOutputSetMovingPhotoVideoCodecType(int64_t id,int32_t codecType)858 int32_t FfiCameraPhotoOutputSetMovingPhotoVideoCodecType(int64_t id, int32_t codecType)
859 {
860 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
861 if (photoOutput == nullptr) {
862 return CameraError::CAMERA_SERVICE_ERROR;
863 }
864 return photoOutput->SetMovingPhotoVideoCodecType(codecType);
865 }
866
FfiCameraPhotoOutputGetActiveProfile(int64_t id,int32_t * errCode)867 CJProfile FfiCameraPhotoOutputGetActiveProfile(int64_t id, int32_t *errCode)
868 {
869 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
870 if (photoOutput == nullptr) {
871 *errCode = CameraError::CAMERA_SERVICE_ERROR;
872 return CJProfile{0};
873 }
874 return photoOutput->GetActiveProfile(errCode);
875 }
876
FfiCameraPhotoOutputGetPhotoRotation(int64_t id,int32_t deviceDegree,int32_t * errCode)877 int32_t FfiCameraPhotoOutputGetPhotoRotation(int64_t id, int32_t deviceDegree, int32_t *errCode)
878 {
879 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
880 if (photoOutput == nullptr) {
881 *errCode = CameraError::CAMERA_SERVICE_ERROR;
882 return -1;
883 }
884 return photoOutput->GetPhotoRotation(deviceDegree, errCode);
885 }
886
FfiCameraPhotoOutputRelease(int64_t id)887 int32_t FfiCameraPhotoOutputRelease(int64_t id)
888 {
889 auto photoOutput = FFIData::GetData<CJPhotoOutput>(id);
890 if (photoOutput == nullptr) {
891 return CameraError::CAMERA_SERVICE_ERROR;
892 }
893 return photoOutput->Release();
894 }
895
FfiCameraVideoOutputStart(int64_t id)896 int32_t FfiCameraVideoOutputStart(int64_t id)
897 {
898 auto videoOutput = FFIData::GetData<CJVideoOutput>(id);
899 if (videoOutput == nullptr) {
900 return CameraError::CAMERA_SERVICE_ERROR;
901 }
902 return videoOutput->Start();
903 }
904
FfiCameraVideoOutputStop(int64_t id)905 int32_t FfiCameraVideoOutputStop(int64_t id)
906 {
907 auto videoOutput = FFIData::GetData<CJVideoOutput>(id);
908 if (videoOutput == nullptr) {
909 return CameraError::CAMERA_SERVICE_ERROR;
910 }
911 return videoOutput->Stop();
912 }
913
FfiCameraVideoOutputGetSupportedFrameRates(int64_t id,int32_t * errCode)914 CArrFrameRateRange FfiCameraVideoOutputGetSupportedFrameRates(int64_t id, int32_t *errCode)
915 {
916 auto videoOutput = FFIData::GetData<CJVideoOutput>(id);
917 if (videoOutput == nullptr) {
918 *errCode = CameraError::CAMERA_SERVICE_ERROR;
919 return CArrFrameRateRange{0};
920 }
921 return videoOutput->GetSupportedFrameRates(errCode);
922 }
923
FfiCameraVideoOutputSetFrameRate(int64_t id,int32_t minFps,int32_t maxFps)924 int32_t FfiCameraVideoOutputSetFrameRate(int64_t id, int32_t minFps, int32_t maxFps)
925 {
926 auto videoOutput = FFIData::GetData<CJVideoOutput>(id);
927 if (videoOutput == nullptr) {
928 return CameraError::CAMERA_SERVICE_ERROR;
929 }
930 return videoOutput->SetFrameRate(minFps, maxFps);
931 }
932
FfiCameraVideoOutputGetActiveFrameRate(int64_t id,int32_t * errCode)933 FrameRateRange FfiCameraVideoOutputGetActiveFrameRate(int64_t id, int32_t *errCode)
934 {
935 auto videoOutput = FFIData::GetData<CJVideoOutput>(id);
936 if (videoOutput == nullptr) {
937 *errCode = CameraError::CAMERA_SERVICE_ERROR;
938 return FrameRateRange{0};
939 }
940 return videoOutput->GetActiveFrameRate(errCode);
941 }
942
FfiCameraVideoOutputGetActiveProfile(int64_t id,int32_t * errCode)943 CJVideoProfile FfiCameraVideoOutputGetActiveProfile(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 CJVideoProfile{0};
949 }
950 return videoOutput->GetActiveProfile(errCode);
951 }
952
FfiCameraVideoOutputGetVideoRotation(int64_t id,int32_t imageRotation,int32_t * errCode)953 int32_t FfiCameraVideoOutputGetVideoRotation(int64_t id, int32_t imageRotation, int32_t *errCode)
954 {
955 auto videoOutput = FFIData::GetData<CJVideoOutput>(id);
956 if (videoOutput == nullptr) {
957 *errCode = CameraError::CAMERA_SERVICE_ERROR;
958 return -1;
959 }
960 return videoOutput->GetVideoRotation(imageRotation, errCode);
961 }
962
FfiCameraVideoOutputOnFrameStart(int64_t id,int64_t callbackId)963 int32_t FfiCameraVideoOutputOnFrameStart(int64_t id, int64_t callbackId)
964 {
965 auto videoOutput = FFIData::GetData<CJVideoOutput>(id);
966 if (videoOutput == nullptr) {
967 return CameraError::CAMERA_SERVICE_ERROR;
968 }
969 videoOutput->OnFrameStart(callbackId);
970 return CameraError::NO_ERROR;
971 }
972
FfiCameraVideoOutputOffFrameStart(int64_t id,int64_t callbackId)973 int32_t FfiCameraVideoOutputOffFrameStart(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->OffFrameStart(callbackId);
980 return CameraError::NO_ERROR;
981 }
982
FfiCameraVideoOutputOffAllFrameStart(int64_t id)983 int32_t FfiCameraVideoOutputOffAllFrameStart(int64_t id)
984 {
985 auto videoOutput = FFIData::GetData<CJVideoOutput>(id);
986 if (videoOutput == nullptr) {
987 return CameraError::CAMERA_SERVICE_ERROR;
988 }
989 videoOutput->OffAllFrameStart();
990 return CameraError::NO_ERROR;
991 }
992
FfiCameraVideoOutputOnFrameEnd(int64_t id,int64_t callbackId)993 int32_t FfiCameraVideoOutputOnFrameEnd(int64_t id, int64_t callbackId)
994 {
995 auto videoOutput = FFIData::GetData<CJVideoOutput>(id);
996 if (videoOutput == nullptr) {
997 return CameraError::CAMERA_SERVICE_ERROR;
998 }
999 videoOutput->OnFrameEnd(callbackId);
1000 return CameraError::NO_ERROR;
1001 }
1002
FfiCameraVideoOutputOffFrameEnd(int64_t id,int64_t callbackId)1003 int32_t FfiCameraVideoOutputOffFrameEnd(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->OffFrameEnd(callbackId);
1010 return CameraError::NO_ERROR;
1011 }
1012
FfiCameraVideoOutputOffAllFrameEnd(int64_t id)1013 int32_t FfiCameraVideoOutputOffAllFrameEnd(int64_t id)
1014 {
1015 auto videoOutput = FFIData::GetData<CJVideoOutput>(id);
1016 if (videoOutput == nullptr) {
1017 return CameraError::CAMERA_SERVICE_ERROR;
1018 }
1019 videoOutput->OffAllFrameEnd();
1020 return CameraError::NO_ERROR;
1021 }
1022
FfiCameraVideoOutputOnError(int64_t id,int64_t callbackId)1023 int32_t FfiCameraVideoOutputOnError(int64_t id, int64_t callbackId)
1024 {
1025 auto videoOutput = FFIData::GetData<CJVideoOutput>(id);
1026 if (videoOutput == nullptr) {
1027 return CameraError::CAMERA_SERVICE_ERROR;
1028 }
1029 videoOutput->OnError(callbackId);
1030 return CameraError::NO_ERROR;
1031 }
1032
FfiCameraVideoOutputOffError(int64_t id,int64_t callbackId)1033 int32_t FfiCameraVideoOutputOffError(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->OffError(callbackId);
1040 return CameraError::NO_ERROR;
1041 }
1042
FfiCameraVideoOutputOffAllError(int64_t id)1043 int32_t FfiCameraVideoOutputOffAllError(int64_t id)
1044 {
1045 auto videoOutput = FFIData::GetData<CJVideoOutput>(id);
1046 if (videoOutput == nullptr) {
1047 return CameraError::CAMERA_SERVICE_ERROR;
1048 }
1049 videoOutput->OffAllError();
1050 return CameraError::NO_ERROR;
1051 }
1052
FfiCameraVideoOutputRelease(int64_t id)1053 int32_t FfiCameraVideoOutputRelease(int64_t id)
1054 {
1055 auto videoOutput = FFIData::GetData<CJVideoOutput>(id);
1056 if (videoOutput == nullptr) {
1057 return CameraError::CAMERA_SERVICE_ERROR;
1058 }
1059 return videoOutput->Release();
1060 }
1061
FfiCameraMetadataOutputStart(int64_t id)1062 int32_t FfiCameraMetadataOutputStart(int64_t id)
1063 {
1064 auto metadataOutput = FFIData::GetData<CJMetadataOutput>(id);
1065 if (metadataOutput == nullptr) {
1066 MEDIA_ERR_LOG("Start Failed!");
1067 return CameraError::CAMERA_SERVICE_ERROR;
1068 }
1069 return metadataOutput->Start();
1070 }
1071
FfiCameraMetadataOutputStop(int64_t id)1072 int32_t FfiCameraMetadataOutputStop(int64_t id)
1073 {
1074 auto metadataOutput = FFIData::GetData<CJMetadataOutput>(id);
1075 if (metadataOutput == nullptr) {
1076 MEDIA_ERR_LOG("Stop Failed!");
1077 return CameraError::CAMERA_SERVICE_ERROR;
1078 }
1079 return metadataOutput->Stop();
1080 }
1081
FfiCameraMetadataOutputOnMetadataObjectsAvailable(int64_t id,int64_t callbackId)1082 int32_t FfiCameraMetadataOutputOnMetadataObjectsAvailable(int64_t id, int64_t callbackId)
1083 {
1084 auto metadataOutput = FFIData::GetData<CJMetadataOutput>(id);
1085 if (metadataOutput == nullptr) {
1086 return CameraError::CAMERA_SERVICE_ERROR;
1087 }
1088 metadataOutput->OnMetadataObjectsAvailable(callbackId);
1089 return CameraError::NO_ERROR;
1090 }
1091
FfiCameraMetadataOutputOffMetadataObjectsAvailable(int64_t id,int64_t callbackId)1092 int32_t FfiCameraMetadataOutputOffMetadataObjectsAvailable(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->OffMetadataObjectsAvailable(callbackId);
1099 return CameraError::NO_ERROR;
1100 }
1101
FfiCameraMetadataOutputOffAllMetadataObjectsAvailable(int64_t id)1102 int32_t FfiCameraMetadataOutputOffAllMetadataObjectsAvailable(int64_t id)
1103 {
1104 auto metadataOutput = FFIData::GetData<CJMetadataOutput>(id);
1105 if (metadataOutput == nullptr) {
1106 return CameraError::CAMERA_SERVICE_ERROR;
1107 }
1108 metadataOutput->OffAllMetadataObjectsAvailable();
1109 return CameraError::NO_ERROR;
1110 }
1111
FfiCameraMetadataOutputOnError(int64_t id,int64_t callbackId)1112 int32_t FfiCameraMetadataOutputOnError(int64_t id, int64_t callbackId)
1113 {
1114 auto metadataOutput = FFIData::GetData<CJMetadataOutput>(id);
1115 if (metadataOutput == nullptr) {
1116 return CameraError::CAMERA_SERVICE_ERROR;
1117 }
1118 metadataOutput->OnError(callbackId);
1119 return CameraError::NO_ERROR;
1120 }
1121
FfiCameraMetadataOutputOffError(int64_t id,int64_t callbackId)1122 int32_t FfiCameraMetadataOutputOffError(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->OffError(callbackId);
1129 return CameraError::NO_ERROR;
1130 }
1131
FfiCameraMetadataOutputOffAllError(int64_t id)1132 int32_t FfiCameraMetadataOutputOffAllError(int64_t id)
1133 {
1134 auto metadataOutput = FFIData::GetData<CJMetadataOutput>(id);
1135 if (metadataOutput == nullptr) {
1136 return CameraError::CAMERA_SERVICE_ERROR;
1137 }
1138 metadataOutput->OffAllError();
1139 return CameraError::NO_ERROR;
1140 }
1141
FfiCameraMetadataOutputRelease(int64_t id)1142 int32_t FfiCameraMetadataOutputRelease(int64_t id)
1143 {
1144 auto metadataOutput = FFIData::GetData<CJMetadataOutput>(id);
1145 if (metadataOutput == nullptr) {
1146 return CameraError::CAMERA_SERVICE_ERROR;
1147 }
1148 return metadataOutput->Release();
1149 }
1150
FfiCameraSessionBeginConfig(int64_t id)1151 int32_t FfiCameraSessionBeginConfig(int64_t id)
1152 {
1153 auto instance = FFIData::GetData<CJSession>(id);
1154 if (instance == nullptr) {
1155 return CameraError::CAMERA_SERVICE_ERROR;
1156 }
1157 return instance->BeginConfig();
1158 }
1159
FfiCameraSessionCommitConfig(int64_t id)1160 int32_t FfiCameraSessionCommitConfig(int64_t id)
1161 {
1162 auto instance = FFIData::GetData<CJSession>(id);
1163 if (instance == nullptr) {
1164 return CameraError::CAMERA_SERVICE_ERROR;
1165 }
1166 return instance->CommitConfig();
1167 }
1168
FfiCameraSessionCanAddInput(int64_t id,int64_t cameraInputId,int32_t * errCode)1169 bool FfiCameraSessionCanAddInput(int64_t id, int64_t cameraInputId, int32_t *errCode)
1170 {
1171 auto instance = FFIData::GetData<CJSession>(id);
1172 auto cameraInput = FFIData::GetData<CJCameraInput>(cameraInputId);
1173 if (instance == nullptr || cameraInput == nullptr) {
1174 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1175 return false;
1176 }
1177 return instance->CanAddInput(cameraInput);
1178 }
1179
FfiCameraSessionAddInput(int64_t id,int64_t cameraInputId)1180 int32_t FfiCameraSessionAddInput(int64_t id, int64_t cameraInputId)
1181 {
1182 auto instance = FFIData::GetData<CJSession>(id);
1183 auto cameraInput = FFIData::GetData<CJCameraInput>(cameraInputId);
1184 if (instance == nullptr || cameraInput == nullptr) {
1185 return CameraError::CAMERA_SERVICE_ERROR;
1186 }
1187 return instance->AddInput(cameraInput);
1188 }
1189
FfiCameraSessionRemoveInput(int64_t id,int64_t cameraInputId)1190 int32_t FfiCameraSessionRemoveInput(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->RemoveInput(cameraInput);
1198 }
1199
GetCameraOutput(int64_t cameraOutputId,int32_t outputType)1200 static sptr<CameraOutput> GetCameraOutput(int64_t cameraOutputId, int32_t outputType)
1201 {
1202 if (outputType == METADATA_OUTPUT) {
1203 return FFIData::GetData<CJMetadataOutput>(cameraOutputId);
1204 }
1205 if (outputType == PHOTO_OUTPUT) {
1206 return FFIData::GetData<CJPhotoOutput>(cameraOutputId);
1207 }
1208 if (outputType == PREVIEW_OUTPUT) {
1209 return FFIData::GetData<CJPreviewOutput>(cameraOutputId);
1210 }
1211 return FFIData::GetData<CJVideoOutput>(cameraOutputId);
1212 }
1213
FfiCameraSessionCanAddOutput(int64_t id,int64_t cameraOutputId,int32_t outputType,int32_t * errCode)1214 bool FfiCameraSessionCanAddOutput(int64_t id, int64_t cameraOutputId, int32_t outputType, int32_t *errCode)
1215 {
1216 auto instance = FFIData::GetData<CJSession>(id);
1217 auto cameraOutput = GetCameraOutput(cameraOutputId, outputType);
1218 if (instance == nullptr || cameraOutput == nullptr) {
1219 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1220 return false;
1221 }
1222 return instance->CanAddOutput(cameraOutput);
1223 }
1224
FfiCameraSessionAddOutput(int64_t id,int64_t cameraOutputId,int32_t outputType)1225 int32_t FfiCameraSessionAddOutput(int64_t id, int64_t cameraOutputId, int32_t outputType)
1226 {
1227 auto instance = FFIData::GetData<CJSession>(id);
1228 auto cameraOutput = GetCameraOutput(cameraOutputId, outputType);
1229 if (instance == nullptr || cameraOutput == nullptr) {
1230 return CameraError::CAMERA_SERVICE_ERROR;
1231 }
1232 return instance->AddOutput(cameraOutput);
1233 }
1234
FfiCameraSessionRemoveOutput(int64_t id,int64_t cameraOutputId,int32_t outputType)1235 int32_t FfiCameraSessionRemoveOutput(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->RemoveOutput(cameraOutput);
1243 }
1244
FfiCameraSessionStart(int64_t id)1245 int32_t FfiCameraSessionStart(int64_t id)
1246 {
1247 auto instance = FFIData::GetData<CJSession>(id);
1248 if (instance == nullptr) {
1249 return CameraError::CAMERA_SERVICE_ERROR;
1250 }
1251 return instance->Start();
1252 }
1253
FfiCameraSessionStop(int64_t id)1254 int32_t FfiCameraSessionStop(int64_t id)
1255 {
1256 auto instance = FFIData::GetData<CJSession>(id);
1257 if (instance == nullptr) {
1258 return CameraError::CAMERA_SERVICE_ERROR;
1259 }
1260 return instance->Stop();
1261 }
1262
FfiCameraSessionRelease(int64_t id)1263 int32_t FfiCameraSessionRelease(int64_t id)
1264 {
1265 auto instance = FFIData::GetData<CJSession>(id);
1266 if (instance == nullptr) {
1267 return CameraError::CAMERA_SERVICE_ERROR;
1268 }
1269 return instance->Release();
1270 }
1271
FfiCameraSessionCanPreconfig(int64_t id,int32_t preconfigType,int32_t preconfigRatio,int32_t * errCode)1272 FFI_EXPORT bool FfiCameraSessionCanPreconfig(int64_t id, int32_t preconfigType, int32_t preconfigRatio,
1273 int32_t *errCode)
1274 {
1275 auto instance = FFIData::GetData<CJSession>(id);
1276 if (instance == nullptr) {
1277 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1278 return false;
1279 }
1280
1281 bool isSupported = false;
1282 *errCode = instance->CanPreconfig(static_cast<PreconfigType>(preconfigType),
1283 static_cast<ProfileSizeRatio>(preconfigRatio), isSupported);
1284 return isSupported;
1285 }
1286
FfiCameraSessionPreconfig(int64_t id,int32_t preconfigType,int32_t preconfigRatio,int32_t * errCode)1287 FFI_EXPORT void FfiCameraSessionPreconfig(int64_t id, int32_t preconfigType, int32_t preconfigRatio, int32_t *errCode)
1288 {
1289 auto instance = FFIData::GetData<CJSession>(id);
1290 if (instance == nullptr) {
1291 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1292 return;
1293 }
1294
1295 *errCode =
1296 instance->Preconfig(static_cast<PreconfigType>(preconfigType), static_cast<ProfileSizeRatio>(preconfigRatio));
1297 }
1298
FfiCameraSessionAddSecureOutput(int64_t id,int64_t cameraOutputId,int32_t * errCode)1299 FFI_EXPORT void FfiCameraSessionAddSecureOutput(int64_t id, int64_t cameraOutputId, int32_t *errCode)
1300 {
1301 auto instance = FFIData::GetData<CJSession>(id);
1302 if (instance == nullptr) {
1303 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1304 return;
1305 }
1306
1307 auto cameraOutput = FFIData::GetData<CJPreviewOutput>(cameraOutputId);
1308 if (cameraOutput == nullptr) {
1309 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1310 return;
1311 }
1312
1313 *errCode = instance->AddSecureOutput(cameraOutput);
1314 }
1315
FfiCameraOnError(int64_t id,int64_t callbackId,int32_t * errCode)1316 FFI_EXPORT void FfiCameraOnError(int64_t id, int64_t callbackId, int32_t *errCode)
1317 {
1318 auto instance = FFIData::GetData<CJSession>(id);
1319 if (instance == nullptr) {
1320 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1321 return;
1322 }
1323
1324 instance->OnError(callbackId);
1325 *errCode = CameraError::NO_ERROR;
1326 }
1327
FfiCameraOffError(int64_t id,int64_t callbackId,int32_t * errCode)1328 FFI_EXPORT void FfiCameraOffError(int64_t id, int64_t callbackId, int32_t *errCode)
1329 {
1330 auto instance = FFIData::GetData<CJSession>(id);
1331 if (instance == nullptr) {
1332 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1333 return;
1334 }
1335
1336 instance->OffError(callbackId);
1337 *errCode = CameraError::NO_ERROR;
1338 }
1339
FfiCameraOffAllError(int64_t id,int32_t * errCode)1340 FFI_EXPORT void FfiCameraOffAllError(int64_t id, int32_t *errCode)
1341 {
1342 auto instance = FFIData::GetData<CJSession>(id);
1343 if (instance == nullptr) {
1344 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1345 return;
1346 }
1347
1348 instance->OffAllError();
1349 *errCode = CameraError::NO_ERROR;
1350 }
1351
FfiCameraOnFocusStateChange(int64_t id,int64_t callbackId,int32_t * errCode)1352 FFI_EXPORT void FfiCameraOnFocusStateChange(int64_t id, int64_t callbackId, int32_t *errCode)
1353 {
1354 auto instance = FFIData::GetData<CJSession>(id);
1355 if (instance == nullptr) {
1356 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1357 return;
1358 }
1359
1360 instance->OnFocusStateChange(callbackId);
1361 *errCode = CameraError::NO_ERROR;
1362 }
1363
FfiCameraOffFocusStateChange(int64_t id,int64_t callbackId,int32_t * errCode)1364 FFI_EXPORT void FfiCameraOffFocusStateChange(int64_t id, int64_t callbackId, int32_t *errCode)
1365 {
1366 auto instance = FFIData::GetData<CJSession>(id);
1367 if (instance == nullptr) {
1368 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1369 return;
1370 }
1371
1372 instance->OffFocusStateChange(callbackId);
1373 *errCode = CameraError::NO_ERROR;
1374 }
1375
FfiCameraOffAllFocusStateChange(int64_t id,int32_t * errCode)1376 FFI_EXPORT void FfiCameraOffAllFocusStateChange(int64_t id, int32_t *errCode)
1377 {
1378 auto instance = FFIData::GetData<CJSession>(id);
1379 if (instance == nullptr) {
1380 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1381 return;
1382 }
1383
1384 instance->OffAllFocusStateChange();
1385 *errCode = CameraError::NO_ERROR;
1386 }
1387
FfiCameraOnSmoothZoomInfoAvailable(int64_t id,int64_t callbackId,int32_t * errCode)1388 FFI_EXPORT void FfiCameraOnSmoothZoomInfoAvailable(int64_t id, int64_t callbackId, int32_t *errCode)
1389 {
1390 auto instance = FFIData::GetData<CJSession>(id);
1391 if (instance == nullptr) {
1392 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1393 return;
1394 }
1395
1396 instance->OnSmoothZoom(callbackId);
1397 *errCode = CameraError::NO_ERROR;
1398 }
1399
FfiCameraOffSmoothZoomInfoAvailable(int64_t id,int64_t callbackId,int32_t * errCode)1400 FFI_EXPORT void FfiCameraOffSmoothZoomInfoAvailable(int64_t id, int64_t callbackId, int32_t *errCode)
1401 {
1402 auto instance = FFIData::GetData<CJSession>(id);
1403 if (instance == nullptr) {
1404 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1405 return;
1406 }
1407
1408 instance->OffSmoothZoom(callbackId);
1409 *errCode = CameraError::NO_ERROR;
1410 }
1411
FfiCameraOffAllSmoothZoomInfoAvailable(int64_t id,int32_t * errCode)1412 FFI_EXPORT void FfiCameraOffAllSmoothZoomInfoAvailable(int64_t id, int32_t *errCode)
1413 {
1414 auto instance = FFIData::GetData<CJSession>(id);
1415 if (instance == nullptr) {
1416 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1417 return;
1418 }
1419
1420 instance->OffAllSmoothZoom();
1421 *errCode = CameraError::NO_ERROR;
1422 }
1423
FfiCameraAutoExposureIsExposureModeSupported(int64_t id,int32_t aeMode,int32_t * errCode)1424 FFI_EXPORT bool FfiCameraAutoExposureIsExposureModeSupported(int64_t id, int32_t aeMode, int32_t *errCode)
1425 {
1426 auto instance = FFIData::GetData<CJSession>(id);
1427 if (instance == nullptr) {
1428 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1429 return false;
1430 }
1431
1432 bool isSupported = false;
1433 *errCode = instance->IsExposureModeSupported(static_cast<ExposureMode>(aeMode), isSupported);
1434 return isSupported;
1435 }
1436
FfiCameraAutoExposureGetExposureBiasRange(int64_t id,int32_t * errCode)1437 FFI_EXPORT CArrFloat32 FfiCameraAutoExposureGetExposureBiasRange(int64_t id, int32_t *errCode)
1438 {
1439 auto instance = FFIData::GetData<CJSession>(id);
1440 if (instance == nullptr) {
1441 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1442 return CArrFloat32{0, 0};
1443 }
1444
1445 CArrFloat32 cArr = CArrFloat32{0};
1446 *errCode = instance->GetExposureBiasRange(cArr);
1447 return cArr;
1448 }
1449
FfiCameraAutoExposureGetExposureMode(int64_t id,int32_t * errCode)1450 FFI_EXPORT int32_t FfiCameraAutoExposureGetExposureMode(int64_t id, int32_t *errCode)
1451 {
1452 auto instance = FFIData::GetData<CJSession>(id);
1453 if (instance == nullptr) {
1454 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1455 return static_cast<int32_t>(ExposureMode::EXPOSURE_MODE_UNSUPPORTED);
1456 }
1457
1458 ExposureMode aeMode = ExposureMode::EXPOSURE_MODE_UNSUPPORTED;
1459 *errCode = instance->GetExposureMode(aeMode);
1460 return static_cast<int32_t>(aeMode);
1461 }
1462
FfiCameraAutoExposureSetExposureMode(int64_t id,int32_t aeMode,int32_t * errCode)1463 FFI_EXPORT void FfiCameraAutoExposureSetExposureMode(int64_t id, int32_t aeMode, int32_t *errCode)
1464 {
1465 auto instance = FFIData::GetData<CJSession>(id);
1466 if (instance == nullptr) {
1467 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1468 return;
1469 }
1470
1471 *errCode = instance->SetExposureMode(static_cast<ExposureMode>(aeMode));
1472 }
1473
FfiCameraAutoExposureGetMeteringPoint(int64_t id,int32_t * errCode)1474 FFI_EXPORT Point FfiCameraAutoExposureGetMeteringPoint(int64_t id, int32_t *errCode)
1475 {
1476 auto instance = FFIData::GetData<CJSession>(id);
1477 if (instance == nullptr) {
1478 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1479 return Point{0, 0};
1480 }
1481
1482 Point point;
1483 *errCode = instance->GetMeteringPoint(point);
1484 return point;
1485 }
1486
FfiCameraAutoExposureSetMeteringPoint(int64_t id,Point point,int32_t * errCode)1487 FFI_EXPORT void FfiCameraAutoExposureSetMeteringPoint(int64_t id, Point point, int32_t *errCode)
1488 {
1489 auto instance = FFIData::GetData<CJSession>(id);
1490 if (instance == nullptr) {
1491 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1492 return;
1493 }
1494
1495 *errCode = instance->SetMeteringPoint(point);
1496 }
1497
FfiCameraAutoExposureSetExposureBias(int64_t id,float exposureBias,int32_t * errCode)1498 FFI_EXPORT void FfiCameraAutoExposureSetExposureBias(int64_t id, float exposureBias, int32_t *errCode)
1499 {
1500 auto instance = FFIData::GetData<CJSession>(id);
1501 if (instance == nullptr) {
1502 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1503 return;
1504 }
1505
1506 *errCode = instance->SetExposureBias(exposureBias);
1507 }
1508
FfiCameraAutoExposureGetExposureValue(int64_t id,int32_t * errCode)1509 FFI_EXPORT float FfiCameraAutoExposureGetExposureValue(int64_t id, int32_t *errCode)
1510 {
1511 auto instance = FFIData::GetData<CJSession>(id);
1512 if (instance == nullptr) {
1513 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1514 return 0;
1515 }
1516
1517 float exposureValue = 0;
1518 *errCode = instance->GetExposureValue(exposureValue);
1519 return exposureValue;
1520 }
1521
FfiCameraColorManagementGetSupportedColorSpaces(int64_t id,int32_t * errCode)1522 FFI_EXPORT CArrI32 FfiCameraColorManagementGetSupportedColorSpaces(int64_t id, int32_t *errCode)
1523 {
1524 auto instance = FFIData::GetData<CJSession>(id);
1525 if (instance == nullptr) {
1526 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1527 return CArrI32{0, 0};
1528 }
1529
1530 CArrI32 cArr = CArrI32{0};
1531 instance->GetSupportedColorSpaces(cArr);
1532 *errCode = CameraError::NO_ERROR;
1533 return cArr;
1534 }
1535
FfiCameraColorManagementSetColorSpace(int64_t id,int32_t colorSpace,int32_t * errCode)1536 FFI_EXPORT void FfiCameraColorManagementSetColorSpace(int64_t id, int32_t colorSpace, int32_t *errCode)
1537 {
1538 auto instance = FFIData::GetData<CJSession>(id);
1539 if (instance == nullptr) {
1540 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1541 return;
1542 }
1543
1544 *errCode = instance->SetColorSpace(static_cast<ColorSpace>(colorSpace));
1545 }
1546
FfiCameraColorManagementGetActiveColorSpace(int64_t id,int32_t * errCode)1547 FFI_EXPORT int32_t FfiCameraColorManagementGetActiveColorSpace(int64_t id, int32_t *errCode)
1548 {
1549 auto instance = FFIData::GetData<CJSession>(id);
1550 if (instance == nullptr) {
1551 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1552 return static_cast<int32_t>(ColorSpace::COLOR_SPACE_UNKNOWN);
1553 }
1554
1555 ColorSpace colorSpace = ColorSpace::COLOR_SPACE_UNKNOWN;
1556 *errCode = instance->GetActiveColorSpace(colorSpace);
1557 return static_cast<int32_t>(colorSpace);
1558 }
1559
FfiCameraFlashQueryFlashModeSupported(int64_t id,int32_t flashMode,int32_t * errCode)1560 FFI_EXPORT bool FfiCameraFlashQueryFlashModeSupported(int64_t id, int32_t flashMode, int32_t *errCode)
1561 {
1562 auto instance = FFIData::GetData<CJSession>(id);
1563 if (instance == nullptr) {
1564 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1565 return false;
1566 }
1567
1568 bool isSupported = false;
1569 *errCode = instance->IsFlashModeSupported(static_cast<FlashMode>(flashMode), isSupported);
1570 return isSupported;
1571 }
1572
FfiCameraFlashQueryHasFlash(int64_t id,int32_t * errCode)1573 FFI_EXPORT bool FfiCameraFlashQueryHasFlash(int64_t id, int32_t *errCode)
1574 {
1575 auto instance = FFIData::GetData<CJSession>(id);
1576 if (instance == nullptr) {
1577 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1578 return false;
1579 }
1580
1581 bool hasFlash = false;
1582 *errCode = instance->HasFlash(hasFlash);
1583 return hasFlash;
1584 }
1585
FfiCameraFlashGetFlashMode(int64_t id,int32_t * errCode)1586 FFI_EXPORT int32_t FfiCameraFlashGetFlashMode(int64_t id, int32_t *errCode)
1587 {
1588 auto instance = FFIData::GetData<CJSession>(id);
1589 if (instance == nullptr) {
1590 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1591 return 0;
1592 }
1593
1594 FlashMode flashMode = FlashMode::FLASH_MODE_CLOSE;
1595 *errCode = instance->GetFlashMode(flashMode);
1596 return static_cast<int32_t>(flashMode);
1597 }
1598
FfiCameraFlashSetFlashMode(int64_t id,int32_t flashMode,int32_t * errCode)1599 FFI_EXPORT void FfiCameraFlashSetFlashMode(int64_t id, int32_t flashMode, int32_t *errCode)
1600 {
1601 auto instance = FFIData::GetData<CJSession>(id);
1602 if (instance == nullptr) {
1603 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1604 return;
1605 }
1606
1607 *errCode = instance->SetFlashMode(static_cast<FlashMode>(flashMode));
1608 }
1609
FfiCameraFocusIsFocusModeSupported(int64_t id,int32_t afMode,int32_t * errCode)1610 FFI_EXPORT bool FfiCameraFocusIsFocusModeSupported(int64_t id, int32_t afMode, int32_t *errCode)
1611 {
1612 auto instance = FFIData::GetData<CJSession>(id);
1613 if (instance == nullptr) {
1614 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1615 return false;
1616 }
1617
1618 bool isSupported = false;
1619 *errCode = instance->IsFocusModeSupported(static_cast<FocusMode>(afMode), isSupported);
1620 return isSupported;
1621 }
1622
FfiCameraFocusSetFocusMode(int64_t id,int32_t afMode,int32_t * errCode)1623 FFI_EXPORT void FfiCameraFocusSetFocusMode(int64_t id, int32_t afMode, int32_t *errCode)
1624 {
1625 auto instance = FFIData::GetData<CJSession>(id);
1626 if (instance == nullptr) {
1627 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1628 return;
1629 }
1630
1631 *errCode = instance->SetFocusMode(static_cast<FocusMode>(afMode));
1632 }
1633
FfiCameraFocusGetFocusMode(int64_t id,int32_t * errCode)1634 FFI_EXPORT int32_t FfiCameraFocusGetFocusMode(int64_t id, int32_t *errCode)
1635 {
1636 auto instance = FFIData::GetData<CJSession>(id);
1637 if (instance == nullptr) {
1638 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1639 return 0;
1640 }
1641
1642 FocusMode afMode = FocusMode::FOCUS_MODE_MANUAL;
1643 *errCode = instance->GetFocusMode(afMode);
1644 return static_cast<int32_t>(afMode);
1645 }
1646
FfiCameraFocusSetFocusPoint(int64_t id,Point point,int32_t * errCode)1647 FFI_EXPORT void FfiCameraFocusSetFocusPoint(int64_t id, Point point, int32_t *errCode)
1648 {
1649 auto instance = FFIData::GetData<CJSession>(id);
1650 if (instance == nullptr) {
1651 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1652 return;
1653 }
1654
1655 *errCode = instance->SetFocusPoint(point);
1656 }
1657
FfiCameraFocusGetFocusPoint(int64_t id,int32_t * errCode)1658 FFI_EXPORT Point FfiCameraFocusGetFocusPoint(int64_t id, int32_t *errCode)
1659 {
1660 auto instance = FFIData::GetData<CJSession>(id);
1661 if (instance == nullptr) {
1662 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1663 return Point{0, 0};
1664 }
1665
1666 Point point;
1667 *errCode = instance->GetFocusPoint(point);
1668 return point;
1669 }
1670
FfiCameraFocusGetFocalLength(int64_t id,int32_t * errCode)1671 FFI_EXPORT float FfiCameraFocusGetFocalLength(int64_t id, int32_t *errCode)
1672 {
1673 auto instance = FFIData::GetData<CJSession>(id);
1674 if (instance == nullptr) {
1675 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1676 return 0;
1677 }
1678
1679 float focalLength = 0;
1680 *errCode = instance->GetFocalLength(focalLength);
1681 return focalLength;
1682 }
1683
FfiCameraStabilizationIsVideoStabilizationModeSupported(int64_t id,int32_t vsMode,int32_t * errCode)1684 FFI_EXPORT bool FfiCameraStabilizationIsVideoStabilizationModeSupported(int64_t id, int32_t vsMode, int32_t *errCode)
1685 {
1686 auto instance = FFIData::GetData<CJSession>(id);
1687 if (instance == nullptr) {
1688 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1689 return false;
1690 }
1691
1692 bool isSupported = false;
1693 *errCode = instance->IsVideoStabilizationModeSupported(static_cast<VideoStabilizationMode>(vsMode), isSupported);
1694 return isSupported;
1695 }
1696
FfiCameraStabilizationGetActiveVideoStabilizationMode(int64_t id,int32_t * errCode)1697 FFI_EXPORT int32_t FfiCameraStabilizationGetActiveVideoStabilizationMode(int64_t id, int32_t *errCode)
1698 {
1699 auto instance = FFIData::GetData<CJSession>(id);
1700 if (instance == nullptr) {
1701 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1702 return 0;
1703 }
1704
1705 VideoStabilizationMode vsMode = VideoStabilizationMode::OFF;
1706 *errCode = instance->GetActiveVideoStabilizationMode(vsMode);
1707 return static_cast<int32_t>(vsMode);
1708 }
1709
FfiCameraStabilizationSetVideoStabilizationMode(int64_t id,int32_t vsMode,int32_t * errCode)1710 FFI_EXPORT void FfiCameraStabilizationSetVideoStabilizationMode(int64_t id, int32_t vsMode, int32_t *errCode)
1711 {
1712 auto instance = FFIData::GetData<CJSession>(id);
1713 if (instance == nullptr) {
1714 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1715 return;
1716 }
1717
1718 *errCode = instance->SetVideoStabilizationMode(static_cast<VideoStabilizationMode>(vsMode));
1719 }
1720
FfiCameraZoomGetZoomRatioRange(int64_t id,int32_t * errCode)1721 FFI_EXPORT CArrFloat32 FfiCameraZoomGetZoomRatioRange(int64_t id, int32_t *errCode)
1722 {
1723 auto instance = FFIData::GetData<CJSession>(id);
1724 if (instance == nullptr) {
1725 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1726 return CArrFloat32{0, 0};
1727 }
1728
1729 CArrFloat32 cArr = CArrFloat32{0};
1730 *errCode = instance->GetZoomRatioRange(cArr);
1731 return cArr;
1732 }
1733
FfiCameraZoomSetZoomRatio(int64_t id,float zoomRatio,int32_t * errCode)1734 FFI_EXPORT void FfiCameraZoomSetZoomRatio(int64_t id, float zoomRatio, int32_t *errCode)
1735 {
1736 auto instance = FFIData::GetData<CJSession>(id);
1737 if (instance == nullptr) {
1738 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1739 return;
1740 }
1741
1742 *errCode = instance->SetZoomRatio(zoomRatio);
1743 }
1744
FfiCameraZoomGetZoomRatio(int64_t id,int32_t * errCode)1745 FFI_EXPORT float FfiCameraZoomGetZoomRatio(int64_t id, int32_t *errCode)
1746 {
1747 auto instance = FFIData::GetData<CJSession>(id);
1748 if (instance == nullptr) {
1749 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1750 return 0;
1751 }
1752
1753 float zoomRatio = 0;
1754 *errCode = instance->GetZoomRatio(zoomRatio);
1755 return zoomRatio;
1756 }
1757
FfiCameraZoomSetSmoothZoom(int64_t id,float targetRatio,int32_t mode,int32_t * errCode)1758 FFI_EXPORT void FfiCameraZoomSetSmoothZoom(int64_t id, float targetRatio, int32_t mode, int32_t *errCode)
1759 {
1760 auto instance = FFIData::GetData<CJSession>(id);
1761 if (instance == nullptr) {
1762 *errCode = CameraError::CAMERA_SERVICE_ERROR;
1763 return;
1764 }
1765
1766 *errCode = instance->SetSmoothZoom(targetRatio, static_cast<uint32_t>(mode));
1767 }
1768
1769 } // extern "C"
1770 } // namespace CameraStandard
1771 } // namespace OHOS