• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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