From cd1c0866fc3daee2e2b978378dd90e02c7952135 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9F=A6=E5=9B=BD=E5=BA=86?= Date: Fri, 24 May 2024 17:15:53 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E7=9B=B8=E6=9C=BA=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=EF=BC=9A=E6=94=AF=E6=8C=81=E5=85=B6=E4=BB=96?= =?UTF-8?q?mode=E4=B8=8A=E6=8A=A5=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 韦国庆 --- .../constants/distributed_camera_constants.h | 1 + common/src/utils/dcamera_utils_tools.cpp | 1 + .../handler/src/dcamera_handler.cpp | 39 ++++++++++++------- .../distributed_camera_source_service.cpp | 4 -- 4 files changed, 28 insertions(+), 17 deletions(-) diff --git a/common/include/constants/distributed_camera_constants.h b/common/include/constants/distributed_camera_constants.h index e105f0e7..00983ccb 100644 --- a/common/include/constants/distributed_camera_constants.h +++ b/common/include/constants/distributed_camera_constants.h @@ -111,6 +111,7 @@ const std::string CAMERA_FORMAT_PHOTO = "Photo"; const std::string CAMERA_RESOLUTION_KEY = "Resolution"; const std::string CAMERA_SURFACE_FORMAT = "CAMERA_SURFACE_FORMAT"; const std::string HDF_DCAMERA_EXT_SERVICE = "distributed_camera_provider_service"; +const std::string CAMERA_SUPPORT_MODE = "Mode"; constexpr static int8_t FRAME_HEAD = 0; const int32_t RESOLUTION_MAX_WIDTH_SNAPSHOT = 4096; diff --git a/common/src/utils/dcamera_utils_tools.cpp b/common/src/utils/dcamera_utils_tools.cpp index 169bb6b0..036b1918 100644 --- a/common/src/utils/dcamera_utils_tools.cpp +++ b/common/src/utils/dcamera_utils_tools.cpp @@ -317,6 +317,7 @@ FILE *DumpFileUtil::OpenDumpFileInner(std::string para, std::string fileName) std::string filePath = DUMP_SERVICE_DIR + fileName; std::string dumpPara; FILE *dumpFile = nullptr; + bool res = GetSysPara(para.c_str(), dumpPara); if (!res || dumpPara.empty()) { DHLOGI("%{public}s is not set, dump dcamera is not required", para.c_str()); diff --git a/services/cameraservice/cameraoperator/handler/src/dcamera_handler.cpp b/services/cameraservice/cameraoperator/handler/src/dcamera_handler.cpp index da00df5c..119813a0 100644 --- a/services/cameraservice/cameraoperator/handler/src/dcamera_handler.cpp +++ b/services/cameraservice/cameraoperator/handler/src/dcamera_handler.cpp @@ -228,13 +228,30 @@ int32_t DCameraHandler::CreateDHItem(sptr& info, D cJSON_AddStringToObject(root, CAMERA_POSITION_KEY.c_str(), GetCameraPosition(info->GetPosition()).c_str()); int32_t ret = CreateAVCodecList(root); CHECK_AND_FREE_RETURN_RET_LOG(ret != DCAMERA_OK, DCAMERA_BAD_VALUE, root, "CreateAVCodecList failed"); - sptr capability = cameraManager_->GetSupportedOutputCapability(info); - CHECK_AND_FREE_RETURN_RET_LOG(capability == nullptr, DCAMERA_BAD_VALUE, root, "get supported capability is null"); - std::vector photoProfiles = capability->GetPhotoProfiles(); - ConfigFormatphoto(SNAPSHOT_FRAME, root, photoProfiles); + std::vector supportedModes = cameraManager_->GetSupportedModes(info); + CHECK_AND_RETURN_RET_LOG(supportedModes.empty(), DCAMERA_BAD_VALUE, "SupportedModes is empty."); + cJSON* modeArray = cJSON_CreateArray(); + CHECK_AND_FREE_RETURN_RET_LOG(modeArray == nullptr, DCAMERA_BAD_VALUE, root, "Create modeArray object failed"); + supportedModes.push_back(CameraStandard::SceneMode::NORMAL); + for (auto& mode : supportedModes) { + DHLOGI("The camera id: %{public}s, The supportedModes is : %{public}d", GetAnonyString(id).c_str(), mode); + cJSON_AddItemToArray(modeArray, cJSON_CreateNumber(mode)); - std::vector previewProfiles = capability->GetPreviewProfiles(); - ConfigFormatvideo(CONTINUOUS_FRAME, root, previewProfiles); + sptr capability = cameraManager_->GetSupportedOutputCapability(info, + mode); + CHECK_AND_FREE_RETURN_RET_LOG(capability == nullptr, DCAMERA_BAD_VALUE, root, "supported capability is null"); + + cJSON* modeData = cJSON_CreateObject(); + CHECK_AND_RETURN_RET_LOG(modeData == nullptr, DCAMERA_BAD_VALUE, "Create cJSON object failed"); + std::vector photoProfiles = capability->GetPhotoProfiles(); + ConfigFormatphoto(SNAPSHOT_FRAME, modeData, photoProfiles); + + std::vector previewProfiles = capability->GetPreviewProfiles(); + ConfigFormatvideo(CONTINUOUS_FRAME, modeData, previewProfiles); + + cJSON_AddItemToObject(root, std::to_string(mode).c_str(), modeData); + } + cJSON_AddItemToObject(root, CAMERA_SUPPORT_MODE.c_str(), modeArray); sptr cameraInput = nullptr; int rv = cameraManager_->CreateCameraInput(info, &cameraInput); @@ -249,15 +266,11 @@ int32_t DCameraHandler::CreateDHItem(sptr& info, D DHLOGI("encodeString hash: %zu, length: %zu", h(encodeString), encodeString.length()); cJSON_AddStringToObject(root, CAMERA_METADATA_KEY.c_str(), encodeString.c_str()); char *jsonstr = cJSON_Print(root); - if (jsonstr == nullptr) { - cJSON_Delete(root); - return DCAMERA_BAD_VALUE; - } + CHECK_AND_FREE_RETURN_RET_LOG(jsonstr == nullptr, DCAMERA_BAD_VALUE, root, "jsonstr is null"); item.attrs = jsonstr; - if (cameraInput->Release() != DCAMERA_OK) { - DHLOGE("cameraInput Release failed"); - } + CHECK_AND_LOG(cameraInput->Release() != DCAMERA_OK, "cameraInput Release failed"); + cJSON_free(jsonstr); cJSON_Delete(root); return DCAMERA_OK; diff --git a/services/cameraservice/sourceservice/src/distributedcamera/distributed_camera_source_service.cpp b/services/cameraservice/sourceservice/src/distributedcamera/distributed_camera_source_service.cpp index c3eb3186..4e32e7e3 100644 --- a/services/cameraservice/sourceservice/src/distributedcamera/distributed_camera_source_service.cpp +++ b/services/cameraservice/sourceservice/src/distributedcamera/distributed_camera_source_service.cpp @@ -213,10 +213,6 @@ int32_t DistributedCameraSourceService::RegisterDistributedHardware(const std::s return ret; } CamDevInsert(camIndex, camDev); - } else { - DHLOGE("RegisterDistributedHardware exist devId: %{public}s, dhId: %{public}s, sinkVersion: %{public}s", - GetAnonyString(devId).c_str(), GetAnonyString(dhId).c_str(), params.sinkVersion.c_str()); - return DCAMERA_ALREADY_EXISTS; } ret = camDev->RegisterDistributedHardware(devId, dhId, reqId, params); -- Gitee From 7cf31535ab076abfd674e3861b444e8b4309283c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9F=A6=E5=9B=BD=E5=BA=86?= Date: Thu, 30 May 2024 01:54:45 +0000 Subject: [PATCH 2/2] update services/cameraservice/cameraoperator/handler/src/dcamera_handler.cpp. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 韦国庆 --- .../cameraoperator/handler/src/dcamera_handler.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/cameraservice/cameraoperator/handler/src/dcamera_handler.cpp b/services/cameraservice/cameraoperator/handler/src/dcamera_handler.cpp index 479b4bcb..010e8307 100644 --- a/services/cameraservice/cameraoperator/handler/src/dcamera_handler.cpp +++ b/services/cameraservice/cameraoperator/handler/src/dcamera_handler.cpp @@ -243,7 +243,7 @@ int32_t DCameraHandler::CreateDHItem(sptr& info, D CHECK_AND_FREE_RETURN_RET_LOG(capability == nullptr, DCAMERA_BAD_VALUE, root, "supported capability is null"); cJSON* modeData = cJSON_CreateObject(); - CHECK_AND_RETURN_RET_LOG(modeData == nullptr, DCAMERA_BAD_VALUE, "Create cJSON object failed"); + CHECK_AND_FREE_RETURN_RET_LOG(modeData == nullptr, DCAMERA_BAD_VALUE, root, "Create cJSON object failed"); std::vector photoProfiles = capability->GetPhotoProfiles(); ConfigFormatphoto(SNAPSHOT_FRAME, modeData, photoProfiles); -- Gitee