From 7f237390604d1ffcc3946429b5f4f468d2288dce Mon Sep 17 00:00:00 2001 From: chen0088 Date: Tue, 29 Mar 2022 11:09:46 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E7=85=A7=E7=89=87=E8=B4=A8=E9=87=8F=E5=92=8CGPS=E4=BD=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: chen0088 --- .../client/src/dcamera_client.cpp | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp b/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp index 462b99a7..e5e25cc7 100644 --- a/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp +++ b/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp @@ -16,6 +16,7 @@ #include "dcamera_client.h" #include "anonymous_string.h" +#include "camera_metadata_operator.h" #include "dcamera_input_callback.h" #include "dcamera_manager_callback.h" #include "dcamera_photo_callback.h" @@ -26,6 +27,7 @@ #include "distributed_camera_errno.h" #include "distributed_hardware_log.h" #include "metadata_utils.h" +#include "metadata_utils.h" namespace OHOS { namespace DistributedHardware { @@ -409,6 +411,27 @@ int32_t DCameraClient::StartPhotoOutput(std::shared_ptr& inf std::shared_ptr photoCaptureSettings = std::make_shared(); photoCaptureSettings->SetRotation(rotation); + ret = CameraStandard::FindCameraMetadataItem(cameraMetadata->get(), OHOS_JPEG_QUALITY, &item); + if (ret == CAM_META_SUCCESS) { + DHLOGI("DCameraClient::StartPhotoOutput %s find camera quality item", GetAnonyString(cameraId_).c_str()); + CameraStandard::PhotoCaptureSetting::QualityLevel quality = + static_cast(item.data.i8[0]); + DHLOGI("DCameraClient::StartPhotoOutput %s photo capture settings set quality: %d", + GetAnonyString(cameraId_).c_str(), quality); + photoCaptureSettings->SetQuality(quality); + } + ret = CameraStandard::FindCameraMetadataItem(cameraMetadata->get(), OHOS_JPEG_GPS_COORDINATES, &item); + if (ret == CAM_META_SUCCESS) { + DHLOGI("DCameraClient::StartPhotoOutput %s find camera gpsCoordinates item", GetAnonyString(cameraId_).c_str()); + double gpsCoordinates[2] = {-1.0, -1.0}; + if (memcpy_s(gpsCoordinates, sizeof(gpsCoordinates), item.data.d, sizeof(gpsCoordinates)) != EOK) { + DHLOGE("DCameraClient::memcpy_s gpsCoordinates failed"); + return DCAMERA_BAD_VALUE; + } + DHLOGI("DCameraClient::StartPhotoOutput %s photo capture settings set gpsCoordinates[0]: %f, gpsCoordinates[1]: %f", + GetAnonyString(cameraId_).c_str(), gpsCoordinates[0], gpsCoordinates[1]); + photoCaptureSettings->SetGpsLocation(gpsCoordinates[0], gpsCoordinates[1]); + } ret = ((sptr &)photoOutput_)->Capture(photoCaptureSettings); if (ret != DCAMERA_OK) { DHLOGE("DCameraClient::StartPhotoOutput %s photoOutput capture failed, ret: %d", -- Gitee From 8a4939d1302891779a598d087913546961d77d00 Mon Sep 17 00:00:00 2001 From: chen0088 Date: Tue, 29 Mar 2022 11:18:23 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E7=85=A7=E7=89=87=E8=B4=A8=E9=87=8F=E5=92=8CGPS=E4=BD=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: chen0088 --- .../cameraservice/cameraoperator/client/src/dcamera_client.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp b/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp index e5e25cc7..fc072a29 100644 --- a/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp +++ b/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp @@ -15,6 +15,7 @@ #include "dcamera_client.h" +#include #include "anonymous_string.h" #include "camera_metadata_operator.h" #include "dcamera_input_callback.h" @@ -27,7 +28,6 @@ #include "distributed_camera_errno.h" #include "distributed_hardware_log.h" #include "metadata_utils.h" -#include "metadata_utils.h" namespace OHOS { namespace DistributedHardware { -- Gitee From 7825ccd45f40505b7bae6d83cee17cb86955cc61 Mon Sep 17 00:00:00 2001 From: chen0088 Date: Tue, 29 Mar 2022 15:43:07 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E7=85=A7=E7=89=87=E8=B4=A8=E9=87=8F=E5=92=8CGPS=E4=BD=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: chen0088 --- .../client/include/dcamera_client.h | 2 + .../client/src/dcamera_client.cpp | 37 +++++++++++++------ 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/services/cameraservice/cameraoperator/client/include/dcamera_client.h b/services/cameraservice/cameraoperator/client/include/dcamera_client.h index f355d2f3..27f375e6 100644 --- a/services/cameraservice/cameraoperator/client/include/dcamera_client.h +++ b/services/cameraservice/cameraoperator/client/include/dcamera_client.h @@ -55,6 +55,8 @@ private: int32_t StartCaptureInner(std::shared_ptr& info); int32_t StartPhotoOutput(std::shared_ptr& info); int32_t StartVideoOutput(); + int32_t SetQualityAndGpsLocation(const std::shared_ptr &cameraMetadata, + std::shared_ptr &photoCaptureSettings); bool isInit_; std::string cameraId_; diff --git a/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp b/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp index fc072a29..6fcfa6d6 100644 --- a/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp +++ b/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp @@ -411,33 +411,46 @@ int32_t DCameraClient::StartPhotoOutput(std::shared_ptr& inf std::shared_ptr photoCaptureSettings = std::make_shared(); photoCaptureSettings->SetRotation(rotation); + if (SetQualityAndGpsLocation(cameraMetadata, photoCaptureSettings) != DCAMERA_OK) { + return DCAMERA_BAD_VALUE; + } + ret = ((sptr &)photoOutput_)->Capture(photoCaptureSettings); + if (ret != DCAMERA_OK) { + DHLOGE("DCameraClient::StartPhotoOutput %s photoOutput capture failed, ret: %d", + GetAnonyString(cameraId_).c_str(), ret); + return ret; + } + return DCAMERA_OK; +} + +int32_t DCameraClient::SetQualityAndGpsLocation(const std::shared_ptr &cameraMetadata, + std::shared_ptr &photoCaptureSettings) +{ + camera_metadata_item_t item; ret = CameraStandard::FindCameraMetadataItem(cameraMetadata->get(), OHOS_JPEG_QUALITY, &item); if (ret == CAM_META_SUCCESS) { - DHLOGI("DCameraClient::StartPhotoOutput %s find camera quality item", GetAnonyString(cameraId_).c_str()); + DHLOGI("DCameraClient::SetQualityAndGpsLocation %s find camera quality item", + GetAnonyString(cameraId_).c_str()); CameraStandard::PhotoCaptureSetting::QualityLevel quality = static_cast(item.data.i8[0]); - DHLOGI("DCameraClient::StartPhotoOutput %s photo capture settings set quality: %d", - GetAnonyString(cameraId_).c_str(), quality); + DHLOGI("DCameraClient::SetQualityAndGpsLocation %s photo capture settings set quality: %d", + GetAnonyString(cameraId_).c_str(), quality); photoCaptureSettings->SetQuality(quality); } ret = CameraStandard::FindCameraMetadataItem(cameraMetadata->get(), OHOS_JPEG_GPS_COORDINATES, &item); if (ret == CAM_META_SUCCESS) { - DHLOGI("DCameraClient::StartPhotoOutput %s find camera gpsCoordinates item", GetAnonyString(cameraId_).c_str()); + DHLOGI("DCameraClient::SetQualityAndGpsLocation %s find camera gpsCoordinates item", + GetAnonyString(cameraId_).c_str()); double gpsCoordinates[2] = {-1.0, -1.0}; if (memcpy_s(gpsCoordinates, sizeof(gpsCoordinates), item.data.d, sizeof(gpsCoordinates)) != EOK) { DHLOGE("DCameraClient::memcpy_s gpsCoordinates failed"); return DCAMERA_BAD_VALUE; } - DHLOGI("DCameraClient::StartPhotoOutput %s photo capture settings set gpsCoordinates[0]: %f, gpsCoordinates[1]: %f", - GetAnonyString(cameraId_).c_str(), gpsCoordinates[0], gpsCoordinates[1]); + DHLOGI("DCameraClient::SetQualityAndGpsLocation %s photo capture settings set " + "gpsCoordinates[0]: %f, gpsCoordinates[1]: %f", + GetAnonyString(cameraId_).c_str(), gpsCoordinates[0], gpsCoordinates[1]); photoCaptureSettings->SetGpsLocation(gpsCoordinates[0], gpsCoordinates[1]); } - ret = ((sptr &)photoOutput_)->Capture(photoCaptureSettings); - if (ret != DCAMERA_OK) { - DHLOGE("DCameraClient::StartPhotoOutput %s photoOutput capture failed, ret: %d", - GetAnonyString(cameraId_).c_str(), ret); - return ret; - } return DCAMERA_OK; } -- Gitee From 32b3279d3e75d531496bd93619e6891daa9b4cc0 Mon Sep 17 00:00:00 2001 From: chen0088 Date: Wed, 30 Mar 2022 09:46:02 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E7=85=A7=E7=89=87=E8=B4=A8=E9=87=8F=E5=92=8CGPS=E4=BD=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: chen0088 --- .../cameraoperator/client/include/dcamera_client.h | 2 +- .../cameraoperator/client/src/dcamera_client.cpp | 14 ++++++-------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/services/cameraservice/cameraoperator/client/include/dcamera_client.h b/services/cameraservice/cameraoperator/client/include/dcamera_client.h index 27f375e6..b7e47380 100644 --- a/services/cameraservice/cameraoperator/client/include/dcamera_client.h +++ b/services/cameraservice/cameraoperator/client/include/dcamera_client.h @@ -55,7 +55,7 @@ private: int32_t StartCaptureInner(std::shared_ptr& info); int32_t StartPhotoOutput(std::shared_ptr& info); int32_t StartVideoOutput(); - int32_t SetQualityAndGpsLocation(const std::shared_ptr &cameraMetadata, + void SetQualityAndGpsLocation(const std::shared_ptr &cameraMetadata, std::shared_ptr &photoCaptureSettings); bool isInit_; diff --git a/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp b/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp index 6fcfa6d6..0a9f9f8f 100644 --- a/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp +++ b/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp @@ -411,9 +411,7 @@ int32_t DCameraClient::StartPhotoOutput(std::shared_ptr& inf std::shared_ptr photoCaptureSettings = std::make_shared(); photoCaptureSettings->SetRotation(rotation); - if (SetQualityAndGpsLocation(cameraMetadata, photoCaptureSettings) != DCAMERA_OK) { - return DCAMERA_BAD_VALUE; - } + SetQualityAndGpsLocation(cameraMetadata, photoCaptureSettings); ret = ((sptr &)photoOutput_)->Capture(photoCaptureSettings); if (ret != DCAMERA_OK) { DHLOGE("DCameraClient::StartPhotoOutput %s photoOutput capture failed, ret: %d", @@ -423,16 +421,16 @@ int32_t DCameraClient::StartPhotoOutput(std::shared_ptr& inf return DCAMERA_OK; } -int32_t DCameraClient::SetQualityAndGpsLocation(const std::shared_ptr &cameraMetadata, +void DCameraClient::SetQualityAndGpsLocation(const std::shared_ptr &cameraMetadata, std::shared_ptr &photoCaptureSettings) { camera_metadata_item_t item; - ret = CameraStandard::FindCameraMetadataItem(cameraMetadata->get(), OHOS_JPEG_QUALITY, &item); + int32_t ret = CameraStandard::FindCameraMetadataItem(cameraMetadata->get(), OHOS_JPEG_QUALITY, &item); if (ret == CAM_META_SUCCESS) { DHLOGI("DCameraClient::SetQualityAndGpsLocation %s find camera quality item", GetAnonyString(cameraId_).c_str()); CameraStandard::PhotoCaptureSetting::QualityLevel quality = - static_cast(item.data.i8[0]); + static_cast(item.data.u8[0]); DHLOGI("DCameraClient::SetQualityAndGpsLocation %s photo capture settings set quality: %d", GetAnonyString(cameraId_).c_str(), quality); photoCaptureSettings->SetQuality(quality); @@ -444,14 +442,14 @@ int32_t DCameraClient::SetQualityAndGpsLocation(const std::shared_ptrSetGpsLocation(gpsCoordinates[0], gpsCoordinates[1]); } - return DCAMERA_OK; + return; } int32_t DCameraClient::StartVideoOutput() -- Gitee From 6c6f636576672cf658178722f5962cf808d13a0a Mon Sep 17 00:00:00 2001 From: chen0088 Date: Wed, 30 Mar 2022 09:58:40 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E7=85=A7=E7=89=87=E8=B4=A8=E9=87=8F=E5=92=8CGPS=E4=BD=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: chen0088 --- .../cameraservice/cameraoperator/client/src/dcamera_client.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp b/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp index 0a9f9f8f..7e6f4bdc 100644 --- a/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp +++ b/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp @@ -441,7 +441,7 @@ void DCameraClient::SetQualityAndGpsLocation(const std::shared_ptr Date: Fri, 1 Apr 2022 15:41:49 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E7=85=A7=E7=89=87=E8=B4=A8=E9=87=8F=E5=92=8CGPS=E4=BD=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: chen0088 --- .../cameraoperator/client/include/dcamera_client.h | 4 ++-- .../cameraoperator/client/src/dcamera_client.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/services/cameraservice/cameraoperator/client/include/dcamera_client.h b/services/cameraservice/cameraoperator/client/include/dcamera_client.h index b7e47380..f97d2ee4 100644 --- a/services/cameraservice/cameraoperator/client/include/dcamera_client.h +++ b/services/cameraservice/cameraoperator/client/include/dcamera_client.h @@ -55,8 +55,8 @@ private: int32_t StartCaptureInner(std::shared_ptr& info); int32_t StartPhotoOutput(std::shared_ptr& info); int32_t StartVideoOutput(); - void SetQualityAndGpsLocation(const std::shared_ptr &cameraMetadata, - std::shared_ptr &photoCaptureSettings); + void SetQualityAndGpsLocation(const std::shared_ptr& cameraMetadata, + std::shared_ptr& photoCaptureSettings); bool isInit_; std::string cameraId_; diff --git a/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp b/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp index 7e6f4bdc..5f50dc95 100644 --- a/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp +++ b/services/cameraservice/cameraoperator/client/src/dcamera_client.cpp @@ -421,8 +421,8 @@ int32_t DCameraClient::StartPhotoOutput(std::shared_ptr& inf return DCAMERA_OK; } -void DCameraClient::SetQualityAndGpsLocation(const std::shared_ptr &cameraMetadata, - std::shared_ptr &photoCaptureSettings) +void DCameraClient::SetQualityAndGpsLocation(const std::shared_ptr& cameraMetadata, + std::shared_ptr& photoCaptureSettings) { camera_metadata_item_t item; int32_t ret = CameraStandard::FindCameraMetadataItem(cameraMetadata->get(), OHOS_JPEG_QUALITY, &item); -- Gitee