1 /* 2 * Copyright (c) 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 #ifndef CAMERA_MANAGER_ADAPTER_H 17 #define CAMERA_MANAGER_ADAPTER_H 18 19 #include <memory> 20 #include <string> 21 #include <vector> 22 23 namespace OHOS::NWeb { 24 25 enum class CameraErrorType : int32_t { 26 CAMERA_NOT_CLOSE, 27 INPUT_ALREADY_INIT, 28 CAMERA_MANAGER_IS_NULL, 29 GET_CAMERA_OBJ_FAILED, 30 CREATE_INPUT_FAILED, 31 INPUT_OPEN_FAILED, 32 INPUT_NOT_INIT, 33 CREATE_PREVIEW_SURFACE_FAILED, 34 CREATE_PREVIEW_OUTPUT_FAILED, 35 CREATE_CAPTURE_SESSION_FAILED, 36 ADD_INPUT_FAILED, 37 ADD_OUTPUT_FAILED, 38 COMMIT_CONFIG_FAILED, 39 START_SESSION_FAILED, 40 INPUT_OR_OUTPUT_IS_NULL, 41 }; 42 43 enum class VideoTransportType : int32_t { 44 VIDEO_TRANS_TYPE_BUILD_IN, 45 VIDEO_TRANS_TYPE_USB, 46 VIDEO_TRANS_TYPE_REMOTE, 47 VIDEO_TRANS_TYPE_OTHER 48 }; 49 50 enum class VideoFacingModeAdapter : int32_t { FACING_NONE = 0, FACING_USER, FACING_ENVIRONMENT, NUM_FACING_MODES }; 51 52 enum class VideoPixelFormatAdapter : int32_t { 53 FORMAT_RGBA_8888, 54 FORMAT_YCBCR_420_888, 55 FORMAT_YUV_420_SP, 56 FORMAT_JPEG, 57 FORMAT_UNKNOWN 58 }; 59 60 enum class ExposureModeAdapter : int32_t { 61 EXPOSURE_MODE_UNSUPPORTED = -1, 62 EXPOSURE_MODE_LOCKED = 0, 63 EXPOSURE_MODE_AUTO, 64 EXPOSURE_MODE_CONTINUOUS_AUTO 65 }; 66 67 enum class FocusModeAdapter : int32_t { 68 FOCUS_MODE_MANUAL = 0, 69 FOCUS_MODE_CONTINUOUS_AUTO, 70 FOCUS_MODE_AUTO, 71 FOCUS_MODE_LOCKED, 72 }; 73 74 enum class FlashModeAdapter : int32_t { 75 FLASH_MODE_CLOSE = 0, 76 FLASH_MODE_OPEN, 77 FLASH_MODE_AUTO, 78 FLASH_MODE_ALWAYS_OPEN, 79 }; 80 81 enum class RangeIDAdapter : int32_t { 82 RANGE_ID_EXP_COMPENSATION, 83 }; 84 85 enum class CameraStopType : int32_t { TO_BACK = 0, NORMAL }; 86 87 enum class CameraStatusAdapter : int32_t { 88 APPEAR = 0, 89 DISAPPEAR, 90 AVAILABLE, 91 UNAVAILABLE, 92 }; 93 94 enum CameraManagerAdapterCode : int32_t { 95 CAMERA_OK = 0, 96 CAMERA_ERROR = -1, 97 CAMERA_NULL_ERROR = -2, 98 }; 99 100 class VideoControlSupportAdapter { 101 public: 102 VideoControlSupportAdapter() = default; 103 104 virtual ~VideoControlSupportAdapter() = default; 105 106 virtual bool GetPan() = 0; 107 108 virtual bool GetTilt() = 0; 109 110 virtual bool GetZoom() = 0; 111 }; 112 113 class FormatAdapter { 114 public: 115 FormatAdapter() = default; 116 117 virtual ~FormatAdapter() = default; 118 119 virtual uint32_t GetWidth() = 0; 120 121 virtual uint32_t GetHeight() = 0; 122 123 virtual float GetFrameRate() = 0; 124 125 virtual VideoPixelFormatAdapter GetPixelFormat() = 0; 126 }; 127 128 class VideoDeviceDescriptorAdapter { 129 public: 130 VideoDeviceDescriptorAdapter() = default; 131 132 virtual ~VideoDeviceDescriptorAdapter() = default; 133 134 virtual std::string GetDisplayName() = 0; 135 136 virtual std::string GetDeviceId() = 0; 137 138 virtual std::string GetModelId() = 0; 139 140 virtual std::shared_ptr<VideoControlSupportAdapter> GetControlSupport() = 0; 141 142 virtual VideoTransportType GetTransportType() = 0; 143 144 virtual VideoFacingModeAdapter GetFacingMode() = 0; 145 146 virtual std::vector<std::shared_ptr<FormatAdapter>> GetSupportCaptureFormats() = 0; 147 }; 148 149 class VideoCaptureParamsAdapter { 150 public: 151 VideoCaptureParamsAdapter() = default; 152 153 virtual ~VideoCaptureParamsAdapter() = default; 154 155 virtual uint32_t GetWidth() = 0; 156 157 virtual uint32_t GetHeight() = 0; 158 159 virtual float GetFrameRate() = 0; 160 161 virtual VideoPixelFormatAdapter GetPixelFormat() = 0; 162 163 virtual bool GetEnableFaceDetection() = 0; 164 }; 165 166 class VideoCaptureRangeAdapter { 167 public: 168 VideoCaptureRangeAdapter() = default; 169 170 virtual ~VideoCaptureRangeAdapter() = default; 171 172 virtual double GetMin() = 0; 173 174 virtual double GetMax() = 0; 175 176 virtual double GetStep() = 0; 177 178 virtual double GetCurrent() = 0; 179 }; 180 181 class CameraRotationInfoAdapter { 182 public: 183 CameraRotationInfoAdapter() = default; 184 185 virtual ~CameraRotationInfoAdapter() = default; 186 187 virtual int32_t GetRotation() = 0; 188 189 virtual bool GetIsFlipX() = 0; 190 191 virtual bool GetIsFlipY() = 0; 192 }; 193 194 class CameraSurfaceBufferAdapter { 195 public: 196 CameraSurfaceBufferAdapter() = default; 197 198 virtual ~CameraSurfaceBufferAdapter() = default; 199 200 virtual int32_t GetFileDescriptor() = 0; 201 202 virtual int32_t GetWidth() = 0; 203 204 virtual int32_t GetHeight() = 0; 205 206 virtual int32_t GetStride() = 0; 207 208 virtual int32_t GetFormat() = 0; 209 210 virtual uint32_t GetSize() = 0; 211 212 virtual uint8_t* GetBufferAddr() = 0; 213 214 protected: 215 CameraSurfaceBufferAdapter(const CameraSurfaceBufferAdapter&) = delete; 216 217 CameraSurfaceBufferAdapter& operator=(const CameraSurfaceBufferAdapter&) = delete; 218 }; 219 220 class CameraSurfaceAdapter { 221 public: 222 CameraSurfaceAdapter() = default; 223 224 virtual ~CameraSurfaceAdapter() = default; 225 226 virtual int32_t ReleaseBuffer(std::shared_ptr<CameraSurfaceBufferAdapter> buffer, int32_t fence) = 0; 227 }; 228 229 class CameraBufferListenerAdapter { 230 public: 231 virtual ~CameraBufferListenerAdapter() = default; 232 233 virtual void OnBufferAvailable(std::shared_ptr<CameraSurfaceAdapter> surface, 234 std::shared_ptr<CameraSurfaceBufferAdapter> buffer, 235 std::shared_ptr<CameraRotationInfoAdapter> rotationInfo) = 0; 236 }; 237 238 class CameraStatusCallbackAdapter { 239 public: 240 virtual ~CameraStatusCallbackAdapter() = default; 241 242 virtual void OnCameraStatusChanged(CameraStatusAdapter cameraStatusAdapter, const std::string callBackDeviceId) = 0; 243 }; 244 245 class CameraManagerAdapter { 246 public: 247 CameraManagerAdapter() = default; 248 249 virtual ~CameraManagerAdapter() = default; 250 251 virtual int32_t Create(std::shared_ptr<CameraStatusCallbackAdapter> cameraStatusCallback) = 0; 252 253 virtual std::vector<std::shared_ptr<VideoDeviceDescriptorAdapter>> GetDevicesInfo() = 0; 254 255 virtual int32_t ReleaseCameraManger() = 0; 256 257 virtual int32_t GetExposureModes(std::vector<ExposureModeAdapter>& exposureModesAdapter) = 0; 258 259 virtual int32_t GetCurrentExposureMode(ExposureModeAdapter& exposureModeAdapter) = 0; 260 261 virtual std::shared_ptr<VideoCaptureRangeAdapter> GetCaptionRangeById(RangeIDAdapter rangeId) = 0; 262 263 virtual bool IsFocusModeSupported(FocusModeAdapter focusMode) = 0; 264 265 virtual FocusModeAdapter GetCurrentFocusMode() = 0; 266 267 virtual bool IsFlashModeSupported(FlashModeAdapter flashMode) = 0; 268 269 virtual int32_t RestartSession() = 0; 270 271 virtual int32_t StopSession(CameraStopType stopType) = 0; 272 273 virtual CameraStatusAdapter GetCameraStatus() = 0; 274 275 virtual bool IsExistCaptureTask() = 0; 276 277 virtual int32_t StartStream(const std::string& deviceId, 278 const std::shared_ptr<VideoCaptureParamsAdapter> captureParams, 279 std::shared_ptr<CameraBufferListenerAdapter> listener) = 0; 280 281 virtual void SetForegroundFlag(bool isForeground) = 0; 282 283 virtual void SetCameraStatus(CameraStatusAdapter status) = 0; 284 285 virtual std::string GetCurrentDeviceId() = 0; 286 }; 287 288 } // namespace OHOS::NWeb 289 290 #endif // CAMERA_MANAGER_ADAPTER_H 291