diff --git a/frameworks/js/camera_napi/src/output/photo_output_napi.cpp b/frameworks/js/camera_napi/src/output/photo_output_napi.cpp index ab0b98d3ff9d05cd57761c36a61664f593cb5ec0..5d88421312c8253a6de1cec546478de2db40ee1b 100644 --- a/frameworks/js/camera_napi/src/output/photo_output_napi.cpp +++ b/frameworks/js/camera_napi/src/output/photo_output_napi.cpp @@ -2014,10 +2014,8 @@ napi_value PhotoOutputNapi::IsPhotoQualityPrioritizationSupported(napi_env env, return result; } if (photoOutputNapi != nullptr && photoOutputNapi->photoOutput_ != nullptr) { - bool isSupported = false; - int32_t ret = photoOutputNapi->photoOutput_->IsPhotoQualityPrioritizationSupported( - static_cast(quality), isSupported); - CHECK_RETURN_RET(!CameraNapiUtils::CheckError(env, ret), result); + bool isSupported = photoOutputNapi->photoOutput_->IsPhotoQualityPrioritizationSupported( + static_cast(quality)); napi_get_boolean(env, isSupported, &result); } else { MEDIA_ERR_LOG("PhotoOutputNapi::IsPhotoQualityPrioritizationSupported get native object fail"); diff --git a/frameworks/native/camera/base/src/output/photo_output.cpp b/frameworks/native/camera/base/src/output/photo_output.cpp index 2ba783494da502c981222fb12ab2fe861d6fadf2..91f8f40c294114f054ca8a84ece1ceb9115e4148 100644 --- a/frameworks/native/camera/base/src/output/photo_output.cpp +++ b/frameworks/native/camera/base/src/output/photo_output.cpp @@ -1552,37 +1552,35 @@ bool PhotoOutput::IsQualityPrioritizationTypeSupported(int32_t* originInfo, uint return false; } -int32_t PhotoOutput::IsPhotoQualityPrioritizationSupported(PhotoQualityPrioritization quality, bool &isSupported) +bool PhotoOutput::IsPhotoQualityPrioritizationSupported(PhotoQualityPrioritization quality) { MEDIA_INFO_LOG("PhotoOutput::IsPhotoQualityPrioritizationSupported E"); + bool isSupported = false; auto itr = g_photoQualityPrioritizationMap_.find(quality); CHECK_RETURN_RET_ELOG(itr == g_photoQualityPrioritizationMap_.end(), - PARAMETER_ERROR, "PhotoOutput IsPhotoQualityPrioritizationSupported error!, unknown quality type"); + isSupported, "PhotoOutput IsPhotoQualityPrioritizationSupported error!, unknown quality type"); auto session = GetSession(); - CHECK_RETURN_RET_ELOG(session == nullptr, SERVICE_FATL_ERROR, + CHECK_RETURN_RET_ELOG(session == nullptr, isSupported, "PhotoOutput IsPhotoQualityPrioritizationSupported error!, session is nullptr"); auto inputDevice = session->GetInputDevice(); - CHECK_RETURN_RET_ELOG(inputDevice == nullptr, SERVICE_FATL_ERROR, + CHECK_RETURN_RET_ELOG(inputDevice == nullptr, isSupported, "PhotoOutput IsPhotoQualityPrioritizationSupported error!, inputDevice is nullptr"); sptr cameraObj = inputDevice->GetCameraDeviceInfo(); - CHECK_RETURN_RET_ELOG(cameraObj == nullptr, SERVICE_FATL_ERROR, + CHECK_RETURN_RET_ELOG(cameraObj == nullptr, isSupported, "PhotoOutput IsPhotoQualityPrioritizationSupported error!, cameraObj is nullptr"); std::shared_ptr metadata = cameraObj->GetCachedMetadata(); - CHECK_RETURN_RET_ELOG(metadata == nullptr, SERVICE_FATL_ERROR, + CHECK_RETURN_RET_ELOG(metadata == nullptr, isSupported, "PhotoOutput IsPhotoQualityPrioritizationSupported error!, metadata is nullptr"); camera_photo_quality_prioritization_t qualityPrioritization = itr->second; int32_t sessionMode = session->GetMode(); isSupported = ParseQualityPrioritization(sessionMode, metadata->get(), qualityPrioritization); - return CameraErrorCode::SUCCESS; + return isSupported; } int32_t PhotoOutput::SetPhotoQualityPrioritization(PhotoQualityPrioritization quality) { MEDIA_INFO_LOG("PhotoOutput::SetPhotoQualityPrioritization E"); - bool isSupported = false; - int32_t ret = IsPhotoQualityPrioritizationSupported(quality, isSupported); - CHECK_RETURN_RET_ELOG(ret != CameraErrorCode::SUCCESS, ret, - "PhotoOutput SetPhotoQualityPrioritization error!, IsPhotoQualityPrioritizationSupported failed"); + bool isSupported = IsPhotoQualityPrioritizationSupported(quality); CHECK_RETURN_RET_ELOG(!isSupported, OPERATION_NOT_ALLOWED, "PhotoOutput SetPhotoQualityPrioritization error!, ParseQualityPrioritization failed"); auto session = GetSession(); @@ -1594,7 +1592,7 @@ int32_t PhotoOutput::SetPhotoQualityPrioritization(PhotoQualityPrioritization qu camera_photo_quality_prioritization_t qualityPrioritization = itr->second; session->LockForControl(); session->SetPhotoQualityPrioritization(qualityPrioritization); - ret = session->UnlockForControl(); + int32_t ret = session->UnlockForControl(); CHECK_PRINT_ELOG(ret != CameraErrorCode::SUCCESS, "CaptureSession::SetPhotoQualityPrioritization Failed to UnlockForControl"); MEDIA_DEBUG_LOG("CaptureSession::SetPhotoQualityPrioritization succeeded"); diff --git a/frameworks/native/camera/test/unittest/framework_native/output/src/photo_output_unittest.cpp b/frameworks/native/camera/test/unittest/framework_native/output/src/photo_output_unittest.cpp index a997659bd00a5c4696efc6692f3eabc224842115..be85e68207abea8aa10138e13a386f919ac88fef 100644 --- a/frameworks/native/camera/test/unittest/framework_native/output/src/photo_output_unittest.cpp +++ b/frameworks/native/camera/test/unittest/framework_native/output/src/photo_output_unittest.cpp @@ -1990,10 +1990,9 @@ HWTEST_F(CameraPhotoOutputUnit, IsPhotoQualityPrioritizationSupported_001, TestS bool status = AddOrUpdateMetadata(metadata, OHOS_ABILITY_PHOTO_QUALITY_PRIORITIZATION, &quality, sizeof(quality) / sizeof(quality[0])); ASSERT_TRUE(status); - bool isSupported = false; - int32_t ret = phtOutput->IsPhotoQualityPrioritizationSupported( - static_cast(1), isSupported); - EXPECT_EQ(ret, 0); + bool isSupported = phtOutput->IsPhotoQualityPrioritizationSupported( + static_cast(1)); + EXPECT_TRUE(isSupported); EXPECT_EQ(session->CommitConfig(), 0); EXPECT_EQ(session->Start(), 0); @@ -2038,10 +2037,9 @@ HWTEST_F(CameraPhotoOutputUnit, IsPhotoQualityPrioritizationSupported_002, TestS bool status = AddOrUpdateMetadata(metadata, OHOS_ABILITY_PHOTO_QUALITY_PRIORITIZATION, &quality, sizeof(quality) / sizeof(quality[0])); ASSERT_TRUE(status); - bool isSupported = false; - int32_t ret = phtOutput->IsPhotoQualityPrioritizationSupported( - static_cast(1), isSupported); - EXPECT_EQ(ret, 0); + bool isSupported = phtOutput->IsPhotoQualityPrioritizationSupported( + static_cast(1)); + EXPECT_FALSE(isSupported); EXPECT_EQ(session->CommitConfig(), 0); EXPECT_EQ(session->Start(), 0); diff --git a/frameworks/native/ndk/impl/photo_output_impl.cpp b/frameworks/native/ndk/impl/photo_output_impl.cpp index 8ab1490e54f66617ab8e0c37e7c35e09ca255d31..631219acbde4586d1d87b32a64a3d8d21fad4c97 100644 --- a/frameworks/native/ndk/impl/photo_output_impl.cpp +++ b/frameworks/native/ndk/impl/photo_output_impl.cpp @@ -376,9 +376,9 @@ Camera_ErrorCode Camera_PhotoOutput::IsPhotoQualityPrioritizationSupported( "Camera_PhotoOutput::IsPhotoQualityPrioritizationSupported failed, isSupported is null"); CHECK_RETURN_RET_ELOG(innerPhotoOutput_ == nullptr, CAMERA_SERVICE_FATAL_ERROR, "Camera_PhotoOutput::IsPhotoQualityPrioritizationSupported failed, innerPhotoOutput_ is null"); - int32_t ret = innerPhotoOutput_->IsPhotoQualityPrioritizationSupported( - static_cast(qualityPrioritization), *isSupported); - return FrameworkToNdkCameraError(ret); + *isSupported = innerPhotoOutput_->IsPhotoQualityPrioritizationSupported( + static_cast(qualityPrioritization)); + return CAMERA_OK; } Camera_ErrorCode Camera_PhotoOutput::SetPhotoQualityPrioritization( diff --git a/interfaces/inner_api/native/camera/include/output/photo_output.h b/interfaces/inner_api/native/camera/include/output/photo_output.h index da199aec272f6fa258116d7880dd77d829044037..53759fc9748132f1b3603c9bcbaa71c36cf76184 100644 --- a/interfaces/inner_api/native/camera/include/output/photo_output.h +++ b/interfaces/inner_api/native/camera/include/output/photo_output.h @@ -519,7 +519,7 @@ public: void CreateMediaLibrary(std::shared_ptr picture, sptr photoProxy, std::string &uri, int32_t &cameraShotType, std::string &burstKey, int64_t timestamp); - int32_t IsPhotoQualityPrioritizationSupported(PhotoQualityPrioritization quality, bool &isSupported); + bool IsPhotoQualityPrioritizationSupported(PhotoQualityPrioritization quality); int32_t SetPhotoQualityPrioritization(PhotoQualityPrioritization quality); /** diff --git a/test/fuzztest/photooutput_fuzzer/photo_output_fuzzer.cpp b/test/fuzztest/photooutput_fuzzer/photo_output_fuzzer.cpp index 44dba40fabd3b1d41178d4a6f56a678a652d52b0..742ed8d4c94a9865fe89cfcb23c1a17020d0a3b5 100644 --- a/test/fuzztest/photooutput_fuzzer/photo_output_fuzzer.cpp +++ b/test/fuzztest/photooutput_fuzzer/photo_output_fuzzer.cpp @@ -110,8 +110,7 @@ void TestOutput1(sptr output, uint8_t *rawData, size_t size) output->EnableAutoHighQualityPhoto(data.ReadBool()); PhotoOutput::PhotoQualityPrioritization quality = static_cast(data.ReadInt32() % 1); - bool isSupported = false; - output->IsPhotoQualityPrioritizationSupported(quality, isSupported); + output->IsPhotoQualityPrioritizationSupported(quality); output->SetPhotoQualityPrioritization(quality); output->Release(); }