From 13dcf87dc5ec37109c77a0dea3974d2c1d224523 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BD=97=E9=95=BF=E5=9F=8E?= Date: Fri, 10 May 2024 19:00:46 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=BC=80=E5=90=AF=E8=B6=85?= =?UTF-8?q?=E7=BA=A7=E9=9A=90=E7=A7=81=E6=A8=A1=E5=BC=8F=EF=BC=8C=E4=B8=8D?= =?UTF-8?q?=E5=87=BA=E9=BB=91=E5=9B=BE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 罗长城 --- .../camera_service/include/hcamera_device.h | 3 +- .../camera_service/src/hcamera_device.cpp | 48 +++++++++++++------ 2 files changed, 35 insertions(+), 16 deletions(-) diff --git a/services/camera_service/include/hcamera_device.h b/services/camera_service/include/hcamera_device.h index bd743d3af..2f0e4ef43 100644 --- a/services/camera_service/include/hcamera_device.h +++ b/services/camera_service/include/hcamera_device.h @@ -190,7 +190,8 @@ private: void DebugLogForAeExposureCompensation(const std::shared_ptr &settings, uint32_t tag); void DebugLogForBeautyAuto(const std::shared_ptr &settings, uint32_t tag); - void UpdateMuteSetting(); + void CreateMuteSetting(std::shared_ptr& settings); + int32_t UpdateDeviceSetting(); }; } // namespace CameraStandard } // namespace OHOS diff --git a/services/camera_service/src/hcamera_device.cpp b/services/camera_service/src/hcamera_device.cpp index 97eadb1c9..d5fef363e 100644 --- a/services/camera_service/src/hcamera_device.cpp +++ b/services/camera_service/src/hcamera_device.cpp @@ -116,16 +116,14 @@ void HCameraDevice::SetDeviceMuteMode(bool muteMode) deviceMuteMode_ = muteMode; } -void HCameraDevice::UpdateMuteSetting() +void HCameraDevice::CreateMuteSetting(std::shared_ptr& settings) { constexpr int32_t DEFAULT_ITEMS = 1; constexpr int32_t DEFAULT_DATA_LENGTH = 1; int32_t count = 1; uint8_t mode = OHOS_CAMERA_MUTE_MODE_SOLID_COLOR_BLACK; - std::shared_ptr stashMetadata = - std::make_shared(DEFAULT_ITEMS, DEFAULT_DATA_LENGTH); - stashMetadata->addEntry(OHOS_CONTROL_MUTE_MODE, &mode, count); - UpdateSetting(stashMetadata); + settings = std::make_shared(DEFAULT_ITEMS, DEFAULT_DATA_LENGTH); + settings->addEntry(OHOS_CONTROL_MUTE_MODE, &mode, count); } int32_t HCameraDevice::ResetDeviceSettings() @@ -147,7 +145,9 @@ int32_t HCameraDevice::ResetDeviceSettings() } else { ResetCachedSettings(); if (deviceMuteMode_) { - UpdateMuteSetting(); + std::shared_ptr settings = nullptr; + CreateMuteSetting(settings); + UpdateSetting(settings); } } } @@ -344,23 +344,41 @@ int32_t HCameraDevice::OpenDevice(bool isEnableSecCam) if (hdiCameraDevice_ != nullptr) { cameraHostManager_->AddCameraDevice(cameraID_, this); if (updateSettings_ != nullptr) { - std::vector setting; - OHOS::Camera::MetadataUtils::ConvertMetadataToVec(updateSettings_, setting); - ReportMetadataDebugLog(updateSettings_); - CamRetCode rc = (CamRetCode)(hdiCameraDevice_->UpdateSettings(setting)); - if (rc != HDI::Camera::V1_0::NO_ERROR) { - MEDIA_ERR_LOG("HCameraDevice::OpenDevice Update setting failed with error Code: %{public}d", rc); - return HdiToServiceError(rc); + errorCode = UpdateDeviceSetting(); + if (errorCode != CAMERA_OK) { + return errorCode; } - updateSettings_ = nullptr; - MEDIA_DEBUG_LOG("HCameraDevice::Open Updated device settings"); errorCode = HdiToServiceError((CamRetCode)(hdiCameraDevice_->SetResultMode(ON_CHANGED))); + } else { + if (deviceMuteMode_) { + CreateMuteSetting(updateSettings_); + errorCode = UpdateDeviceSetting(); + if (errorCode != CAMERA_OK) { + return errorCode; + } + errorCode = HdiToServiceError((CamRetCode)(hdiCameraDevice_->SetResultMode(ON_CHANGED))); + } } } OpenDeviceNext(); return errorCode; } +int32_t HCameraDevice::UpdateDeviceSetting() +{ + std::vector setting; + OHOS::Camera::MetadataUtils::ConvertMetadataToVec(updateSettings_, setting); + ReportMetadataDebugLog(updateSettings_); + CamRetCode rc = (CamRetCode)(hdiCameraDevice_->UpdateSettings(setting)); + if (rc != HDI::Camera::V1_0::NO_ERROR) { + MEDIA_ERR_LOG("HCameraDevice::OpenDevice Update setting failed with error Code: %{public}d", rc); + return HdiToServiceError(rc); + } + updateSettings_ = nullptr; + MEDIA_DEBUG_LOG("HCameraDevice::Open Updated device settings"); + return CAMERA_OK; +} + void HCameraDevice::OpenDeviceNext() { bool isFoldable = OHOS::Rosen::DisplayManager::GetInstance().IsFoldable(); -- Gitee