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/metadata_output.h"
17 #include "impl/metadata_output_impl.h"
18 #include "camera_log.h"
19 #include "hilog/log.h"
20 
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24 
25 /**
26  * @since 11
27  * @version 1.0
28  */
OH_MetadataOutput_RegisterCallback(Camera_MetadataOutput * metadataOutput,MetadataOutput_Callbacks * callback)29 Camera_ErrorCode OH_MetadataOutput_RegisterCallback(Camera_MetadataOutput* metadataOutput,
30     MetadataOutput_Callbacks* callback)
31 {
32     CHECK_AND_RETURN_RET_LOG(metadataOutput != nullptr, CAMERA_INVALID_ARGUMENT,
33         "Invaild argument, metadataOutput is null!");
34     CHECK_AND_RETURN_RET_LOG(callback != nullptr, CAMERA_INVALID_ARGUMENT,
35         "Invaild argument, callback is null!");
36     CHECK_AND_RETURN_RET_LOG(callback->onMetadataObjectAvailable!= nullptr, CAMERA_INVALID_ARGUMENT,
37         "Invaild argument, callback onMetadataObjectAvailable is null!");
38     CHECK_AND_RETURN_RET_LOG(callback->onError!= nullptr, CAMERA_INVALID_ARGUMENT,
39         "Invaild argument, callback onError is null!");
40 
41     metadataOutput->RegisterCallback(callback);
42     return CAMERA_OK;
43 }
44 
45 /**
46  * @since 11
47  * @version 1.0
48  */
OH_MetadataOutput_UnregisterCallback(Camera_MetadataOutput * metadataOutput,MetadataOutput_Callbacks * callback)49 Camera_ErrorCode OH_MetadataOutput_UnregisterCallback(Camera_MetadataOutput* metadataOutput,
50     MetadataOutput_Callbacks* callback)
51 {
52     CHECK_AND_RETURN_RET_LOG(metadataOutput != nullptr, CAMERA_INVALID_ARGUMENT,
53         "Invaild argument, previewOutput is null!");
54     CHECK_AND_RETURN_RET_LOG(callback != nullptr, CAMERA_INVALID_ARGUMENT,
55         "Invaild argument, callback is null!");
56     CHECK_AND_RETURN_RET_LOG(callback->onMetadataObjectAvailable!= nullptr, CAMERA_INVALID_ARGUMENT,
57         "Invaild argument, callback onMetadataObjectAvailable is null!");
58     CHECK_AND_RETURN_RET_LOG(callback->onError!= nullptr, CAMERA_INVALID_ARGUMENT,
59         "Invaild argument, callback onError is null!");
60 
61     metadataOutput->UnregisterCallback(callback);
62     return CAMERA_OK;
63 }
64 
65 /**
66  * @since 11
67  * @version 1.0
68  */
OH_MetadataOutput_Start(Camera_MetadataOutput * metadataOutput)69 Camera_ErrorCode OH_MetadataOutput_Start(Camera_MetadataOutput* metadataOutput)
70 {
71     CHECK_AND_RETURN_RET_LOG(metadataOutput != nullptr, CAMERA_INVALID_ARGUMENT,
72         "Invaild argument, metadataOutput is null!");
73 
74     return metadataOutput->Start();
75 }
76 
77 /**
78  * @since 11
79  * @version 1.0
80  */
OH_MetadataOutput_Stop(Camera_MetadataOutput * metadataOutput)81 Camera_ErrorCode OH_MetadataOutput_Stop(Camera_MetadataOutput* metadataOutput)
82 {
83     CHECK_AND_RETURN_RET_LOG(metadataOutput != nullptr, CAMERA_INVALID_ARGUMENT,
84         "Invaild argument, metadataOutput is null!");
85 
86     return metadataOutput->Stop();
87 }
88 
89 /**
90  * @since 11
91  * @version 1.0
92  */
OH_MetadataOutput_Release(Camera_MetadataOutput * metadataOutput)93 Camera_ErrorCode OH_MetadataOutput_Release(Camera_MetadataOutput* metadataOutput)
94 {
95     CHECK_AND_RETURN_RET_LOG(metadataOutput != nullptr, CAMERA_INVALID_ARGUMENT,
96         "Invaild argument, metadataOutput is null!");
97 
98     Camera_ErrorCode retCode = metadataOutput->Release();
99     if (metadataOutput != nullptr) {
100         delete metadataOutput;
101     }
102     return retCode;
103 }
104 #ifdef __cplusplus
105 }
106 #endif