1 /* 2 * Copyright (c) 2021-2022 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_SESSION_NAPI_H_ 17 #define CAMERA_SESSION_NAPI_H_ 18 19 #include <memory> 20 #include <mutex> 21 #include <type_traits> 22 #include <unordered_map> 23 #include <unordered_set> 24 #include "ability/camera_ability_napi.h" 25 #include "camera_napi_utils.h" 26 #include "capture_scene_const.h" 27 #include "input/camera_device.h" 28 #include "input/camera_input_napi.h" 29 #include "input/camera_manager.h" 30 #include "listener_base.h" 31 #include "output/depth_data_output_napi.h" 32 #include "output/metadata_output_napi.h" 33 #include "output/preview_output_napi.h" 34 #include "output/video_output_napi.h" 35 #include "session/capture_session.h" 36 37 namespace OHOS { 38 namespace CameraStandard { 39 static const char CAMERA_SESSION_NAPI_CLASS_NAME[] = "CaptureSession"; 40 41 class ExposureCallbackListener : public ExposureCallback, public ListenerBase { 42 public: ExposureCallbackListener(napi_env env)43 ExposureCallbackListener(napi_env env) : ListenerBase(env) {} 44 ~ExposureCallbackListener() = default; 45 void OnExposureState(const ExposureState state) override; 46 47 private: 48 void OnExposureStateCallback(ExposureState state) const; 49 void OnExposureStateCallbackAsync(ExposureState state) const; 50 }; 51 52 struct ExposureCallbackInfo { 53 ExposureCallback::ExposureState state_; 54 const ExposureCallbackListener* listener_; ExposureCallbackInfoExposureCallbackInfo55 ExposureCallbackInfo(ExposureCallback::ExposureState state, const ExposureCallbackListener* listener) 56 : state_(state), listener_(listener) {} 57 }; 58 59 class FocusCallbackListener : public FocusCallback, public ListenerBase { 60 public: FocusCallbackListener(napi_env env)61 FocusCallbackListener(napi_env env) : ListenerBase(env) 62 { 63 currentState = FocusState::UNFOCUSED; 64 } 65 ~FocusCallbackListener() = default; 66 void OnFocusState(FocusState state) override; 67 68 private: 69 void OnFocusStateCallback(FocusState state) const; 70 void OnFocusStateCallbackAsync(FocusState state) const; 71 }; 72 73 struct FocusCallbackInfo { 74 FocusCallback::FocusState state_; 75 const FocusCallbackListener* listener_; FocusCallbackInfoFocusCallbackInfo76 FocusCallbackInfo(FocusCallback::FocusState state, const FocusCallbackListener* listener) 77 : state_(state), listener_(listener) {} 78 }; 79 80 class MacroStatusCallbackListener : public MacroStatusCallback, public ListenerBase { 81 public: MacroStatusCallbackListener(napi_env env)82 MacroStatusCallbackListener(napi_env env) : ListenerBase(env) {} 83 ~MacroStatusCallbackListener() = default; 84 void OnMacroStatusChanged(MacroStatus status) override; 85 86 private: 87 void OnMacroStatusCallback(MacroStatus status) const; 88 void OnMacroStatusCallbackAsync(MacroStatus status) const; 89 }; 90 91 struct MacroStatusCallbackInfo { 92 MacroStatusCallback::MacroStatus status_; 93 const MacroStatusCallbackListener* listener_; MacroStatusCallbackInfoMacroStatusCallbackInfo94 MacroStatusCallbackInfo(MacroStatusCallback::MacroStatus status, const MacroStatusCallbackListener* listener) 95 : status_(status), listener_(listener) 96 {} 97 }; 98 99 class MoonCaptureBoostCallbackListener : public MoonCaptureBoostStatusCallback, public ListenerBase { 100 public: MoonCaptureBoostCallbackListener(napi_env env)101 MoonCaptureBoostCallbackListener(napi_env env) : ListenerBase(env) {} 102 ~MoonCaptureBoostCallbackListener() = default; 103 void OnMoonCaptureBoostStatusChanged(MoonCaptureBoostStatus status) override; 104 105 private: 106 void OnMoonCaptureBoostStatusCallback(MoonCaptureBoostStatus status) const; 107 void OnMoonCaptureBoostStatusCallbackAsync(MoonCaptureBoostStatus status) const; 108 }; 109 110 struct MoonCaptureBoostStatusCallbackInfo { 111 MoonCaptureBoostStatusCallback::MoonCaptureBoostStatus status_; 112 const MoonCaptureBoostCallbackListener* listener_; MoonCaptureBoostStatusCallbackInfoMoonCaptureBoostStatusCallbackInfo113 MoonCaptureBoostStatusCallbackInfo( 114 MoonCaptureBoostStatusCallback::MoonCaptureBoostStatus status, const MoonCaptureBoostCallbackListener* listener) 115 : status_(status), listener_(listener) 116 {} 117 }; 118 119 class FeatureDetectionStatusCallbackListener : public FeatureDetectionStatusCallback, public ListenerBase { 120 public: FeatureDetectionStatusCallbackListener(napi_env env)121 FeatureDetectionStatusCallbackListener(napi_env env) : ListenerBase(env) {}; 122 ~FeatureDetectionStatusCallbackListener() = default; 123 void OnFeatureDetectionStatusChanged(SceneFeature feature, FeatureDetectionStatus status) override; 124 bool IsFeatureSubscribed(SceneFeature feature) override; 125 126 private: 127 void OnFeatureDetectionStatusChangedCallback(SceneFeature feature, FeatureDetectionStatus status) const; 128 void OnFeatureDetectionStatusChangedCallbackAsync(SceneFeature feature, FeatureDetectionStatus status) const; 129 }; 130 131 struct FeatureDetectionStatusCallbackInfo { 132 SceneFeature feature_; 133 FeatureDetectionStatusCallback::FeatureDetectionStatus status_; 134 const FeatureDetectionStatusCallbackListener* listener_; FeatureDetectionStatusCallbackInfoFeatureDetectionStatusCallbackInfo135 FeatureDetectionStatusCallbackInfo(SceneFeature feature, 136 FeatureDetectionStatusCallback::FeatureDetectionStatus status, 137 const FeatureDetectionStatusCallbackListener* listener) 138 : feature_(feature), status_(status), listener_(listener) 139 {} 140 }; 141 142 class SessionCallbackListener : public SessionCallback, public ListenerBase { 143 public: SessionCallbackListener(napi_env env)144 SessionCallbackListener(napi_env env) : ListenerBase(env) {} 145 ~SessionCallbackListener() = default; 146 void OnError(int32_t errorCode) override; 147 148 private: 149 void OnErrorCallback(int32_t errorCode) const; 150 void OnErrorCallbackAsync(int32_t errorCode) const; 151 }; 152 153 struct SessionCallbackInfo { 154 int32_t errorCode_; 155 const SessionCallbackListener* listener_; SessionCallbackInfoSessionCallbackInfo156 SessionCallbackInfo(int32_t errorCode, const SessionCallbackListener* listener) 157 : errorCode_(errorCode), listener_(listener) {} 158 }; 159 160 class SmoothZoomCallbackListener : public SmoothZoomCallback, public ListenerBase { 161 public: SmoothZoomCallbackListener(napi_env env)162 SmoothZoomCallbackListener(napi_env env) : ListenerBase(env) {} 163 ~SmoothZoomCallbackListener() = default; 164 void OnSmoothZoom(int32_t duration) override; 165 166 private: 167 void OnSmoothZoomCallback(int32_t duration) const; 168 void OnSmoothZoomCallbackAsync(int32_t duration) const; 169 }; 170 171 struct SmoothZoomCallbackInfo { 172 int32_t duration_; 173 const SmoothZoomCallbackListener* listener_; SmoothZoomCallbackInfoSmoothZoomCallbackInfo174 SmoothZoomCallbackInfo(int32_t duration, const SmoothZoomCallbackListener* listener) 175 : duration_(duration), listener_(listener) {} 176 }; 177 178 class AbilityCallbackListener : public AbilityCallback, public ListenerBase { 179 public: AbilityCallbackListener(napi_env env)180 AbilityCallbackListener(napi_env env) : ListenerBase(env) {} 181 ~AbilityCallbackListener() = default; 182 void OnAbilityChange() override; 183 184 private: 185 void OnAbilityChangeCallback() const; 186 void OnAbilityChangeCallbackAsync() const; 187 }; 188 189 struct AbilityCallbackInfo { 190 const AbilityCallbackListener* listener_; AbilityCallbackInfoAbilityCallbackInfo191 AbilityCallbackInfo(const AbilityCallbackListener* listener) : listener_(listener) {} 192 }; 193 194 class EffectSuggestionCallbackListener : public EffectSuggestionCallback, public ListenerBase { 195 public: EffectSuggestionCallbackListener(napi_env env)196 EffectSuggestionCallbackListener(napi_env env) : ListenerBase(env) {} 197 ~EffectSuggestionCallbackListener() = default; 198 void OnEffectSuggestionChange(EffectSuggestionType effectSuggestionType) override; 199 200 private: 201 void OnEffectSuggestionCallback(EffectSuggestionType effectSuggestionType) const; 202 void OnEffectSuggestionCallbackAsync(EffectSuggestionType effectSuggestionType) const; 203 }; 204 205 struct EffectSuggestionCallbackInfo { 206 EffectSuggestionType effectSuggestionType_; 207 const EffectSuggestionCallbackListener* listener_; EffectSuggestionCallbackInfoEffectSuggestionCallbackInfo208 EffectSuggestionCallbackInfo(EffectSuggestionType effectSuggestionType, 209 const EffectSuggestionCallbackListener* listener) 210 : effectSuggestionType_(effectSuggestionType), listener_(listener) {} 211 }; 212 213 class LcdFlashStatusCallbackListener : public LcdFlashStatusCallback, public ListenerBase { 214 public: LcdFlashStatusCallbackListener(napi_env env)215 LcdFlashStatusCallbackListener(napi_env env) : ListenerBase(env) {} 216 ~LcdFlashStatusCallbackListener() = default; 217 void OnLcdFlashStatusChanged(LcdFlashStatusInfo lcdFlashStatusInfo) override; 218 219 private: 220 void OnLcdFlashStatusCallback(LcdFlashStatusInfo lcdFlashStatusInfo) const; 221 void OnLcdFlashStatusCallbackAsync(LcdFlashStatusInfo lcdFlashStatusInfo) const; 222 }; 223 224 struct LcdFlashStatusStatusCallbackInfo { 225 LcdFlashStatusInfo lcdFlashStatusInfo_; 226 const LcdFlashStatusCallbackListener* listener_; LcdFlashStatusStatusCallbackInfoLcdFlashStatusStatusCallbackInfo227 LcdFlashStatusStatusCallbackInfo(LcdFlashStatusInfo lcdFlashStatusInfo, 228 const LcdFlashStatusCallbackListener* listener) 229 : lcdFlashStatusInfo_(lcdFlashStatusInfo), listener_(listener) {} 230 }; 231 232 class AutoDeviceSwitchCallbackListener : public AutoDeviceSwitchCallback, public ListenerBase { 233 public: AutoDeviceSwitchCallbackListener(napi_env env)234 AutoDeviceSwitchCallbackListener(napi_env env) : ListenerBase(env) {} 235 ~AutoDeviceSwitchCallbackListener() = default; 236 void OnAutoDeviceSwitchStatusChange(bool isDeviceSwitched, bool isDeviceCapabilityChanged) const override; 237 private: 238 void OnAutoDeviceSwitchCallback(bool isDeviceSwitched, bool isDeviceCapabilityChanged) const; 239 void OnAutoDeviceSwitchCallbackAsync(bool isDeviceSwitched, bool isDeviceCapabilityChanged) const; 240 }; 241 242 struct AutoDeviceSwitchCallbackListenerInfo { 243 bool isDeviceSwitched_; 244 bool isDeviceCapabilityChanged_; 245 const AutoDeviceSwitchCallbackListener* listener_; AutoDeviceSwitchCallbackListenerInfoAutoDeviceSwitchCallbackListenerInfo246 AutoDeviceSwitchCallbackListenerInfo(bool isDeviceSwitched, bool isDeviceCapabilityChanged, 247 const AutoDeviceSwitchCallbackListener* listener) 248 : isDeviceSwitched_(isDeviceSwitched), isDeviceCapabilityChanged_(isDeviceCapabilityChanged), 249 listener_(listener) {} 250 }; 251 252 class CameraSessionNapi : public CameraNapiEventEmitter<CameraSessionNapi> { 253 public: 254 static napi_value Init(napi_env env, napi_value exports); 255 static napi_value CreateCameraSession(napi_env env); 256 CameraSessionNapi(); 257 ~CameraSessionNapi() override; 258 259 static void CameraSessionNapiDestructor(napi_env env, void* nativeObject, void* finalize_hint); 260 static napi_value CameraSessionNapiConstructor(napi_env env, napi_callback_info info); 261 262 static napi_value HasFlash(napi_env env, napi_callback_info info); 263 static napi_value IsFlashModeSupported(napi_env env, napi_callback_info info); 264 static napi_value GetFlashMode(napi_env env, napi_callback_info info); 265 static napi_value SetFlashMode(napi_env env, napi_callback_info info); 266 static napi_value IsLcdFlashSupported(napi_env env, napi_callback_info info); 267 static napi_value EnableLcdFlash(napi_env env, napi_callback_info info); 268 static napi_value IsExposureModeSupported(napi_env env, napi_callback_info info); 269 static napi_value GetExposureMode(napi_env env, napi_callback_info info); 270 static napi_value SetExposureMode(napi_env env, napi_callback_info info); 271 static napi_value SetMeteringPoint(napi_env env, napi_callback_info info); 272 static napi_value GetMeteringPoint(napi_env env, napi_callback_info info); 273 static napi_value GetJSArgsForCameraOutput(napi_env env, size_t argc, const napi_value argv[], 274 sptr<CaptureOutput> &cameraOutput); 275 static napi_value GetExposureBiasRange(napi_env env, napi_callback_info info); 276 static napi_value SetExposureBias(napi_env env, napi_callback_info info); 277 static napi_value GetExposureValue(napi_env env, napi_callback_info info); 278 static napi_value IsFocusModeSupported(napi_env env, napi_callback_info info); 279 static napi_value GetFocusMode(napi_env env, napi_callback_info info); 280 static napi_value SetFocusMode(napi_env env, napi_callback_info info); 281 static napi_value SetQualityPrioritization(napi_env env, napi_callback_info info); 282 static napi_value SetFocusPoint(napi_env env, napi_callback_info info); 283 static napi_value GetFocusPoint(napi_env env, napi_callback_info info); 284 static napi_value GetFocalLength(napi_env env, napi_callback_info info); 285 static napi_value GetZoomRatioRange(napi_env env, napi_callback_info info); 286 static napi_value GetZoomRatio(napi_env env, napi_callback_info info); 287 static napi_value SetZoomRatio(napi_env env, napi_callback_info info); 288 static napi_value PrepareZoom(napi_env env, napi_callback_info info); 289 static napi_value UnPrepareZoom(napi_env env, napi_callback_info info); 290 static napi_value SetSmoothZoom(napi_env env, napi_callback_info info); 291 static napi_value GetZoomPointInfos(napi_env env, napi_callback_info info); 292 static napi_value GetSupportedFilters(napi_env env, napi_callback_info info); 293 static napi_value GetFilter(napi_env env, napi_callback_info info); 294 static napi_value SetFilter(napi_env env, napi_callback_info info); 295 static napi_value GetSupportedBeautyTypes(napi_env env, napi_callback_info info); 296 static napi_value GetSupportedBeautyRange(napi_env env, napi_callback_info info); 297 static napi_value GetBeauty(napi_env env, napi_callback_info info); 298 static napi_value SetBeauty(napi_env env, napi_callback_info info); 299 static napi_value GetSupportedPortraitThemeTypes(napi_env env, napi_callback_info info); 300 static napi_value IsPortraitThemeSupported(napi_env env, napi_callback_info info); 301 static napi_value SetPortraitThemeType(napi_env env, napi_callback_info info); 302 static napi_value GetSupportedColorSpaces(napi_env env, napi_callback_info info); 303 static napi_value GetActiveColorSpace(napi_env env, napi_callback_info info); 304 static napi_value SetColorSpace(napi_env env, napi_callback_info info); 305 static napi_value GetSupportedColorEffects(napi_env env, napi_callback_info info); 306 static napi_value GetColorEffect(napi_env env, napi_callback_info info); 307 static napi_value SetColorEffect(napi_env env, napi_callback_info info); 308 static napi_value GetFocusDistance(napi_env env, napi_callback_info info); 309 static napi_value SetFocusDistance(napi_env env, napi_callback_info info); 310 static napi_value IsMacroSupported(napi_env env, napi_callback_info info); 311 static napi_value EnableMacro(napi_env env, napi_callback_info info); 312 static napi_value IsDepthFusionSupported(napi_env env, napi_callback_info info); 313 static napi_value GetDepthFusionThreshold(napi_env env, napi_callback_info info); 314 static napi_value IsDepthFusionEnabled(napi_env env, napi_callback_info info); 315 static napi_value EnableDepthFusion(napi_env env, napi_callback_info info); 316 static napi_value CanPreconfig(napi_env env, napi_callback_info info); 317 static napi_value Preconfig(napi_env env, napi_callback_info info); 318 static napi_value IsEffectSuggestionSupported(napi_env env, napi_callback_info info); 319 static napi_value EnableEffectSuggestion(napi_env env, napi_callback_info info); 320 static napi_value GetSupportedEffectSuggestionType(napi_env env, napi_callback_info info); 321 static napi_value SetEffectSuggestionStatus(napi_env env, napi_callback_info info); 322 static napi_value UpdateEffectSuggestion(napi_env env, napi_callback_info info); 323 324 static napi_value IsMoonCaptureBoostSupported(napi_env env, napi_callback_info info); 325 static napi_value EnableMoonCaptureBoost(napi_env env, napi_callback_info info); 326 327 static napi_value IsFeatureSupported(napi_env env, napi_callback_info info); 328 static napi_value EnableFeature(napi_env env, napi_callback_info info); 329 330 static napi_value GetSupportedWhiteBalanceModes(napi_env env, napi_callback_info info); 331 static napi_value IsWhiteBalanceModeSupported(napi_env env, napi_callback_info info); 332 static napi_value GetWhiteBalanceMode(napi_env env, napi_callback_info info); 333 static napi_value SetWhiteBalanceMode(napi_env env, napi_callback_info info); 334 335 static napi_value GetManualWhiteBalanceRange(napi_env env, napi_callback_info info); 336 static napi_value IsManualWhiteBalanceSupported(napi_env env, napi_callback_info info); 337 static napi_value GetManualWhiteBalance(napi_env env, napi_callback_info info); 338 static napi_value SetManualWhiteBalance(napi_env env, napi_callback_info info); 339 340 static napi_value BeginConfig(napi_env env, napi_callback_info info); 341 static napi_value CommitConfig(napi_env env, napi_callback_info info); 342 343 static napi_value AddInput(napi_env env, napi_callback_info info); 344 static napi_value CanAddInput(napi_env env, napi_callback_info info); 345 static napi_value RemoveInput(napi_env env, napi_callback_info info); 346 347 static napi_value AddOutput(napi_env env, napi_callback_info info); 348 static napi_value CanAddOutput(napi_env env, napi_callback_info info); 349 static napi_value RemoveOutput(napi_env env, napi_callback_info info); 350 351 static napi_value Start(napi_env env, napi_callback_info info); 352 static napi_value Stop(napi_env env, napi_callback_info info); 353 static napi_value Release(napi_env env, napi_callback_info info); 354 static napi_value IsVideoStabilizationModeSupported(napi_env env, napi_callback_info info); 355 static napi_value GetActiveVideoStabilizationMode(napi_env env, napi_callback_info info); 356 static napi_value SetVideoStabilizationMode(napi_env env, napi_callback_info info); 357 358 static napi_value GetSupportedVirtualApertures(napi_env env, napi_callback_info info); 359 static napi_value GetVirtualAperture(napi_env env, napi_callback_info info); 360 static napi_value SetVirtualAperture(napi_env env, napi_callback_info info); 361 362 static napi_value GetSupportedPhysicalApertures(napi_env env, napi_callback_info info); 363 static napi_value GetPhysicalAperture(napi_env env, napi_callback_info info); 364 static napi_value SetPhysicalAperture(napi_env env, napi_callback_info info); 365 366 static napi_value LockForControl(napi_env env, napi_callback_info info); 367 static napi_value UnlockForControl(napi_env env, napi_callback_info info); 368 369 static napi_value On(napi_env env, napi_callback_info info); 370 static napi_value Once(napi_env env, napi_callback_info info); 371 static napi_value Off(napi_env env, napi_callback_info info); 372 373 static napi_value GetCameraOutputCapabilities(napi_env env, napi_callback_info info); 374 375 static napi_value GetSessionFunctions(napi_env env, napi_callback_info info); 376 static napi_value GetSessionConflictFunctions(napi_env env, napi_callback_info info); 377 static napi_value CreateFunctionsJSArray( 378 napi_env env, std::vector<sptr<CameraAbility>> functionsList, FunctionsType type); 379 const EmitterFunctions& GetEmitterFunctions() override; 380 static napi_value IsAutoDeviceSwitchSupported(napi_env env, napi_callback_info info); 381 static napi_value EnableAutoDeviceSwitch(napi_env env, napi_callback_info info); 382 static napi_value SetUsage(napi_env env, napi_callback_info info); 383 384 napi_env env_; 385 sptr<CaptureSession> cameraSession_; 386 std::shared_ptr<FocusCallbackListener> focusCallback_; 387 std::shared_ptr<SessionCallbackListener> sessionCallback_; 388 std::shared_ptr<ExposureCallbackListener> exposureCallback_; 389 std::shared_ptr<MacroStatusCallbackListener> macroStatusCallback_; 390 std::shared_ptr<MoonCaptureBoostCallbackListener> moonCaptureBoostCallback_; 391 std::shared_ptr<FeatureDetectionStatusCallbackListener> featureDetectionStatusCallback_; 392 std::shared_ptr<SmoothZoomCallbackListener> smoothZoomCallback_; 393 std::shared_ptr<AbilityCallbackListener> abilityCallback_; 394 std::shared_ptr<EffectSuggestionCallbackListener> effectSuggestionCallback_; 395 std::shared_ptr<LcdFlashStatusCallbackListener> lcdFlashStatusCallback_; 396 std::shared_ptr<AutoDeviceSwitchCallbackListener> autoDeviceSwitchCallback_; 397 398 static thread_local napi_ref sConstructor_; 399 static thread_local sptr<CaptureSession> sCameraSession_; 400 static thread_local uint32_t cameraSessionTaskId; 401 static const std::map<SceneMode, FunctionsType> modeToFunctionTypeMap_; 402 static const std::map<SceneMode, FunctionsType> modeToConflictFunctionTypeMap_; 403 static const std::vector<napi_property_descriptor> camera_output_capability_props; 404 static const std::vector<napi_property_descriptor> camera_ability_props; 405 static const std::vector<napi_property_descriptor> camera_process_props; 406 static const std::vector<napi_property_descriptor> stabilization_props; 407 static const std::vector<napi_property_descriptor> flash_props; 408 static const std::vector<napi_property_descriptor> auto_exposure_props; 409 static const std::vector<napi_property_descriptor> focus_props; 410 static const std::vector<napi_property_descriptor> manual_focus_props; 411 static const std::vector<napi_property_descriptor> zoom_props; 412 static const std::vector<napi_property_descriptor> filter_props; 413 static const std::vector<napi_property_descriptor> beauty_props; 414 static const std::vector<napi_property_descriptor> color_effect_props; 415 static const std::vector<napi_property_descriptor> macro_props; 416 static const std::vector<napi_property_descriptor> depth_fusion_props; 417 static const std::vector<napi_property_descriptor> moon_capture_boost_props; 418 static const std::vector<napi_property_descriptor> features_props; 419 static const std::vector<napi_property_descriptor> color_management_props; 420 static const std::vector<napi_property_descriptor> preconfig_props; 421 static const std::vector<napi_property_descriptor> effect_suggestion_props; 422 static const std::vector<napi_property_descriptor> aperture_props; 423 static const std::vector<napi_property_descriptor> auto_wb_props; 424 static const std::vector<napi_property_descriptor> manual_wb_props; 425 static const std::vector<napi_property_descriptor> auto_switch_props; 426 static const std::vector<napi_property_descriptor> quality_prioritization_props; 427 428 protected: 429 virtual void RegisterSlowMotionStateCb(const std::string& eventName, napi_env env, napi_value callback, 430 const std::vector<napi_value>& args, bool isOnce); 431 virtual void UnregisterSlowMotionStateCb( 432 const std::string& eventName, napi_env env, napi_value callback, const std::vector<napi_value>& args); 433 434 private: 435 void RegisterExposureCallbackListener(const std::string& eventName, napi_env env, napi_value callback, 436 const std::vector<napi_value>& args, bool isOnce); 437 void UnregisterExposureCallbackListener( 438 const std::string& eventName, napi_env env, napi_value callback, const std::vector<napi_value>& args); 439 void RegisterFocusCallbackListener(const std::string& eventName, napi_env env, napi_value callback, 440 const std::vector<napi_value>& args, bool isOnce); 441 void UnregisterFocusCallbackListener( 442 const std::string& eventName, napi_env env, napi_value callback, const std::vector<napi_value>& args); 443 void RegisterMacroStatusCallbackListener(const std::string& eventName, napi_env env, napi_value callback, 444 const std::vector<napi_value>& args, bool isOnce); 445 void UnregisterMacroStatusCallbackListener( 446 const std::string& eventName, napi_env env, napi_value callback, const std::vector<napi_value>& args); 447 void RegisterMoonCaptureBoostCallbackListener(const std::string& eventName, napi_env env, napi_value callback, 448 const std::vector<napi_value>& args, bool isOnce); 449 void UnregisterMoonCaptureBoostCallbackListener( 450 const std::string& eventName, napi_env env, napi_value callback, const std::vector<napi_value>& args); 451 void RegisterFeatureDetectionStatusListener(const std::string& eventName, napi_env env, napi_value callback, 452 const std::vector<napi_value>& args, bool isOnce); 453 void UnregisterFeatureDetectionStatusListener( 454 const std::string& eventName, napi_env env, napi_value callback, const std::vector<napi_value>& args); 455 void RegisterSessionErrorCallbackListener(const std::string& eventName, napi_env env, napi_value callback, 456 const std::vector<napi_value>& args, bool isOnce); 457 void UnregisterSessionErrorCallbackListener( 458 const std::string& eventName, napi_env env, napi_value callback, const std::vector<napi_value>& args); 459 void RegisterSmoothZoomCallbackListener(const std::string& eventName, napi_env env, napi_value callback, 460 const std::vector<napi_value>& args, bool isOnce); 461 void UnregisterSmoothZoomCallbackListener( 462 const std::string& eventName, napi_env env, napi_value callback, const std::vector<napi_value>& args); 463 void RegisterEffectSuggestionCallbackListener(const std::string& eventName, napi_env env, napi_value callback, 464 const std::vector<napi_value>& args, bool isOnce); 465 void UnregisterEffectSuggestionCallbackListener( 466 const std::string& eventName, napi_env env, napi_value callback, const std::vector<napi_value>& args); 467 468 static const EmitterFunctions fun_map_; 469 protected: 470 virtual void RegisterExposureInfoCallbackListener(const std::string& eventName, 471 napi_env env, napi_value callback, const std::vector<napi_value>& args, bool isOnce); 472 virtual void UnregisterExposureInfoCallbackListener(const std::string& eventName, 473 napi_env env, napi_value callback, const std::vector<napi_value>& args); 474 475 virtual void RegisterAbilityChangeCallbackListener(const std::string& eventName, 476 napi_env env, napi_value callback, const std::vector<napi_value>& args, bool isOnce); 477 virtual void UnregisterAbilityChangeCallbackListener(const std::string& eventName, 478 napi_env env, napi_value callback, const std::vector<napi_value>& args); 479 480 virtual void RegisterIsoInfoCallbackListener(const std::string& eventName, 481 napi_env env, napi_value callback, const std::vector<napi_value>& args, bool isOnce); 482 virtual void UnregisterIsoInfoCallbackListener(const std::string& eventName, 483 napi_env env, napi_value callback, const std::vector<napi_value>& args); 484 485 virtual void RegisterApertureInfoCallbackListener(const std::string& eventName, 486 napi_env env, napi_value callback, const std::vector<napi_value>& args, bool isOnce); 487 virtual void UnregisterApertureInfoCallbackListener(const std::string& eventName, 488 napi_env env, napi_value callback, const std::vector<napi_value>& args); 489 490 virtual void RegisterLuminationInfoCallbackListener(const std::string& eventName, 491 napi_env env, napi_value callback, const std::vector<napi_value>& args, bool isOnce); 492 virtual void UnregisterLuminationInfoCallbackListener(const std::string& eventName, 493 napi_env env, napi_value callback, const std::vector<napi_value>& args); 494 495 virtual void RegisterTryAEInfoCallbackListener(const std::string& eventName, 496 napi_env env, napi_value callback, const std::vector<napi_value>& args, bool isOnce); 497 virtual void UnregisterTryAEInfoCallbackListener(const std::string& eventName, 498 napi_env env, napi_value callback, const std::vector<napi_value>& args); 499 500 virtual void RegisterLcdFlashStatusCallbackListener(const std::string& eventName, 501 napi_env env, napi_value callback, const std::vector<napi_value>& args, bool isOnce); 502 virtual void UnregisterLcdFlashStatusCallbackListener(const std::string& eventName, 503 napi_env env, napi_value callback, const std::vector<napi_value>& args); 504 virtual void RegisterAutoDeviceSwitchCallbackListener(const std::string& eventName, 505 napi_env env, napi_value callback, const std::vector<napi_value>& args, bool isOnce); 506 virtual void UnregisterAutoDeviceSwitchCallbackListener(const std::string& eventName, 507 napi_env env, napi_value callback, const std::vector<napi_value>& args); 508 }; 509 510 struct CameraSessionAsyncContext : public AsyncContext { CameraSessionAsyncContextCameraSessionAsyncContext511 CameraSessionAsyncContext(std::string funcName, int32_t taskId) : AsyncContext(funcName, taskId) {}; 512 CameraSessionNapi* objectInfo = nullptr; 513 std::string errorMsg; 514 }; 515 } // namespace CameraStandard 516 } // namespace OHOS 517 #endif /* CAMERA_SESSION_NAPI_H_ */ 518