diff --git a/frameworks/js/camera_napi/src/input/camera_manager_napi.cpp b/frameworks/js/camera_napi/src/input/camera_manager_napi.cpp index ea99600548b9915016891c57351d53fdc2072cce..f2028c2bc7c89990969226856b56c37616250907 100644 --- a/frameworks/js/camera_napi/src/input/camera_manager_napi.cpp +++ b/frameworks/js/camera_napi/src/input/camera_manager_napi.cpp @@ -1463,8 +1463,8 @@ napi_value CameraManagerNapi::CreateCameraInputInstance(napi_env env, napi_callb "CameraManagerNapi::CreateCameraInputInstance invalid argument"); cameraInfo = cameraManagerNapi->cameraManager_->GetCameraDeviceFromId(cameraId); } else if (argSize == ARGS_TWO) { - int32_t cameraPosition; - int32_t cameraType; + int32_t cameraPosition = 0; + int32_t cameraType = 0; CameraNapiParamParser jsParamParser(env, info, cameraManagerNapi, cameraPosition, cameraType); CHECK_RETURN_RET_ELOG(!jsParamParser.AssertStatus(INVALID_ARGUMENT, "Create cameraInput with 2 invalid arguments!"), nullptr, diff --git a/frameworks/js/camera_napi/src/output/video_output_napi.cpp b/frameworks/js/camera_napi/src/output/video_output_napi.cpp index 98b13054e2bddcc16c2ddc6274317aec297a5a4a..a0ef27546e16fb9bc2b3e25c0400c2adc5c5b955 100644 --- a/frameworks/js/camera_napi/src/output/video_output_napi.cpp +++ b/frameworks/js/camera_napi/src/output/video_output_napi.cpp @@ -128,21 +128,17 @@ void VideoCallbackListener::OnDeferredVideoEnhancementInfo(const CaptureEndedInf void VideoCallbackListener::ExecuteOnDeferredVideoCb(const VideoCallbackInfo& info) const { MEDIA_INFO_LOG("ExecuteOnDeferredVideoCb"); - napi_value result[ARGS_TWO] = {nullptr, nullptr}; - napi_value retVal; - - napi_get_undefined(env_, &result[PARAM0]); - napi_get_undefined(env_, &result[PARAM1]); - - napi_value propValue; - napi_create_object(env_, &result[PARAM1]); - napi_get_boolean(env_, info.isDeferredVideoEnhancementAvailable, &propValue); - napi_set_named_property(env_, result[PARAM1], "isDeferredVideoEnhancementAvailable", propValue); - napi_create_string_utf8(env_, info.videoId.c_str(), NAPI_AUTO_LENGTH, &propValue); - napi_set_named_property(env_, result[PARAM1], "videoId", propValue); - - ExecuteCallbackNapiPara callbackNapiPara { .recv = nullptr, .argc = ARGS_TWO, .argv = result, .result = &retVal }; - ExecuteCallback(CONST_VIDEO_DEFERRED_ENHANCEMENT, callbackNapiPara); + ExecuteCallbackScopeSafe(CONST_VIDEO_DEFERRED_ENHANCEMENT, [&]() { + napi_value errCode = CameraNapiUtils::GetUndefinedValue(env_); + napi_value callbackObj = CameraNapiUtils::GetUndefinedValue(env_); + napi_value propValue; + napi_create_object(env_, &callbackObj); + napi_get_boolean(env_, info.isDeferredVideoEnhancementAvailable, &propValue); + napi_set_named_property(env_, callbackObj, "isDeferredVideoEnhancementAvailable", propValue); + napi_create_string_utf8(env_, info.videoId.c_str(), NAPI_AUTO_LENGTH, &propValue); + napi_set_named_property(env_, callbackObj, "videoId", propValue); + return ExecuteCallbackData(env_, errCode, callbackObj); + }); } void VideoCallbackListener::UpdateJSCallback(VideoOutputEventType eventType, const VideoCallbackInfo& info) const @@ -161,24 +157,23 @@ void VideoCallbackListener::UpdateJSCallback(VideoOutputEventType eventType, con MEDIA_ERR_LOG("Incorrect photo callback event type received from JS"); } - napi_value result[ARGS_ONE]; - napi_value retVal; - napi_value propValue; std::string eventName = VideoOutputEventTypeHelper.GetKeyString(eventType); if (eventName.empty()) { MEDIA_WARNING_LOG( "VideoCallbackListener::UpdateJSCallback, event type is invalid %d", static_cast(eventType)); return; } - if (eventType == VideoOutputEventType::VIDEO_FRAME_ERROR) { - napi_create_object(env_, &result[PARAM0]); - napi_create_int32(env_, info.errorCode, &propValue); - napi_set_named_property(env_, result[PARAM0], "code", propValue); - } else { - napi_get_undefined(env_, &result[PARAM0]); - } - ExecuteCallbackNapiPara callbackNapiPara { .recv = nullptr, .argc = ARGS_ONE, .argv = result, .result = &retVal }; - ExecuteCallback(eventName, callbackNapiPara); + ExecuteCallbackScopeSafe(eventName, [&]() { + napi_value errCode = CameraNapiUtils::GetUndefinedValue(env_); + napi_value callbackObj = CameraNapiUtils::GetUndefinedValue(env_); + if (eventType == VideoOutputEventType::VIDEO_FRAME_ERROR) { + napi_value propValue; + napi_create_object(env_, &errCode); + napi_create_int32(env_, info.errorCode, &propValue); + napi_set_named_property(env_, errCode, "code", propValue); + } + return ExecuteCallbackData(env_, errCode, callbackObj); + }); } VideoOutputNapi::VideoOutputNapi() : env_(nullptr) {} diff --git a/frameworks/js/camera_napi/src/session/camera_session_napi.cpp b/frameworks/js/camera_napi/src/session/camera_session_napi.cpp index 16eca0e6ced7f2d7e6b401a8eb6f1cbcb0e985ab..917ee15cc0df568c966f33b1e21a95a0ec5e0709 100644 --- a/frameworks/js/camera_napi/src/session/camera_session_napi.cpp +++ b/frameworks/js/camera_napi/src/session/camera_session_napi.cpp @@ -1058,18 +1058,22 @@ napi_value CameraSessionNapi::GetJSArgsForCameraOutput(napi_env env, size_t argc if (PreviewOutputNapi::IsPreviewOutput(env, argv[i])) { MEDIA_DEBUG_LOG("preview output adding.."); napi_unwrap(env, argv[i], reinterpret_cast(&previewOutputNapiObj)); + NAPI_ASSERT(env, previewOutputNapiObj != nullptr, "type mismatch"); cameraOutput = previewOutputNapiObj->GetPreviewOutput(); } else if (PhotoOutputNapi::IsPhotoOutput(env, argv[i])) { MEDIA_DEBUG_LOG("photo output adding.."); napi_unwrap(env, argv[i], reinterpret_cast(&photoOutputNapiObj)); + NAPI_ASSERT(env, photoOutputNapiObj != nullptr, "type mismatch"); cameraOutput = photoOutputNapiObj->GetPhotoOutput(); } else if (VideoOutputNapi::IsVideoOutput(env, argv[i])) { MEDIA_DEBUG_LOG("video output adding.."); napi_unwrap(env, argv[i], reinterpret_cast(&videoOutputNapiObj)); + NAPI_ASSERT(env, videoOutputNapiObj != nullptr, "type mismatch"); cameraOutput = videoOutputNapiObj->GetVideoOutput(); } else if (MetadataOutputNapi::IsMetadataOutput(env, argv[i])) { MEDIA_DEBUG_LOG("metadata output adding.."); napi_unwrap(env, argv[i], reinterpret_cast(&metadataOutputNapiObj)); + NAPI_ASSERT(env, metadataOutputNapiObj != nullptr, "type mismatch"); cameraOutput = metadataOutputNapiObj->GetMetadataOutput(); } if (CameraNapiSecurity::CheckSystemApp(env, false) && cameraOutput == nullptr) { diff --git a/services/camera_service/src/hcamera_host_manager.cpp b/services/camera_service/src/hcamera_host_manager.cpp index 9b1aaaad4d07facd1bb5e6e4e5fa8a3d24eccd1c..af3b8eaa53166a24e1271c9240c81674dae026ee 100644 --- a/services/camera_service/src/hcamera_host_manager.cpp +++ b/services/camera_service/src/hcamera_host_manager.cpp @@ -887,6 +887,10 @@ int32_t HCameraHostManager::GetCameraIdSortedByCameraType(std::vectorget(), OHOS_ABILITY_CAMERA_TYPE, &item); if (item.count < 1) { cameraTypes[id] = cameratypenow; diff --git a/services/camera_service/src/hcapture_session.cpp b/services/camera_service/src/hcapture_session.cpp index 4339c360a1f99d438ec0e35031a4c96bdb079ff4..089c9fabc80f99db151389301547e1e698bef032 100644 --- a/services/camera_service/src/hcapture_session.cpp +++ b/services/camera_service/src/hcapture_session.cpp @@ -2177,7 +2177,7 @@ bool HCaptureSession::GetCaptureSessionInfo(CaptureSessionInfo& sessionInfo) sessionInfo.position = -1; ZoomInfo zoomInfo; zoomInfo.zoomValue = 1.0f; - zoomInfo.equivalentFocus = GetEquivalentFocus(); + zoomInfo.equivalentFocus = static_cast(GetEquivalentFocus()); if (cameraDevice_ != nullptr) { sessionInfo.cameraId = cameraDevice_->GetCameraId(); sessionInfo.position = cameraDevice_->GetCameraPosition(); diff --git a/services/camera_service/src/hstream_operator.cpp b/services/camera_service/src/hstream_operator.cpp index 6ea2f5287cbe1610bb6cae355eeb8d51cbd99052..aee043f836e2aa66df3a6d3330a2d2e08c8cab38 100644 --- a/services/camera_service/src/hstream_operator.cpp +++ b/services/camera_service/src/hstream_operator.cpp @@ -531,8 +531,8 @@ void HStreamOperator::ExpandMovingPhotoRepeatStream() avcodecTaskManagerProxy_ = AvcodecTaskManagerProxy::CreateAvcodecTaskManagerProxy(); CHECK_CONTINUE_WLOG(avcodecTaskManagerProxy_ == nullptr, "Create AvcodecTaskManagerProxy failed."); shared_ptr size = std::make_shared(); - size->width = streamRepeat->width_; - size->height = streamRepeat->height_; + size->width = static_cast(streamRepeat->width_); + size->height = static_cast(streamRepeat->height_); avcodecTaskManagerProxy_->CreateAvcodecTaskManager(movingPhotoSurfaceWrapper->videoSurface_, size, audioCapturerSessionProxy_, VideoCodecType::VIDEO_ENCODE_TYPE_HEVC, currColorSpace_); HStreamOperatorManager::GetInstance()->AddTaskManager(streamOperatorId_, avcodecTaskManagerProxy_);