新增设置照片质量和GPS位置

Signed-off-by: chen0088 <chenmenghuan3@huawei.com>
This commit is contained in:
chen0088
2022-03-29 11:09:46 +08:00
parent 6a2302fb26
commit 4cd9aa12be
@@ -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<DCameraCaptureInfo>& inf
std::shared_ptr<CameraStandard::PhotoCaptureSetting> photoCaptureSettings =
std::make_shared<CameraStandard::PhotoCaptureSetting>();
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<CameraStandard::PhotoCaptureSetting::QualityLevel>(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<CameraStandard::PhotoOutput> &)photoOutput_)->Capture(photoCaptureSettings);
if (ret != DCAMERA_OK) {
DHLOGE("DCameraClient::StartPhotoOutput %s photoOutput capture failed, ret: %d",