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