• 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 #ifndef CAMERA_FFI_H
17 #define CAMERA_FFI_H
18 
19 #include <cstdint>
20 #include "camera_input_impl.h"
21 #include "camera_log.h"
22 #include "camera_manager_impl.h"
23 #include "camera_output_impl.h"
24 #include "camera_session_impl.h"
25 #include "camera_utils.h"
26 #include "capture_session.h"
27 #include "cj_common_ffi.h"
28 #include "ffi_remote_data.h"
29 #include "metadata_output_impl.h"
30 #include "photo_output_impl.h"
31 #include "preview_output_impl.h"
32 #include "video_output_impl.h"
33 
34 namespace OHOS {
35 namespace CameraStandard {
36 
37 extern "C" {
38 // CameraManager
39 FFI_EXPORT int64_t FfiCameraManagerConstructor();
40 FFI_EXPORT CArrI32 FfiCameraManagerGetSupportedSceneModes(int64_t id, CJCameraDevice cameraDevice, int32_t *errCode);
41 FFI_EXPORT CArrCJCameraDevice FfiCameraManagerGetSupportedCameras(int64_t id, int32_t *errCode);
42 FFI_EXPORT CJCameraOutputCapability FfiCameraManagerGetSupportedOutputCapability(int64_t id,
43                                                                                  CJCameraDevice cameraDevice,
44                                                                                  int32_t modeType, int32_t *errCode);
45 FFI_EXPORT bool FfiCameraManagerIsCameraMuted();
46 FFI_EXPORT int64_t FfiCameraManagerCreateCameraInputWithCameraDevice(int64_t id, CJCameraDevice cameraDevice,
47                                                                      int32_t *errCode);
48 FFI_EXPORT int64_t FfiCameraManagerCreateCameraInputWithCameraDeviceInfo(int64_t id, int32_t cameraPosition,
49                                                                          int32_t cameraType, int32_t *errCode);
50 FFI_EXPORT int64_t FfiCameraManagerCreatePreviewOutput(CJProfile profile, const char *surfaceId, int32_t *errCode);
51 FFI_EXPORT int64_t FfiCameraManagerCreatePreviewOutputWithoutProfile(const char *surfaceId, int32_t *errCode);
52 FFI_EXPORT int64_t FfiCameraManagerCreatePhotoOutput(int32_t *errCode);
53 FFI_EXPORT int64_t FfiCameraManagerCreatePhotoOutputWithProfile(CJProfile profile, int32_t *errCode);
54 FFI_EXPORT int64_t FfiCameraManagerCreateVideoOutput(CJVideoProfile profile, char *surfaceId, int32_t *errCode);
55 FFI_EXPORT int64_t FfiCameraManagerCreateVideoOutputWithOutProfile(char *surfaceId, int32_t *errCode);
56 FFI_EXPORT int64_t FfiCameraManagerCreateMetadataOutput(CArrI32 metadataObjectTypes, int32_t *errCode);
57 FFI_EXPORT int64_t FfiCameraManagerCreateSession(int32_t mode, int32_t *errCode);
58 FFI_EXPORT bool FfiCameraManagerIsTorchSupported();
59 FFI_EXPORT bool FfiCameraManagerIsTorchModeSupported(int32_t modeType);
60 FFI_EXPORT int32_t FfiCameraManagerGetTorchMode();
61 FFI_EXPORT int32_t FfiCameraManagerSetTorchMode(int32_t modeType);
62 FFI_EXPORT int32_t FfiCameraManagerOnCameraStatusChanged(int64_t id, int64_t callbackId);
63 FFI_EXPORT int32_t FfiCameraManagerOffCameraStatusChanged(int64_t id, int64_t callbackId);
64 FFI_EXPORT int32_t FfiCameraManagerOffAllCameraStatusChanged(int64_t id);
65 FFI_EXPORT int32_t FfiCameraManagerOnFoldStatusChanged(int64_t id, int64_t callbackId);
66 FFI_EXPORT int32_t FfiCameraManagerOffFoldStatusChanged(int64_t id, int64_t callbackId);
67 FFI_EXPORT int32_t FfiCameraManagerOffAllFoldStatusChanged(int64_t id);
68 FFI_EXPORT int32_t FfiCameraManagerOnTorchStatusChange(int64_t id, int64_t callbackId);
69 FFI_EXPORT int32_t FfiCameraManagerOffTorchStatusChange(int64_t id, int64_t callbackId);
70 FFI_EXPORT int32_t FfiCameraManagerOffAllTorchStatusChange(int64_t id);
71 
72 // CameraInput
73 FFI_EXPORT int32_t FfiCameraInputOpen(int64_t id);
74 FFI_EXPORT int32_t FfiCameraInputOpenWithIsEnableSecureCamera(int64_t id, bool isEnableSecureCamera,
75                                                               uint64_t *secureSeqId);
76 FFI_EXPORT int32_t FfiCameraInputClose(int64_t id);
77 FFI_EXPORT int32_t FfiCameraInputOnError(int64_t id, int64_t callbackId);
78 FFI_EXPORT int32_t FfiCameraInputOffError(int64_t id, int64_t callbackId);
79 FFI_EXPORT int32_t FfiCameraInputOffAllError(int64_t id);
80 
81 // PreviewOutput
82 FFI_EXPORT CArrFrameRateRange FfiCameraPreviewOutputGetSupportedFrameRates(int64_t id, int32_t *errCode);
83 FFI_EXPORT int32_t FfiCameraPreviewOutputSetFrameRate(int64_t id, int32_t min, int32_t max);
84 FFI_EXPORT FrameRateRange FfiCameraPreviewOutputGetActiveFrameRate(int64_t id, int32_t *errCode);
85 FFI_EXPORT CJProfile FfiCameraPreviewOutputGetActiveProfile(int64_t id, int32_t *errCode);
86 FFI_EXPORT int32_t FfiCameraPreviewOutputGetPreviewRotation(int64_t id, int32_t value, int32_t *errCode);
87 FFI_EXPORT int32_t FfiCameraPreviewOutputSetPreviewRotation(int64_t id, int32_t imageRotation, bool isDisplayLocked);
88 FFI_EXPORT int32_t FfiCameraPreviewOutputOnFrameStart(int64_t id, int64_t callbackId);
89 FFI_EXPORT int32_t FfiCameraPreviewOutputOnFrameEnd(int64_t id, int64_t callbackId);
90 FFI_EXPORT int32_t FfiCameraPreviewOutputOnError(int64_t id, int64_t callbackId);
91 FFI_EXPORT int32_t FfiCameraPreviewOutputOffFrameStart(int64_t id, int64_t callbackId);
92 FFI_EXPORT int32_t FfiCameraPreviewOutputOffFrameEnd(int64_t id, int64_t callbackId);
93 FFI_EXPORT int32_t FfiCameraPreviewOutputOffError(int64_t id, int64_t callbackId);
94 FFI_EXPORT int32_t FfiCameraPreviewOutputOffAllFrameStart(int64_t id);
95 FFI_EXPORT int32_t FfiCameraPreviewOutputOffAllFrameEnd(int64_t id);
96 FFI_EXPORT int32_t FfiCameraPreviewOutputOffAllError(int64_t id);
97 FFI_EXPORT int32_t FfiCameraPreviewOutputRelease(int64_t id);
98 
99 // PhotoOutput
100 FFI_EXPORT int32_t FfiCameraPhotoOutputCapture(int64_t id);
101 FFI_EXPORT int32_t FfiCameraPhotoOutputCaptureWithSetting(int64_t id, CJPhotoCaptureSetting setting);
102 FFI_EXPORT bool FfiCameraPhotoOutputIsMovingPhotoSupported(int64_t id, int32_t *errCode);
103 FFI_EXPORT int32_t FfiCameraPhotoOutputEnableMovingPhoto(int64_t id, bool enabled);
104 FFI_EXPORT bool FfiCameraPhotoOutputIsMirrorSupported(int64_t id, int32_t *errCode);
105 FFI_EXPORT int32_t FfiCameraPhotoOutputEnableMirror(int64_t id, bool isMirror);
106 FFI_EXPORT int32_t FfiCameraPhotoOutputSetMovingPhotoVideoCodecType(int64_t id, int32_t codecType);
107 FFI_EXPORT CJProfile FfiCameraPhotoOutputGetActiveProfile(int64_t id, int32_t *errCode);
108 FFI_EXPORT int32_t FfiCameraPhotoOutputGetPhotoRotation(int64_t id, int32_t deviceDegree, int32_t *errCode);
109 FFI_EXPORT int32_t FfiCameraPhotoOutputOnCaptureStartWithInfo(int64_t id, int64_t callbackId);
110 FFI_EXPORT int32_t FfiCameraPhotoOutputOffCaptureStartWithInfo(int64_t id, int64_t callbackId);
111 FFI_EXPORT int32_t FfiCameraPhotoOutputOffAllCaptureStartWithInfo(int64_t id);
112 FFI_EXPORT int32_t FfiCameraPhotoOutputOnFrameShutter(int64_t id, int64_t callbackId);
113 FFI_EXPORT int32_t FfiCameraPhotoOutputOffFrameShutter(int64_t id, int64_t callbackId);
114 FFI_EXPORT int32_t FfiCameraPhotoOutputOffAllFrameShutter(int64_t id);
115 FFI_EXPORT int32_t FfiCameraPhotoOutputOnCaptureEnd(int64_t id, int64_t callbackId);
116 FFI_EXPORT int32_t FfiCameraPhotoOutputOffCaptureEnd(int64_t id, int64_t callbackId);
117 FFI_EXPORT int32_t FfiCameraPhotoOutputOffAllCaptureEnd(int64_t id);
118 FFI_EXPORT int32_t FfiCameraPhotoOutputOnFrameShutterEnd(int64_t id, int64_t callbackId);
119 FFI_EXPORT int32_t FfiCameraPhotoOutputOffFrameShutterEnd(int64_t id, int64_t callbackId);
120 FFI_EXPORT int32_t FfiCameraPhotoOutputOffAllFrameShutterEnd(int64_t id);
121 FFI_EXPORT int32_t FfiCameraPhotoOutputOnCaptureReady(int64_t id, int64_t callbackId);
122 FFI_EXPORT int32_t FfiCameraPhotoOutputOffCaptureReady(int64_t id, int64_t callbackId);
123 FFI_EXPORT int32_t FfiCameraPhotoOutputOffAllCaptureReady(int64_t id);
124 FFI_EXPORT int32_t FfiCameraPhotoOutputOnEstimatedCaptureDuration(int64_t id, int64_t callbackId);
125 FFI_EXPORT int32_t FfiCameraPhotoOutputOffEstimatedCaptureDuration(int64_t id, int64_t callbackId);
126 FFI_EXPORT int32_t FfiCameraPhotoOutputOffAllEstimatedCaptureDuration(int64_t id);
127 FFI_EXPORT int32_t FfiCameraPhotoOutputOnError(int64_t id, int64_t callbackId);
128 FFI_EXPORT int32_t FfiCameraPhotoOutputOffError(int64_t id, int64_t callbackId);
129 FFI_EXPORT int32_t FfiCameraPhotoOutputOffAllError(int64_t id);
130 FFI_EXPORT int32_t FfiCameraPhotoOutputRelease(int64_t id);
131 
132 // videooutput
133 FFI_EXPORT int32_t FfiCameraVideoOutputStart(int64_t id);
134 FFI_EXPORT int32_t FfiCameraVideoOutputStop(int64_t id);
135 FFI_EXPORT CArrFrameRateRange FfiCameraVideoOutputGetSupportedFrameRates(int64_t id, int32_t *errCode);
136 FFI_EXPORT int32_t FfiCameraVideoOutputSetFrameRate(int64_t id, int32_t minFps, int32_t maxFps);
137 FFI_EXPORT FrameRateRange FfiCameraVideoOutputGetActiveFrameRate(int64_t id, int32_t *errCode);
138 FFI_EXPORT CJVideoProfile FfiCameraVideoOutputGetActiveProfile(int64_t id, int32_t *errCode);
139 FFI_EXPORT int32_t FfiCameraVideoOutputGetVideoRotation(int64_t id, int32_t imageRotation, int32_t *errCode);
140 FFI_EXPORT int32_t FfiCameraVideoOutputOnFrameStart(int64_t id, int64_t callbackId);
141 FFI_EXPORT int32_t FfiCameraVideoOutputOffFrameStart(int64_t id, int64_t callbackId);
142 FFI_EXPORT int32_t FfiCameraVideoOutputOffAllFrameStart(int64_t id);
143 FFI_EXPORT int32_t FfiCameraVideoOutputOnFrameEnd(int64_t id, int64_t callbackId);
144 FFI_EXPORT int32_t FfiCameraVideoOutputOffFrameEnd(int64_t id, int64_t callbackId);
145 FFI_EXPORT int32_t FfiCameraVideoOutputOffAllFrameEnd(int64_t id);
146 FFI_EXPORT int32_t FfiCameraVideoOutputOnError(int64_t id, int64_t callbackId);
147 FFI_EXPORT int32_t FfiCameraVideoOutputOffError(int64_t id, int64_t callbackId);
148 FFI_EXPORT int32_t FfiCameraVideoOutputOffAllError(int64_t id);
149 FFI_EXPORT int32_t FfiCameraVideoOutputRelease(int64_t id);
150 
151 // MetadataOutput
152 FFI_EXPORT int32_t FfiCameraMetadataOutputStart(int64_t id);
153 FFI_EXPORT int32_t FfiCameraMetadataOutputStop(int64_t id);
154 FFI_EXPORT int32_t FfiCameraMetadataOutputOnMetadataObjectsAvailable(int64_t id, int64_t callbackId);
155 FFI_EXPORT int32_t FfiCameraMetadataOutputOffMetadataObjectsAvailable(int64_t id, int64_t callbackId);
156 FFI_EXPORT int32_t FfiCameraMetadataOutputOffAllMetadataObjectsAvailable(int64_t id);
157 FFI_EXPORT int32_t FfiCameraMetadataOutputOnError(int64_t id, int64_t callbackId);
158 FFI_EXPORT int32_t FfiCameraMetadataOutputOffError(int64_t id, int64_t callbackId);
159 FFI_EXPORT int32_t FfiCameraMetadataOutputOffAllError(int64_t id);
160 FFI_EXPORT int32_t FfiCameraMetadataOutputRelease(int64_t id);
161 
162 // Session
163 FFI_EXPORT int32_t FfiCameraSessionBeginConfig(int64_t id);
164 FFI_EXPORT int32_t FfiCameraSessionCommitConfig(int64_t id);
165 FFI_EXPORT bool FfiCameraSessionCanAddInput(int64_t id, int64_t cameraInputId, int32_t *errCode);
166 FFI_EXPORT int32_t FfiCameraSessionAddInput(int64_t id, int64_t cameraInputId);
167 FFI_EXPORT int32_t FfiCameraSessionRemoveInput(int64_t id, int64_t cameraInputId);
168 FFI_EXPORT bool FfiCameraSessionCanAddOutput(int64_t id, int64_t cameraOutputId, int32_t outputType, int32_t *errCode);
169 FFI_EXPORT int32_t FfiCameraSessionAddOutput(int64_t id, int64_t cameraOutputId, int32_t outputType);
170 FFI_EXPORT int32_t FfiCameraSessionRemoveOutput(int64_t id, int64_t cameraOutputId, int32_t outputType);
171 FFI_EXPORT int32_t FfiCameraSessionStart(int64_t id);
172 FFI_EXPORT int32_t FfiCameraSessionStop(int64_t id);
173 FFI_EXPORT int32_t FfiCameraSessionRelease(int64_t id);
174 FFI_EXPORT bool FfiCameraSessionCanPreconfig(int64_t id, int32_t preconfigType, int32_t preconfigRatio,
175                                              int32_t *errCode);
176 FFI_EXPORT void FfiCameraSessionPreconfig(int64_t id, int32_t preconfigType, int32_t preconfigRatio, int32_t *errCode);
177 FFI_EXPORT void FfiCameraSessionAddSecureOutput(int64_t id, int64_t cameraOutputId, int32_t *errCode);
178 FFI_EXPORT void FfiCameraOnError(int64_t id, int64_t callbackId, int32_t *errCode);
179 FFI_EXPORT void FfiCameraOffError(int64_t id, int64_t callbackId, int32_t *errCode);
180 FFI_EXPORT void FfiCameraOffAllError(int64_t id, int32_t *errCode);
181 FFI_EXPORT void FfiCameraOnFocusStateChange(int64_t id, int64_t callbackId, int32_t *errCode);
182 FFI_EXPORT void FfiCameraOffFocusStateChange(int64_t id, int64_t callbackId, int32_t *errCode);
183 FFI_EXPORT void FfiCameraOffAllFocusStateChange(int64_t id, int32_t *errCode);
184 FFI_EXPORT void FfiCameraOnSmoothZoomInfoAvailable(int64_t id, int64_t callbackId, int32_t *errCode);
185 FFI_EXPORT void FfiCameraOffSmoothZoomInfoAvailable(int64_t id, int64_t callbackId, int32_t *errCode);
186 FFI_EXPORT void FfiCameraOffAllSmoothZoomInfoAvailable(int64_t id, int32_t *errCode);
187 
188 // abilities
189 // auto exposure
190 FFI_EXPORT bool FfiCameraAutoExposureIsExposureModeSupported(int64_t id, int32_t aeMode, int32_t *errCode);
191 FFI_EXPORT CArrFloat32 FfiCameraAutoExposureGetExposureBiasRange(int64_t id, int32_t *errCode);
192 FFI_EXPORT int32_t FfiCameraAutoExposureGetExposureMode(int64_t id, int32_t *errCode);
193 FFI_EXPORT void FfiCameraAutoExposureSetExposureMode(int64_t id, int32_t aeMode, int32_t *errCode);
194 FFI_EXPORT Point FfiCameraAutoExposureGetMeteringPoint(int64_t id, int32_t *errCode);
195 FFI_EXPORT void FfiCameraAutoExposureSetMeteringPoint(int64_t id, Point point, int32_t *errCode);
196 FFI_EXPORT void FfiCameraAutoExposureSetExposureBias(int64_t id, float exposureBias, int32_t *errCode);
197 FFI_EXPORT float FfiCameraAutoExposureGetExposureValue(int64_t id, int32_t *errCode);
198 
199 // color management
200 FFI_EXPORT CArrI32 FfiCameraColorManagementGetSupportedColorSpaces(int64_t id, int32_t *errCode);
201 FFI_EXPORT void FfiCameraColorManagementSetColorSpace(int64_t id, int32_t colorSpace, int32_t *errCode);
202 FFI_EXPORT int32_t FfiCameraColorManagementGetActiveColorSpace(int64_t id, int32_t *errCode);
203 
204 // flash
205 FFI_EXPORT bool FfiCameraFlashQueryFlashModeSupported(int64_t id, int32_t focusMode, int32_t *errCode);
206 FFI_EXPORT bool FfiCameraFlashQueryHasFlash(int64_t id, int32_t *errCode);
207 FFI_EXPORT int32_t FfiCameraFlashGetFlashMode(int64_t id, int32_t *errCode);
208 FFI_EXPORT void FfiCameraFlashSetFlashMode(int64_t id, int32_t flashMode, int32_t *errCode);
209 
210 // focus
211 FFI_EXPORT bool FfiCameraFocusIsFocusModeSupported(int64_t id, int32_t afMode, int32_t *errCode);
212 FFI_EXPORT void FfiCameraFocusSetFocusMode(int64_t id, int32_t afMode, int32_t *errCode);
213 FFI_EXPORT int32_t FfiCameraFocusGetFocusMode(int64_t id, int32_t *errCode);
214 FFI_EXPORT void FfiCameraFocusSetFocusPoint(int64_t id, Point point, int32_t *errCode);
215 FFI_EXPORT Point FfiCameraFocusGetFocusPoint(int64_t id, int32_t *errCode);
216 FFI_EXPORT float FfiCameraFocusGetFocalLength(int64_t id, int32_t *errCode);
217 
218 // stabilization
219 FFI_EXPORT bool FfiCameraStabilizationIsVideoStabilizationModeSupported(int64_t id, int32_t vsMode, int32_t *errCode);
220 FFI_EXPORT int32_t FfiCameraStabilizationGetActiveVideoStabilizationMode(int64_t id, int32_t *errCode);
221 FFI_EXPORT void FfiCameraStabilizationSetVideoStabilizationMode(int64_t id, int32_t vsMode, int32_t *errCode);
222 
223 // zoom
224 FFI_EXPORT CArrFloat32 FfiCameraZoomGetZoomRatioRange(int64_t id, int32_t *errCode);
225 FFI_EXPORT void FfiCameraZoomSetZoomRatio(int64_t id, float zoomRatio, int32_t *errCode);
226 FFI_EXPORT float FfiCameraZoomGetZoomRatio(int64_t id, int32_t *errCode);
227 FFI_EXPORT void FfiCameraZoomSetSmoothZoom(int64_t id, float targetRatio, int32_t mode, int32_t *errCode);
228 }
229 } // namespace CameraStandard
230 } // namespace OHOS
231 #endif