1 /*
2  * Copyright (c) 2023-2023 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 "kits/native/include/camera/camera_manager.h"
17 #include "impl/camera_manager_impl.h"
18 #include "camera_log.h"
19 #include "hilog/log.h"
20 
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24 
OH_Camera_GetCameraManager(Camera_Manager** cameraManager)25 Camera_ErrorCode OH_Camera_GetCameraManager(Camera_Manager** cameraManager)
26 {
27     CHECK_AND_RETURN_RET_LOG(cameraManager != nullptr, CAMERA_INVALID_ARGUMENT,
28         "Invaild argument, cameraManager is null!");
29     *cameraManager = new Camera_Manager();
30     return CAMERA_OK;
31 }
32 
OH_Camera_DeleteCameraManager(Camera_Manager* cameraManager)33 Camera_ErrorCode OH_Camera_DeleteCameraManager(Camera_Manager* cameraManager)
34 {
35     CHECK_AND_RETURN_RET_LOG(cameraManager != nullptr, CAMERA_INVALID_ARGUMENT,
36         "Invaild argument, cameraManager is null!");
37     delete cameraManager;
38     return CAMERA_OK;
39 }
40 
OH_CameraManager_RegisterCallback(Camera_Manager* cameraManager, CameraManager_Callbacks* callback)41 Camera_ErrorCode OH_CameraManager_RegisterCallback(Camera_Manager* cameraManager, CameraManager_Callbacks* callback)
42 {
43     CHECK_AND_RETURN_RET_LOG(cameraManager != nullptr, CAMERA_INVALID_ARGUMENT,
44         "Invaild argument, cameraManager is null!");
45     CHECK_AND_RETURN_RET_LOG(callback != nullptr, CAMERA_INVALID_ARGUMENT,
46         "Invaild argument, callback is null!");
47     CHECK_AND_RETURN_RET_LOG(callback->onCameraStatus != nullptr,
48         CAMERA_INVALID_ARGUMENT, "Invaild argument, callback onCameraStatus is null!");
49 
50     cameraManager->RegisterCallback(callback);
51     return CAMERA_OK;
52 }
53 
OH_CameraManager_UnregisterCallback(Camera_Manager* cameraManager, CameraManager_Callbacks* callback)54 Camera_ErrorCode OH_CameraManager_UnregisterCallback(Camera_Manager* cameraManager, CameraManager_Callbacks* callback)
55 {
56     CHECK_AND_RETURN_RET_LOG(cameraManager != nullptr, CAMERA_INVALID_ARGUMENT,
57         "Invaild argument, cameraManager is null!");
58     CHECK_AND_RETURN_RET_LOG(callback != nullptr, CAMERA_INVALID_ARGUMENT,
59         "Invaild argument, callback is null!");
60     CHECK_AND_RETURN_RET_LOG(callback->onCameraStatus != nullptr,
61         CAMERA_INVALID_ARGUMENT, "Invaild argument, callback onCameraStatus is null!");
62 
63     cameraManager->UnregisterCallback(callback);
64     return CAMERA_OK;
65 }
66 
OH_CameraManager_RegisterTorchStatusCallback(Camera_Manager* cameraManager, OH_CameraManager_TorchStatusCallback torchStatusCallback)67 Camera_ErrorCode OH_CameraManager_RegisterTorchStatusCallback(Camera_Manager* cameraManager,
68     OH_CameraManager_TorchStatusCallback torchStatusCallback)
69 {
70     CHECK_AND_RETURN_RET_LOG(cameraManager != nullptr, CAMERA_INVALID_ARGUMENT,
71         "Invaild argument, cameraManager is null!");
72     CHECK_AND_RETURN_RET_LOG(torchStatusCallback != nullptr, CAMERA_INVALID_ARGUMENT,
73         "Invaild argument, callback is null!");
74     cameraManager->RegisterTorchStatusCallback(torchStatusCallback);
75     return CAMERA_OK;
76 }
77 
OH_CameraManager_UnregisterTorchStatusCallback(Camera_Manager* cameraManager, OH_CameraManager_TorchStatusCallback torchStatusCallback)78 Camera_ErrorCode OH_CameraManager_UnregisterTorchStatusCallback(Camera_Manager* cameraManager,
79     OH_CameraManager_TorchStatusCallback torchStatusCallback)
80 {
81     CHECK_AND_RETURN_RET_LOG(cameraManager != nullptr, CAMERA_INVALID_ARGUMENT,
82         "Invaild argument, cameraManager is null!");
83     CHECK_AND_RETURN_RET_LOG(torchStatusCallback != nullptr, CAMERA_INVALID_ARGUMENT,
84         "Invaild argument, callback is null!");
85     cameraManager->UnregisterTorchStatusCallback(torchStatusCallback);
86     return CAMERA_OK;
87 }
88 
OH_CameraManager_GetSupportedCameras(Camera_Manager* cameraManager, Camera_Device** cameras, uint32_t* size)89 Camera_ErrorCode OH_CameraManager_GetSupportedCameras(Camera_Manager* cameraManager,
90     Camera_Device** cameras, uint32_t* size)
91 {
92     CHECK_AND_RETURN_RET_LOG(cameraManager != nullptr, CAMERA_INVALID_ARGUMENT,
93         "Invaild argument, cameraManager is null!");
94     CHECK_AND_RETURN_RET_LOG(cameras != nullptr, CAMERA_INVALID_ARGUMENT,
95         "Invaild argument, cameras is null!");
96     CHECK_AND_RETURN_RET_LOG(size!= nullptr, CAMERA_INVALID_ARGUMENT,
97         "Invaild argument, size is null!");
98 
99     return cameraManager->GetSupportedCameras(cameras, size);
100 }
101 
OH_CameraManager_DeleteSupportedCameras(Camera_Manager* cameraManager, Camera_Device* cameras, uint32_t size)102 Camera_ErrorCode OH_CameraManager_DeleteSupportedCameras(Camera_Manager* cameraManager,
103     Camera_Device* cameras, uint32_t size)
104 {
105     CHECK_AND_RETURN_RET_LOG(cameraManager != nullptr, CAMERA_INVALID_ARGUMENT,
106         "Invaild argument, cameraManager is null!");
107     CHECK_AND_RETURN_RET_LOG(cameras != nullptr, CAMERA_INVALID_ARGUMENT,
108         "Invaild argument, cameras is null!");
109     uint32_t sizeMax = 0;
110     cameraManager->GetSupportedCameras(&cameras, &sizeMax);
111     CHECK_AND_RETURN_RET_LOG(size <= sizeMax, CAMERA_INVALID_ARGUMENT,
112         "Invaild argument,size is invaild");
113 
114     return cameraManager->DeleteSupportedCameras(cameras, size);
115 }
116 
OH_CameraManager_GetSupportedCameraOutputCapability(Camera_Manager* cameraManager, const Camera_Device* camera, Camera_OutputCapability** cameraOutputCapability)117 Camera_ErrorCode OH_CameraManager_GetSupportedCameraOutputCapability(Camera_Manager* cameraManager,
118     const Camera_Device* camera, Camera_OutputCapability** cameraOutputCapability)
119 {
120     CHECK_AND_RETURN_RET_LOG(cameraManager != nullptr, CAMERA_INVALID_ARGUMENT,
121         "Invaild argument, cameraManager is null!");
122     CHECK_AND_RETURN_RET_LOG(cameraOutputCapability != nullptr, CAMERA_INVALID_ARGUMENT,
123         "Invaild argument, cameraOutputCapability is null!");
124     CHECK_AND_RETURN_RET_LOG(camera != nullptr, CAMERA_INVALID_ARGUMENT,
125         "Invaild argument,camera is null!");
126 
127     return cameraManager->GetSupportedCameraOutputCapability(camera, cameraOutputCapability);
128 }
129 
OH_CameraManager_GetSupportedCameraOutputCapabilityWithSceneMode(Camera_Manager* cameraManager, const Camera_Device* camera, Camera_SceneMode sceneMode, Camera_OutputCapability** cameraOutputCapability)130 Camera_ErrorCode OH_CameraManager_GetSupportedCameraOutputCapabilityWithSceneMode(Camera_Manager* cameraManager,
131     const Camera_Device* camera, Camera_SceneMode sceneMode, Camera_OutputCapability** cameraOutputCapability)
132 {
133     MEDIA_DEBUG_LOG("OH_CameraManager_GetSupportedCameraOutputCapabilityWithSceneMode is called.");
134     CHECK_AND_RETURN_RET_LOG(cameraManager != nullptr, CAMERA_INVALID_ARGUMENT,
135         "Invaild argument, cameraManager is null!");
136     CHECK_AND_RETURN_RET_LOG(camera != nullptr, CAMERA_INVALID_ARGUMENT,
137         "Invaild argument, camera is null!");
138     CHECK_AND_RETURN_RET_LOG(cameraOutputCapability != nullptr, CAMERA_INVALID_ARGUMENT,
139         "Invaild argument, cameraOutputCapability is null!");
140 
141     return cameraManager->GetSupportedCameraOutputCapabilityWithSceneMode(camera, sceneMode, cameraOutputCapability);
142 }
143 
OH_CameraManager_DeleteSupportedCameraOutputCapability(Camera_Manager* cameraManager, Camera_OutputCapability* cameraOutputCapability)144 Camera_ErrorCode OH_CameraManager_DeleteSupportedCameraOutputCapability(Camera_Manager* cameraManager,
145     Camera_OutputCapability* cameraOutputCapability)
146 {
147     CHECK_AND_RETURN_RET_LOG(cameraManager != nullptr, CAMERA_INVALID_ARGUMENT,
148         "Invaild argument, cameraManager is null!");
149     CHECK_AND_RETURN_RET_LOG(cameraOutputCapability != nullptr, CAMERA_INVALID_ARGUMENT,
150         "Invaild argument, cameraOutputCapability is null!");
151 
152     return cameraManager->DeleteSupportedCameraOutputCapability(cameraOutputCapability);
153 }
154 
OH_CameraManager_IsCameraMuted(Camera_Manager* cameraManager, bool* isCameraMuted)155 Camera_ErrorCode OH_CameraManager_IsCameraMuted(Camera_Manager* cameraManager, bool* isCameraMuted)
156 {
157     MEDIA_DEBUG_LOG("OH_CameraManager_IsCameraMuted is called");
158     CHECK_AND_RETURN_RET_LOG(cameraManager != nullptr, CAMERA_INVALID_ARGUMENT,
159         "Invaild argument, cameraManager is null!");
160 
161     return cameraManager->IsCameraMuted(isCameraMuted);
162 }
163 
OH_CameraManager_CreateCaptureSession(Camera_Manager* cameraManager, Camera_CaptureSession** captureSession)164 Camera_ErrorCode OH_CameraManager_CreateCaptureSession(Camera_Manager* cameraManager,
165     Camera_CaptureSession** captureSession)
166 {
167     CHECK_AND_RETURN_RET_LOG(cameraManager != nullptr, CAMERA_INVALID_ARGUMENT,
168         "Invaild argument, cameraManager is null!");
169     CHECK_AND_RETURN_RET_LOG(captureSession != nullptr, CAMERA_INVALID_ARGUMENT,
170         "Invaild argument, captureSession is null!");
171 
172     return cameraManager->CreateCaptureSession(captureSession);
173 }
174 
OH_CameraManager_CreateCameraInput(Camera_Manager* cameraManager, const Camera_Device* camera, Camera_Input** cameraInput)175 Camera_ErrorCode OH_CameraManager_CreateCameraInput(Camera_Manager* cameraManager,
176     const Camera_Device* camera, Camera_Input** cameraInput)
177 {
178     CHECK_AND_RETURN_RET_LOG(cameraManager != nullptr, CAMERA_INVALID_ARGUMENT,
179         "Invaild argument, cameraManager is null!");
180     CHECK_AND_RETURN_RET_LOG(camera != nullptr, CAMERA_INVALID_ARGUMENT,
181         "Invaild argument, cameraDevice is null!");
182     CHECK_AND_RETURN_RET_LOG(cameraInput != nullptr, CAMERA_INVALID_ARGUMENT,
183         "Invaild argument, cameraInput is null!");
184 
185     return cameraManager->CreateCameraInput(camera, cameraInput);
186 }
187 
OH_CameraManager_CreateCameraInput_WithPositionAndType(Camera_Manager* cameraManager, Camera_Position position, Camera_Type type, Camera_Input** cameraInput)188 Camera_ErrorCode OH_CameraManager_CreateCameraInput_WithPositionAndType(Camera_Manager* cameraManager,
189     Camera_Position position, Camera_Type type, Camera_Input** cameraInput)
190 {
191     MEDIA_DEBUG_LOG("OH_CameraManager_CreateCameraInput_WithPositionAndType is called");
192     CHECK_AND_RETURN_RET_LOG(cameraManager != nullptr, CAMERA_INVALID_ARGUMENT,
193         "Invaild argument, cameraManager is null!");
194     CHECK_AND_RETURN_RET_LOG(cameraInput != nullptr, CAMERA_INVALID_ARGUMENT,
195         "Invaild argument, cameraInput is null!");
196     return cameraManager->CreateCameraInputWithPositionAndType(position, type, cameraInput);
197 }
198 
OH_CameraManager_CreatePreviewOutput(Camera_Manager* cameraManager, const Camera_Profile* profile, const char* surfaceId, Camera_PreviewOutput** previewOutput)199 Camera_ErrorCode OH_CameraManager_CreatePreviewOutput(Camera_Manager* cameraManager, const Camera_Profile* profile,
200     const char* surfaceId, Camera_PreviewOutput** previewOutput)
201 {
202     CHECK_AND_RETURN_RET_LOG(cameraManager != nullptr, CAMERA_INVALID_ARGUMENT,
203         "Invaild argument, cameraManager is null!");
204     CHECK_AND_RETURN_RET_LOG(profile != nullptr, CAMERA_INVALID_ARGUMENT,
205         "Invaild argument, profile is null!");
206     CHECK_AND_RETURN_RET_LOG(surfaceId != nullptr, CAMERA_INVALID_ARGUMENT,
207         "Invaild argument, surfaceId is null!");
208     CHECK_AND_RETURN_RET_LOG(previewOutput != nullptr, CAMERA_INVALID_ARGUMENT,
209         "Invaild argument, previewOutput is null!");
210 
211     return cameraManager->CreatePreviewOutput(profile, surfaceId, previewOutput);
212 }
213 
OH_CameraManager_CreatePreviewOutputUsedInPreconfig(Camera_Manager* cameraManager, const char* surfaceId, Camera_PreviewOutput** previewOutput)214 Camera_ErrorCode OH_CameraManager_CreatePreviewOutputUsedInPreconfig(Camera_Manager* cameraManager,
215     const char* surfaceId, Camera_PreviewOutput** previewOutput)
216 {
217     MEDIA_DEBUG_LOG("OH_CameraManager_CreatePreviewOutputUsedInPreconfig is called.");
218     CHECK_AND_RETURN_RET_LOG(cameraManager != nullptr, CAMERA_INVALID_ARGUMENT,
219         "Invaild argument, cameraManager is null!");
220     CHECK_AND_RETURN_RET_LOG(surfaceId != nullptr, CAMERA_INVALID_ARGUMENT,
221         "Invaild argument, surfaceId is null!");
222     CHECK_AND_RETURN_RET_LOG(previewOutput != nullptr, CAMERA_INVALID_ARGUMENT,
223         "Invaild argument, previewOutput is null!");
224 
225     return cameraManager->CreatePreviewOutputUsedInPreconfig(surfaceId, previewOutput);
226 }
227 
OH_CameraManager_CreatePhotoOutput(Camera_Manager* cameraManager, const Camera_Profile* profile, const char* surfaceId, Camera_PhotoOutput** photoOutput)228 Camera_ErrorCode OH_CameraManager_CreatePhotoOutput(Camera_Manager* cameraManager, const Camera_Profile* profile,
229     const char* surfaceId, Camera_PhotoOutput** photoOutput)
230 {
231     MEDIA_DEBUG_LOG("OH_CameraManager_CreatePhotoOutput is called");
232     CHECK_AND_RETURN_RET_LOG(cameraManager != nullptr, CAMERA_INVALID_ARGUMENT,
233         "Invaild argument, cameraManager is null!");
234     CHECK_AND_RETURN_RET_LOG(profile != nullptr, CAMERA_INVALID_ARGUMENT,
235         "Invaild argument, profile is null!");
236     CHECK_AND_RETURN_RET_LOG(surfaceId != nullptr, CAMERA_INVALID_ARGUMENT,
237         "Invaild argument, surfaceId is null!");
238     CHECK_AND_RETURN_RET_LOG(photoOutput != nullptr, CAMERA_INVALID_ARGUMENT,
239         "Invaild argument, photoOutput is null!");
240 
241     return cameraManager->CreatePhotoOutput(profile, surfaceId, photoOutput);
242 }
243 
OH_CameraManager_CreatePhotoOutputWithoutSurface(Camera_Manager* cameraManager, const Camera_Profile* profile, Camera_PhotoOutput** photoOutput)244 Camera_ErrorCode OH_CameraManager_CreatePhotoOutputWithoutSurface(Camera_Manager* cameraManager,
245     const Camera_Profile* profile, Camera_PhotoOutput** photoOutput)
246 {
247     MEDIA_DEBUG_LOG("OH_CameraManager_CreatePhotoOutputWithoutSurface is called");
248     CHECK_AND_RETURN_RET_LOG(cameraManager != nullptr, CAMERA_INVALID_ARGUMENT,
249         "Invaild argument, cameraManager is null!");
250     CHECK_AND_RETURN_RET_LOG(profile != nullptr, CAMERA_INVALID_ARGUMENT,
251         "Invaild argument, profile is null!");
252     CHECK_AND_RETURN_RET_LOG(photoOutput != nullptr, CAMERA_INVALID_ARGUMENT,
253         "Invaild argument, photoOutput is null!");
254 
255     return cameraManager->CreatePhotoOutputWithoutSurface(profile, photoOutput);
256 }
257 
OH_CameraManager_CreatePhotoOutputUsedInPreconfig(Camera_Manager* cameraManager, const char* surfaceId, Camera_PhotoOutput** photoOutput)258 Camera_ErrorCode OH_CameraManager_CreatePhotoOutputUsedInPreconfig(Camera_Manager* cameraManager,
259     const char* surfaceId, Camera_PhotoOutput** photoOutput)
260 {
261     MEDIA_DEBUG_LOG("OH_CameraManager_CreatePhotoOutputUsedInPreconfig is called.");
262     CHECK_AND_RETURN_RET_LOG(cameraManager != nullptr, CAMERA_INVALID_ARGUMENT,
263         "Invaild argument, cameraManager is null!");
264     CHECK_AND_RETURN_RET_LOG(surfaceId != nullptr, CAMERA_INVALID_ARGUMENT,
265         "Invaild argument, surfaceId is null!");
266     CHECK_AND_RETURN_RET_LOG(photoOutput != nullptr, CAMERA_INVALID_ARGUMENT,
267         "Invaild argument, photoOutput is null!");
268 
269     return cameraManager->CreatePhotoOutputUsedInPreconfig(surfaceId, photoOutput);
270 }
271 
OH_CameraManager_CreateVideoOutput(Camera_Manager* cameraManager, const Camera_VideoProfile* profile, const char* surfaceId, Camera_VideoOutput** videoOutput)272 Camera_ErrorCode OH_CameraManager_CreateVideoOutput(Camera_Manager* cameraManager, const Camera_VideoProfile* profile,
273     const char* surfaceId, Camera_VideoOutput** videoOutput)
274 {
275     CHECK_AND_RETURN_RET_LOG(cameraManager != nullptr, CAMERA_INVALID_ARGUMENT,
276         "Invaild argument, cameraManager is null!");
277     CHECK_AND_RETURN_RET_LOG(profile != nullptr, CAMERA_INVALID_ARGUMENT,
278         "Invaild argument, profile is null!");
279     CHECK_AND_RETURN_RET_LOG(surfaceId != nullptr, CAMERA_INVALID_ARGUMENT,
280         "Invaild argument, surfaceId is null!");
281     CHECK_AND_RETURN_RET_LOG(videoOutput != nullptr, CAMERA_INVALID_ARGUMENT,
282         "Invaild argument, videoOutput is null!");
283 
284     return cameraManager->CreateVideoOutput(profile, surfaceId, videoOutput);
285 }
286 
OH_CameraManager_CreateVideoOutputUsedInPreconfig(Camera_Manager* cameraManager, const char* surfaceId, Camera_VideoOutput** videoOutput)287 Camera_ErrorCode OH_CameraManager_CreateVideoOutputUsedInPreconfig(Camera_Manager* cameraManager,
288     const char* surfaceId, Camera_VideoOutput** videoOutput)
289 {
290     MEDIA_DEBUG_LOG("OH_CameraManager_CreateVideoOutputUsedInPreconfig is called.");
291     CHECK_AND_RETURN_RET_LOG(cameraManager != nullptr, CAMERA_INVALID_ARGUMENT,
292         "Invaild argument, cameraManager is null!");
293     CHECK_AND_RETURN_RET_LOG(surfaceId != nullptr, CAMERA_INVALID_ARGUMENT,
294         "Invaild argument, surfaceId is null!");
295     CHECK_AND_RETURN_RET_LOG(videoOutput != nullptr, CAMERA_INVALID_ARGUMENT,
296         "Invaild argument, videoOutput is null!");
297 
298     return cameraManager->CreateVideoOutputUsedInPreconfig(surfaceId, videoOutput);
299 }
300 
OH_CameraManager_CreateMetadataOutput(Camera_Manager* cameraManager, const Camera_MetadataObjectType* type, Camera_MetadataOutput** metadataOutput)301 Camera_ErrorCode OH_CameraManager_CreateMetadataOutput(Camera_Manager* cameraManager,
302     const Camera_MetadataObjectType* type, Camera_MetadataOutput** metadataOutput)
303 {
304     CHECK_AND_RETURN_RET_LOG(cameraManager != nullptr, CAMERA_INVALID_ARGUMENT,
305         "Invaild argument, cameraManager is null!");
306     CHECK_AND_RETURN_RET_LOG(type != nullptr, CAMERA_INVALID_ARGUMENT,
307         "Invaild argument, type is null!");
308     CHECK_AND_RETURN_RET_LOG(metadataOutput != nullptr, CAMERA_INVALID_ARGUMENT,
309         "Invaild argument, metadataOutput is null!");
310 
311     return cameraManager->CreateMetadataOutput(type, metadataOutput);
312 }
313 
OH_CameraDevice_GetCameraOrientation(Camera_Device* camera, uint32_t* orientation)314 Camera_ErrorCode OH_CameraDevice_GetCameraOrientation(Camera_Device* camera, uint32_t* orientation)
315 {
316     CHECK_AND_RETURN_RET_LOG(camera != nullptr, CAMERA_INVALID_ARGUMENT,
317         "Invaild argument, cameraDevice is null!");
318     CHECK_AND_RETURN_RET_LOG(orientation!= nullptr, CAMERA_INVALID_ARGUMENT,
319         "Invaild argument, orientation is null!");
320     return Camera_Manager::GetCameraOrientation(camera, orientation);
321 }
322 
OH_CameraManager_GetSupportedSceneModes(Camera_Device* camera, Camera_SceneMode** sceneModes, uint32_t* size)323 Camera_ErrorCode OH_CameraManager_GetSupportedSceneModes(Camera_Device* camera,
324     Camera_SceneMode** sceneModes, uint32_t* size)
325 {
326     MEDIA_DEBUG_LOG("OH_CameraManager_GetSupportedSceneModes is called.");
327     CHECK_AND_RETURN_RET_LOG(camera != nullptr, CAMERA_INVALID_ARGUMENT,
328         "Invaild argument, camera is null!");
329     CHECK_AND_RETURN_RET_LOG(sceneModes != nullptr, CAMERA_INVALID_ARGUMENT,
330         "Invaild argument, sceneModes is null!");
331     CHECK_AND_RETURN_RET_LOG(size != nullptr, CAMERA_INVALID_ARGUMENT,
332         "Invaild argument, size is null!");
333 
334     return Camera_Manager::GetSupportedSceneModes(camera, sceneModes, size);
335 }
336 
OH_CameraManager_DeleteSceneModes(Camera_Manager* cameraManager, Camera_SceneMode* sceneModes)337 Camera_ErrorCode OH_CameraManager_DeleteSceneModes(Camera_Manager* cameraManager, Camera_SceneMode* sceneModes)
338 {
339     MEDIA_DEBUG_LOG("OH_CameraManager_DeleteSceneModes is called.");
340     CHECK_AND_RETURN_RET_LOG(cameraManager != nullptr, CAMERA_INVALID_ARGUMENT,
341         "Invaild argument, cameraManager is null!");
342     CHECK_AND_RETURN_RET_LOG(sceneModes != nullptr, CAMERA_INVALID_ARGUMENT,
343         "Invaild argument, sceneModes is null!");
344 
345     return cameraManager->DeleteSceneModes(sceneModes);
346 }
347 
348 /**
349  * @since 12
350  * @version 1.0
351  */
OH_CameraManager_IsTorchSupported(Camera_Manager* cameraManager, bool* isTorchSupported)352 Camera_ErrorCode OH_CameraManager_IsTorchSupported(Camera_Manager* cameraManager,
353     bool* isTorchSupported)
354 {
355     CHECK_AND_RETURN_RET_LOG(cameraManager != nullptr, CAMERA_INVALID_ARGUMENT,
356         "Invaild argument, cameraManager is null!");
357     CHECK_AND_RETURN_RET_LOG(isTorchSupported != nullptr, CAMERA_INVALID_ARGUMENT,
358         "Invaild argument, isTorchSupported is null!");
359 
360     return cameraManager->IsTorchSupported(isTorchSupported);
361 }
362 
363 /**
364  * @since 12
365  * @version 1.0
366  */
OH_CameraManager_IsTorchSupportedByTorchMode(Camera_Manager* cameraManager, Camera_TorchMode torchMode, bool* isTorchSupported)367 Camera_ErrorCode OH_CameraManager_IsTorchSupportedByTorchMode(Camera_Manager* cameraManager,
368     Camera_TorchMode torchMode, bool* isTorchSupported)
369 {
370     CHECK_AND_RETURN_RET_LOG(cameraManager != nullptr, CAMERA_INVALID_ARGUMENT,
371         "Invaild argument, cameraManager is null");
372     CHECK_AND_RETURN_RET_LOG(isTorchSupported != nullptr, CAMERA_INVALID_ARGUMENT,
373         "Invaild argument, isTorchSupported is null");
374 
375     return cameraManager->IsTorchSupportedByTorchMode(torchMode, isTorchSupported);
376 }
377 
378 /**
379  * @since 12
380  * @version 1.0
381  */
OH_CameraManager_SetTorchMode(Camera_Manager* cameraManager, Camera_TorchMode torchMode)382 Camera_ErrorCode OH_CameraManager_SetTorchMode(Camera_Manager* cameraManager, Camera_TorchMode torchMode)
383 {
384     CHECK_AND_RETURN_RET_LOG(cameraManager != nullptr, CAMERA_INVALID_ARGUMENT,
385         "Invaild argument, cameraManager is null!");
386 
387     return cameraManager->SetTorchMode(torchMode);
388 }
389 
OH_CameraManager_RegisterFoldStatusInfoCallback(Camera_Manager* cameraManager, OH_CameraManager_OnFoldStatusInfoChange foldStatusInfoCallback)390 Camera_ErrorCode OH_CameraManager_RegisterFoldStatusInfoCallback(Camera_Manager* cameraManager,
391     OH_CameraManager_OnFoldStatusInfoChange foldStatusInfoCallback)
392 {
393     CHECK_AND_RETURN_RET_LOG(cameraManager != nullptr, CAMERA_INVALID_ARGUMENT,
394         "Invaild argument, cameraManager is null!");
395     CHECK_AND_RETURN_RET_LOG(foldStatusInfoCallback != nullptr, CAMERA_INVALID_ARGUMENT,
396         "Invaild argument, callback is null!");
397     cameraManager->RegisterFoldStatusCallback(foldStatusInfoCallback);
398     return CAMERA_OK;
399 }
400 
OH_CameraManager_UnregisterFoldStatusInfoCallback(Camera_Manager* cameraManager, OH_CameraManager_OnFoldStatusInfoChange foldStatusInfoCallback)401 Camera_ErrorCode OH_CameraManager_UnregisterFoldStatusInfoCallback(Camera_Manager* cameraManager,
402     OH_CameraManager_OnFoldStatusInfoChange foldStatusInfoCallback)
403 {
404     CHECK_AND_RETURN_RET_LOG(cameraManager != nullptr, CAMERA_INVALID_ARGUMENT,
405         "Invaild argument, cameraManager is null!");
406     CHECK_AND_RETURN_RET_LOG(foldStatusInfoCallback != nullptr, CAMERA_INVALID_ARGUMENT,
407         "Invaild argument, callback is null!");
408     cameraManager->UnregisterFoldStatusCallback(foldStatusInfoCallback);
409     return CAMERA_OK;
410 }
411 
412 #ifdef __cplusplus
413 }
414 #endif