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