• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_RETURN_RET_ELOG(cameraManager == nullptr, CAMERA_INVALID_ARGUMENT,
28         "lnvalid 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_RETURN_RET_ELOG(cameraManager == nullptr, CAMERA_INVALID_ARGUMENT,
36         "lnvalid 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_RETURN_RET_ELOG(cameraManager == nullptr, CAMERA_INVALID_ARGUMENT,
44         "lnvalid argument, cameraManager is null!");
45     CHECK_RETURN_RET_ELOG(callback == nullptr, CAMERA_INVALID_ARGUMENT,
46         "lnvalid argument, callback is null!");
47     CHECK_RETURN_RET_ELOG(callback->onCameraStatus == nullptr,
48         CAMERA_INVALID_ARGUMENT, "lnvalid 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_RETURN_RET_ELOG(cameraManager == nullptr, CAMERA_INVALID_ARGUMENT,
57         "lnvalid argument, cameraManager is null!");
58     CHECK_RETURN_RET_ELOG(callback == nullptr, CAMERA_INVALID_ARGUMENT,
59         "lnvalid argument, callback is null!");
60     CHECK_RETURN_RET_ELOG(callback->onCameraStatus == nullptr,
61         CAMERA_INVALID_ARGUMENT, "lnvalid 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_RETURN_RET_ELOG(cameraManager == nullptr, CAMERA_INVALID_ARGUMENT,
71         "lnvalid argument, cameraManager is null!");
72     CHECK_RETURN_RET_ELOG(torchStatusCallback == nullptr, CAMERA_INVALID_ARGUMENT,
73         "lnvalid 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_RETURN_RET_ELOG(cameraManager == nullptr, CAMERA_INVALID_ARGUMENT,
82         "lnvalid argument, cameraManager is null!");
83     CHECK_RETURN_RET_ELOG(torchStatusCallback == nullptr, CAMERA_INVALID_ARGUMENT,
84         "lnvalid 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_RETURN_RET_ELOG(cameraManager == nullptr, CAMERA_INVALID_ARGUMENT,
93         "lnvalid argument, cameraManager is null!");
94     CHECK_RETURN_RET_ELOG(cameras == nullptr, CAMERA_INVALID_ARGUMENT,
95         "lnvalid argument, cameras is null!");
96     CHECK_RETURN_RET_ELOG(size == nullptr, CAMERA_INVALID_ARGUMENT,
97         "lnvalid 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_RETURN_RET_ELOG(cameraManager == nullptr, CAMERA_INVALID_ARGUMENT,
106         "lnvalid argument, cameraManager is null!");
107     CHECK_RETURN_RET_ELOG(cameras == nullptr, CAMERA_INVALID_ARGUMENT,
108         "lnvalid argument, cameras is null!");
109     uint32_t sizeMax = 0;
110     cameraManager->GetSupportedCameras(&cameras, &sizeMax);
111     CHECK_RETURN_RET_ELOG(size > sizeMax, CAMERA_INVALID_ARGUMENT,
112         "lnvalid argument,size is lnvalid");
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_RETURN_RET_ELOG(cameraManager == nullptr, CAMERA_INVALID_ARGUMENT,
121         "lnvalid argument, cameraManager is null!");
122     CHECK_RETURN_RET_ELOG(cameraOutputCapability == nullptr, CAMERA_INVALID_ARGUMENT,
123         "lnvalid argument, cameraOutputCapability is null!");
124     CHECK_RETURN_RET_ELOG(camera == nullptr, CAMERA_INVALID_ARGUMENT,
125         "lnvalid argument,camera is null!");
126     CHECK_RETURN_RET_ELOG(camera->cameraId == nullptr, CAMERA_INVALID_ARGUMENT,
127         "lnvalid argument,cameraId is null!");
128 
129     return cameraManager->GetSupportedCameraOutputCapability(camera, cameraOutputCapability);
130 }
131 
OH_CameraManager_GetSupportedCameraOutputCapabilityWithSceneMode(Camera_Manager * cameraManager,const Camera_Device * camera,Camera_SceneMode sceneMode,Camera_OutputCapability ** cameraOutputCapability)132 Camera_ErrorCode OH_CameraManager_GetSupportedCameraOutputCapabilityWithSceneMode(Camera_Manager* cameraManager,
133     const Camera_Device* camera, Camera_SceneMode sceneMode, Camera_OutputCapability** cameraOutputCapability)
134 {
135     MEDIA_DEBUG_LOG("OH_CameraManager_GetSupportedCameraOutputCapabilityWithSceneMode is called.");
136     CHECK_RETURN_RET_ELOG(cameraManager == nullptr, CAMERA_INVALID_ARGUMENT,
137         "lnvalid argument, cameraManager is null!");
138     CHECK_RETURN_RET_ELOG(camera == nullptr, CAMERA_INVALID_ARGUMENT,
139         "lnvalid argument, camera is null!");
140     CHECK_RETURN_RET_ELOG(cameraOutputCapability == nullptr, CAMERA_INVALID_ARGUMENT,
141         "lnvalid argument, cameraOutputCapability is null!");
142     CHECK_RETURN_RET_ELOG(camera->cameraId == nullptr, CAMERA_INVALID_ARGUMENT,
143         "lnvalid argument,cameraId is null!");
144 
145     return cameraManager->GetSupportedCameraOutputCapabilityWithSceneMode(camera, sceneMode, cameraOutputCapability);
146 }
147 
OH_CameraManager_DeleteSupportedCameraOutputCapability(Camera_Manager * cameraManager,Camera_OutputCapability * cameraOutputCapability)148 Camera_ErrorCode OH_CameraManager_DeleteSupportedCameraOutputCapability(Camera_Manager* cameraManager,
149     Camera_OutputCapability* cameraOutputCapability)
150 {
151     CHECK_RETURN_RET_ELOG(cameraManager == nullptr, CAMERA_INVALID_ARGUMENT,
152         "lnvalid argument, cameraManager is null!");
153     CHECK_RETURN_RET_ELOG(cameraOutputCapability == nullptr, CAMERA_INVALID_ARGUMENT,
154         "lnvalid argument, cameraOutputCapability is null!");
155 
156     return cameraManager->DeleteSupportedCameraOutputCapability(cameraOutputCapability);
157 }
158 
OH_CameraManager_IsCameraMuted(Camera_Manager * cameraManager,bool * isCameraMuted)159 Camera_ErrorCode OH_CameraManager_IsCameraMuted(Camera_Manager* cameraManager, bool* isCameraMuted)
160 {
161     MEDIA_DEBUG_LOG("OH_CameraManager_IsCameraMuted is called");
162     CHECK_RETURN_RET_ELOG(cameraManager == nullptr, CAMERA_INVALID_ARGUMENT,
163         "lnvalid argument, cameraManager is null!");
164 
165     return cameraManager->IsCameraMuted(isCameraMuted);
166 }
167 
OH_CameraManager_CreateCaptureSession(Camera_Manager * cameraManager,Camera_CaptureSession ** captureSession)168 Camera_ErrorCode OH_CameraManager_CreateCaptureSession(Camera_Manager* cameraManager,
169     Camera_CaptureSession** captureSession)
170 {
171     CHECK_RETURN_RET_ELOG(cameraManager == nullptr, CAMERA_INVALID_ARGUMENT,
172         "lnvalid argument, cameraManager is null!");
173     CHECK_RETURN_RET_ELOG(captureSession == nullptr, CAMERA_INVALID_ARGUMENT,
174         "lnvalid argument, captureSession is null!");
175 
176     return cameraManager->CreateCaptureSession(captureSession);
177 }
178 
OH_CameraManager_CreateCameraInput(Camera_Manager * cameraManager,const Camera_Device * camera,Camera_Input ** cameraInput)179 Camera_ErrorCode OH_CameraManager_CreateCameraInput(Camera_Manager* cameraManager,
180     const Camera_Device* camera, Camera_Input** cameraInput)
181 {
182     CHECK_RETURN_RET_ELOG(cameraManager == nullptr, CAMERA_INVALID_ARGUMENT,
183         "lnvalid argument, cameraManager is null!");
184     CHECK_RETURN_RET_ELOG(camera == nullptr, CAMERA_INVALID_ARGUMENT,
185         "lnvalid argument, cameraDevice is null!");
186     CHECK_RETURN_RET_ELOG(cameraInput == nullptr, CAMERA_INVALID_ARGUMENT,
187         "lnvalid argument, cameraInput is null!");
188 
189     return cameraManager->CreateCameraInput(camera, cameraInput);
190 }
191 
OH_CameraManager_CreateCameraInput_WithPositionAndType(Camera_Manager * cameraManager,Camera_Position position,Camera_Type type,Camera_Input ** cameraInput)192 Camera_ErrorCode OH_CameraManager_CreateCameraInput_WithPositionAndType(Camera_Manager* cameraManager,
193     Camera_Position position, Camera_Type type, Camera_Input** cameraInput)
194 {
195     MEDIA_DEBUG_LOG("OH_CameraManager_CreateCameraInput_WithPositionAndType is called");
196     CHECK_RETURN_RET_ELOG(cameraManager == nullptr, CAMERA_INVALID_ARGUMENT,
197         "lnvalid argument, cameraManager is null!");
198     CHECK_RETURN_RET_ELOG(cameraInput == nullptr, CAMERA_INVALID_ARGUMENT,
199         "lnvalid argument, cameraInput is null!");
200     return cameraManager->CreateCameraInputWithPositionAndType(position, type, cameraInput);
201 }
202 
OH_CameraManager_CreatePreviewOutput(Camera_Manager * cameraManager,const Camera_Profile * profile,const char * surfaceId,Camera_PreviewOutput ** previewOutput)203 Camera_ErrorCode OH_CameraManager_CreatePreviewOutput(Camera_Manager* cameraManager, const Camera_Profile* profile,
204     const char* surfaceId, Camera_PreviewOutput** previewOutput)
205 {
206     CHECK_RETURN_RET_ELOG(cameraManager == nullptr, CAMERA_INVALID_ARGUMENT,
207         "lnvalid argument, cameraManager is null!");
208     CHECK_RETURN_RET_ELOG(profile == nullptr, CAMERA_INVALID_ARGUMENT,
209         "lnvalid argument, profile is null!");
210     CHECK_RETURN_RET_ELOG(surfaceId == nullptr, CAMERA_INVALID_ARGUMENT,
211         "lnvalid argument, surfaceId is null!");
212     CHECK_RETURN_RET_ELOG(previewOutput == nullptr, CAMERA_INVALID_ARGUMENT,
213         "lnvalid argument, previewOutput is null!");
214 
215     return cameraManager->CreatePreviewOutput(profile, surfaceId, previewOutput);
216 }
217 
OH_CameraManager_CreatePreviewOutputUsedInPreconfig(Camera_Manager * cameraManager,const char * surfaceId,Camera_PreviewOutput ** previewOutput)218 Camera_ErrorCode OH_CameraManager_CreatePreviewOutputUsedInPreconfig(Camera_Manager* cameraManager,
219     const char* surfaceId, Camera_PreviewOutput** previewOutput)
220 {
221     MEDIA_DEBUG_LOG("OH_CameraManager_CreatePreviewOutputUsedInPreconfig is called.");
222     CHECK_RETURN_RET_ELOG(cameraManager == nullptr, CAMERA_INVALID_ARGUMENT,
223         "lnvalid argument, cameraManager is null!");
224     CHECK_RETURN_RET_ELOG(surfaceId == nullptr, CAMERA_INVALID_ARGUMENT,
225         "lnvalid argument, surfaceId is null!");
226     CHECK_RETURN_RET_ELOG(previewOutput == nullptr, CAMERA_INVALID_ARGUMENT,
227         "lnvalid argument, previewOutput is null!");
228 
229     return cameraManager->CreatePreviewOutputUsedInPreconfig(surfaceId, previewOutput);
230 }
231 
OH_CameraManager_CreatePhotoOutput(Camera_Manager * cameraManager,const Camera_Profile * profile,const char * surfaceId,Camera_PhotoOutput ** photoOutput)232 Camera_ErrorCode OH_CameraManager_CreatePhotoOutput(Camera_Manager* cameraManager, const Camera_Profile* profile,
233     const char* surfaceId, Camera_PhotoOutput** photoOutput)
234 {
235     MEDIA_DEBUG_LOG("OH_CameraManager_CreatePhotoOutput is called");
236     CHECK_RETURN_RET_ELOG(cameraManager == nullptr, CAMERA_INVALID_ARGUMENT,
237         "lnvalid argument, cameraManager is null!");
238     CHECK_RETURN_RET_ELOG(profile == nullptr, CAMERA_INVALID_ARGUMENT,
239         "lnvalid argument, profile is null!");
240     CHECK_RETURN_RET_ELOG(surfaceId == nullptr, CAMERA_INVALID_ARGUMENT,
241         "lnvalid argument, surfaceId is null!");
242     CHECK_RETURN_RET_ELOG(photoOutput == nullptr, CAMERA_INVALID_ARGUMENT,
243         "lnvalid argument, photoOutput is null!");
244 
245     return cameraManager->CreatePhotoOutput(profile, surfaceId, photoOutput);
246 }
247 
OH_CameraManager_CreatePhotoOutputWithoutSurface(Camera_Manager * cameraManager,const Camera_Profile * profile,Camera_PhotoOutput ** photoOutput)248 Camera_ErrorCode OH_CameraManager_CreatePhotoOutputWithoutSurface(Camera_Manager* cameraManager,
249     const Camera_Profile* profile, Camera_PhotoOutput** photoOutput)
250 {
251     MEDIA_DEBUG_LOG("OH_CameraManager_CreatePhotoOutputWithoutSurface is called");
252     CHECK_RETURN_RET_ELOG(cameraManager == nullptr, CAMERA_INVALID_ARGUMENT,
253         "lnvalid argument, cameraManager is null!");
254     CHECK_RETURN_RET_ELOG(profile == nullptr, CAMERA_INVALID_ARGUMENT,
255         "lnvalid argument, profile is null!");
256     CHECK_RETURN_RET_ELOG(photoOutput == nullptr, CAMERA_INVALID_ARGUMENT,
257         "lnvalid argument, photoOutput is null!");
258 
259     return cameraManager->CreatePhotoOutputWithoutSurface(profile, photoOutput);
260 }
261 
OH_CameraManager_CreatePhotoOutputUsedInPreconfig(Camera_Manager * cameraManager,const char * surfaceId,Camera_PhotoOutput ** photoOutput)262 Camera_ErrorCode OH_CameraManager_CreatePhotoOutputUsedInPreconfig(Camera_Manager* cameraManager,
263     const char* surfaceId, Camera_PhotoOutput** photoOutput)
264 {
265     MEDIA_DEBUG_LOG("OH_CameraManager_CreatePhotoOutputUsedInPreconfig is called.");
266     CHECK_RETURN_RET_ELOG(cameraManager == nullptr, CAMERA_INVALID_ARGUMENT,
267         "lnvalid argument, cameraManager is null!");
268     CHECK_RETURN_RET_ELOG(surfaceId == nullptr, CAMERA_INVALID_ARGUMENT,
269         "lnvalid argument, surfaceId is null!");
270     CHECK_RETURN_RET_ELOG(photoOutput == nullptr, CAMERA_INVALID_ARGUMENT,
271         "lnvalid argument, photoOutput is null!");
272 
273     return cameraManager->CreatePhotoOutputUsedInPreconfig(surfaceId, photoOutput);
274 }
275 
OH_CameraManager_CreateVideoOutput(Camera_Manager * cameraManager,const Camera_VideoProfile * profile,const char * surfaceId,Camera_VideoOutput ** videoOutput)276 Camera_ErrorCode OH_CameraManager_CreateVideoOutput(Camera_Manager* cameraManager, const Camera_VideoProfile* profile,
277     const char* surfaceId, Camera_VideoOutput** videoOutput)
278 {
279     CHECK_RETURN_RET_ELOG(cameraManager == nullptr, CAMERA_INVALID_ARGUMENT,
280         "lnvalid argument, cameraManager is null!");
281     CHECK_RETURN_RET_ELOG(profile == nullptr, CAMERA_INVALID_ARGUMENT,
282         "lnvalid argument, profile is null!");
283     CHECK_RETURN_RET_ELOG(surfaceId == nullptr, CAMERA_INVALID_ARGUMENT,
284         "lnvalid argument, surfaceId is null!");
285     CHECK_RETURN_RET_ELOG(videoOutput == nullptr, CAMERA_INVALID_ARGUMENT,
286         "lnvalid argument, videoOutput is null!");
287 
288     return cameraManager->CreateVideoOutput(profile, surfaceId, videoOutput);
289 }
290 
OH_CameraManager_CreateVideoOutputUsedInPreconfig(Camera_Manager * cameraManager,const char * surfaceId,Camera_VideoOutput ** videoOutput)291 Camera_ErrorCode OH_CameraManager_CreateVideoOutputUsedInPreconfig(Camera_Manager* cameraManager,
292     const char* surfaceId, Camera_VideoOutput** videoOutput)
293 {
294     MEDIA_DEBUG_LOG("OH_CameraManager_CreateVideoOutputUsedInPreconfig is called.");
295     CHECK_RETURN_RET_ELOG(cameraManager == nullptr, CAMERA_INVALID_ARGUMENT,
296         "lnvalid argument, cameraManager is null!");
297     CHECK_RETURN_RET_ELOG(surfaceId == nullptr, CAMERA_INVALID_ARGUMENT,
298         "lnvalid argument, surfaceId is null!");
299     CHECK_RETURN_RET_ELOG(videoOutput == nullptr, CAMERA_INVALID_ARGUMENT,
300         "lnvalid argument, videoOutput is null!");
301 
302     return cameraManager->CreateVideoOutputUsedInPreconfig(surfaceId, videoOutput);
303 }
304 
OH_CameraManager_CreateMetadataOutput(Camera_Manager * cameraManager,const Camera_MetadataObjectType * type,Camera_MetadataOutput ** metadataOutput)305 Camera_ErrorCode OH_CameraManager_CreateMetadataOutput(Camera_Manager* cameraManager,
306     const Camera_MetadataObjectType* type, Camera_MetadataOutput** metadataOutput)
307 {
308     CHECK_RETURN_RET_ELOG(cameraManager == nullptr, CAMERA_INVALID_ARGUMENT,
309         "lnvalid argument, cameraManager is null!");
310     CHECK_RETURN_RET_ELOG(type == nullptr, CAMERA_INVALID_ARGUMENT,
311         "lnvalid argument, type is null!");
312     CHECK_RETURN_RET_ELOG(metadataOutput == nullptr, CAMERA_INVALID_ARGUMENT,
313         "lnvalid argument, metadataOutput is null!");
314 
315     return cameraManager->CreateMetadataOutput(type, metadataOutput);
316 }
317 
OH_CameraDevice_GetCameraOrientation(Camera_Device * camera,uint32_t * orientation)318 Camera_ErrorCode OH_CameraDevice_GetCameraOrientation(Camera_Device* camera, uint32_t* orientation)
319 {
320     CHECK_RETURN_RET_ELOG(camera == nullptr, CAMERA_INVALID_ARGUMENT,
321         "lnvalid argument, cameraDevice is null!");
322     CHECK_RETURN_RET_ELOG(orientation == nullptr, CAMERA_INVALID_ARGUMENT,
323         "lnvalid argument, orientation is null!");
324     return Camera_Manager::GetCameraOrientation(camera, orientation);
325 }
326 
OH_CameraDevice_GetHostDeviceName(Camera_Device * camera,char ** hostDeviceName)327 Camera_ErrorCode OH_CameraDevice_GetHostDeviceName(Camera_Device* camera, char** hostDeviceName)
328 {
329     CHECK_RETURN_RET_ELOG(camera == nullptr, CAMERA_INVALID_ARGUMENT,
330         "lnvalid argument, cameraDevice is null!");
331     CHECK_RETURN_RET_ELOG(hostDeviceName == nullptr, CAMERA_INVALID_ARGUMENT,
332         "lnvalid argument, hostDeviceName is null!");
333     return Camera_Manager::GetHostDeviceName(camera, hostDeviceName);
334 }
335 
OH_CameraDevice_GetHostDeviceType(Camera_Device * camera,Camera_HostDeviceType * hostDeviceType)336 Camera_ErrorCode OH_CameraDevice_GetHostDeviceType(Camera_Device* camera, Camera_HostDeviceType* hostDeviceType)
337 {
338     CHECK_RETURN_RET_ELOG(camera == nullptr, CAMERA_INVALID_ARGUMENT,
339         "lnvalid argument, cameraDevice is null!");
340     CHECK_RETURN_RET_ELOG(hostDeviceType == nullptr, CAMERA_INVALID_ARGUMENT,
341         "lnvalid argument, hostDeviceType is null!");
342     return Camera_Manager::GetHostDeviceType(camera, hostDeviceType);
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_RETURN_RET_ELOG(camera == nullptr, CAMERA_INVALID_ARGUMENT,
350         "lnvalid argument, camera is null!");
351     CHECK_RETURN_RET_ELOG(sceneModes == nullptr, CAMERA_INVALID_ARGUMENT,
352         "lnvalid argument, sceneModes is null!");
353     CHECK_RETURN_RET_ELOG(size == nullptr, CAMERA_INVALID_ARGUMENT,
354         "lnvalid 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_RETURN_RET_ELOG(cameraManager == nullptr, CAMERA_INVALID_ARGUMENT,
363         "lnvalid argument, cameraManager is null!");
364     CHECK_RETURN_RET_ELOG(sceneModes == nullptr, CAMERA_INVALID_ARGUMENT,
365         "lnvalid 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_RETURN_RET_ELOG(cameraManager == nullptr, CAMERA_INVALID_ARGUMENT,
378         "lnvalid argument, cameraManager is null!");
379     CHECK_RETURN_RET_ELOG(isTorchSupported == nullptr, CAMERA_INVALID_ARGUMENT,
380         "lnvalid 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_RETURN_RET_ELOG(cameraManager == nullptr, CAMERA_INVALID_ARGUMENT,
393         "lnvalid argument, cameraManager is null");
394     CHECK_RETURN_RET_ELOG(isTorchSupported == nullptr, CAMERA_INVALID_ARGUMENT,
395         "lnvalid 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_RETURN_RET_ELOG(cameraManager == nullptr, CAMERA_INVALID_ARGUMENT,
407         "lnvalid argument, cameraManager is null!");
408 
409     return cameraManager->SetTorchMode(torchMode);
410 }
411 
OH_CameraManager_RegisterFoldStatusInfoCallback(Camera_Manager * cameraManager,OH_CameraManager_OnFoldStatusInfoChange foldStatusInfoCallback)412 Camera_ErrorCode OH_CameraManager_RegisterFoldStatusInfoCallback(Camera_Manager* cameraManager,
413     OH_CameraManager_OnFoldStatusInfoChange foldStatusInfoCallback)
414 {
415     CHECK_RETURN_RET_ELOG(cameraManager == nullptr, CAMERA_INVALID_ARGUMENT,
416         "lnvalid argument, cameraManager is null!");
417     CHECK_RETURN_RET_ELOG(foldStatusInfoCallback == nullptr, CAMERA_INVALID_ARGUMENT,
418         "lnvalid argument, callback is null!");
419     cameraManager->RegisterFoldStatusCallback(foldStatusInfoCallback);
420     return CAMERA_OK;
421 }
422 
OH_CameraManager_UnregisterFoldStatusInfoCallback(Camera_Manager * cameraManager,OH_CameraManager_OnFoldStatusInfoChange foldStatusInfoCallback)423 Camera_ErrorCode OH_CameraManager_UnregisterFoldStatusInfoCallback(Camera_Manager* cameraManager,
424     OH_CameraManager_OnFoldStatusInfoChange foldStatusInfoCallback)
425 {
426     CHECK_RETURN_RET_ELOG(cameraManager == nullptr, CAMERA_INVALID_ARGUMENT,
427         "lnvalid argument, cameraManager is null!");
428     CHECK_RETURN_RET_ELOG(foldStatusInfoCallback == nullptr, CAMERA_INVALID_ARGUMENT,
429         "lnvalid argument, callback is null!");
430     cameraManager->UnregisterFoldStatusCallback(foldStatusInfoCallback);
431     return CAMERA_OK;
432 }
433 
434 /**
435  * @since 16
436  * @version 1.0
437  */
OH_CameraManager_GetCameraDevice(Camera_Manager * cameraManager,Camera_Position position,Camera_Type type,Camera_Device * camera)438 Camera_ErrorCode OH_CameraManager_GetCameraDevice(Camera_Manager *cameraManager, Camera_Position position,
439                                                   Camera_Type type, Camera_Device *camera)
440 {
441     CHECK_RETURN_RET_ELOG(cameraManager == nullptr, CAMERA_INVALID_ARGUMENT,
442         "Invalid argument, cameraManager is null!");
443     return cameraManager->GetCameraDevice(position, type, camera);
444 }
445 
446 /**
447  * @since 16
448  * @version 1.0
449  */
OH_CameraManager_GetCameraConcurrentInfos(Camera_Manager * cameraManager,const Camera_Device * camera,uint32_t deviceSize,Camera_ConcurrentInfo ** CameraConcurrentInfo,uint32_t * infoSize)450 Camera_ErrorCode OH_CameraManager_GetCameraConcurrentInfos(Camera_Manager *cameraManager, const Camera_Device *camera,
451                                                            uint32_t deviceSize,
452                                                            Camera_ConcurrentInfo **CameraConcurrentInfo,
453                                                            uint32_t *infoSize)
454 {
455     CHECK_RETURN_RET_ELOG(cameraManager == nullptr, CAMERA_INVALID_ARGUMENT,
456         "Invalid argument, cameraManager is null!");
457     CHECK_RETURN_RET_ELOG(camera == nullptr, CAMERA_INVALID_ARGUMENT,
458         "lnvalid argument, cameraDevice is null!");
459     return cameraManager->GetCameraConcurrentInfos(camera, deviceSize, CameraConcurrentInfo, infoSize);
460 }
461 #ifdef __cplusplus
462 }
463 #endif