• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include <mutex>
17 #include <malloc.h>
18 #include <securec.h>
19 #include "camera_metadata_info.h"
20 #include "camera_log.h"
21 #include "camera_util.h"
22 #include "camera_manager.h"
23 #include "camera_rotation_api_utils.h"
24 #include "input/camera_device.h"
25 #include "input/camera_manager.h"
26 #include "metadata_common_utils.h"
27 #include "capture_scene_const.h"
28 #include "anonymization.h"
29 
30 using namespace std;
31 
32 namespace OHOS {
33 namespace CameraStandard {
34 const std::unordered_map<camera_type_enum_t, CameraType> CameraDevice::metaToFwCameraType_ = {
35     {OHOS_CAMERA_TYPE_WIDE_ANGLE, CAMERA_TYPE_WIDE_ANGLE},
36     {OHOS_CAMERA_TYPE_ULTRA_WIDE, CAMERA_TYPE_ULTRA_WIDE},
37     {OHOS_CAMERA_TYPE_TELTPHOTO, CAMERA_TYPE_TELEPHOTO},
38     {OHOS_CAMERA_TYPE_TRUE_DEAPTH, CAMERA_TYPE_TRUE_DEPTH},
39     {OHOS_CAMERA_TYPE_LOGICAL, CAMERA_TYPE_UNSUPPORTED},
40     {OHOS_CAMERA_TYPE_UNSPECIFIED, CAMERA_TYPE_DEFAULT}
41 };
42 
43 const std::unordered_map<camera_position_enum_t, CameraPosition> CameraDevice::metaToFwCameraPosition_ = {
44     {OHOS_CAMERA_POSITION_FRONT, CAMERA_POSITION_FRONT},
45     {OHOS_CAMERA_POSITION_BACK, CAMERA_POSITION_BACK},
46     {OHOS_CAMERA_POSITION_OTHER, CAMERA_POSITION_UNSPECIFIED}
47 };
48 
49 const std::unordered_map<camera_connection_type_t, ConnectionType> CameraDevice::metaToFwConnectionType_ = {
50     {OHOS_CAMERA_CONNECTION_TYPE_REMOTE, CAMERA_CONNECTION_REMOTE},
51     {OHOS_CAMERA_CONNECTION_TYPE_USB_PLUGIN, CAMERA_CONNECTION_USB_PLUGIN},
52     {OHOS_CAMERA_CONNECTION_TYPE_BUILTIN, CAMERA_CONNECTION_BUILT_IN}
53 };
54 
55 const std::unordered_map<camera_foldscreen_enum_t, CameraFoldScreenType> CameraDevice::metaToFwCameraFoldScreenType_ = {
56     {OHOS_CAMERA_FOLDSCREEN_INNER, CAMERA_FOLDSCREEN_INNER},
57     {OHOS_CAMERA_FOLDSCREEN_OUTER, CAMERA_FOLDSCREEN_OUTER},
58     {OHOS_CAMERA_FOLDSCREEN_OTHER, CAMERA_FOLDSCREEN_UNSPECIFIED}
59 };
60 
CameraDevice(std::string cameraID,std::shared_ptr<Camera::CameraMetadata> metadata)61 CameraDevice::CameraDevice(std::string cameraID, std::shared_ptr<Camera::CameraMetadata> metadata)
62     : cameraID_(cameraID), baseAbility_(MetadataCommonUtils::CopyMetadata(metadata)),
63       cachedMetadata_(MetadataCommonUtils::CopyMetadata(metadata))
64 {
65     CHECK_EXECUTE(metadata != nullptr, init(metadata->get()));
66 }
67 
CameraDevice(std::string cameraID,std::shared_ptr<OHOS::Camera::CameraMetadata> metadata,dmDeviceInfo deviceInfo)68 CameraDevice::CameraDevice(
69     std::string cameraID, std::shared_ptr<OHOS::Camera::CameraMetadata> metadata, dmDeviceInfo deviceInfo)
70     : cameraID_(cameraID), baseAbility_(MetadataCommonUtils::CopyMetadata(metadata)),
71       cachedMetadata_(MetadataCommonUtils::CopyMetadata(metadata))
72 {
73     dmDeviceInfo_.deviceName = deviceInfo.deviceName;
74     dmDeviceInfo_.deviceTypeId = deviceInfo.deviceTypeId;
75     dmDeviceInfo_.networkId = deviceInfo.networkId;
76     MEDIA_INFO_LOG("camera cameraid = %{public}s, devicename: = %{public}s", cameraID_.c_str(),
77         OHOS::CameraStandard::Anonymization::AnonymizeString(dmDeviceInfo_.deviceName).c_str());
78     CHECK_RETURN(metadata == nullptr);
79     init(metadata->get());
80 }
81 
CameraDevice(std::string cameraID,dmDeviceInfo deviceInfo,std::shared_ptr<OHOS::Camera::CameraMetadata> metadata)82 CameraDevice::CameraDevice(
83     std::string cameraID, dmDeviceInfo deviceInfo, std::shared_ptr<OHOS::Camera::CameraMetadata> metadata)
84     : cameraID_(cameraID)
85 {
86     dmDeviceInfo_.deviceName = deviceInfo.deviceName;
87     dmDeviceInfo_.deviceTypeId = deviceInfo.deviceTypeId;
88     dmDeviceInfo_.networkId = deviceInfo.networkId;
89     MEDIA_INFO_LOG("cameraDevice cameraid = %{public}s, devicename: = %{public}s", cameraID_.c_str(),
90         OHOS::CameraStandard::Anonymization::AnonymizeString(dmDeviceInfo_.deviceName).c_str());
91     CHECK_EXECUTE(metadata != nullptr, init(metadata->get()));
92 }
93 
isFindModuleTypeTag(uint32_t & tagId)94 bool CameraDevice::isFindModuleTypeTag(uint32_t &tagId)
95 {
96     std::vector<vendorTag_t> infos;
97     int32_t ret = OHOS::Camera::GetAllVendorTags(infos);
98     if (ret == CAM_META_SUCCESS) {
99         for (auto info : infos) {
100             if (info.tagName != nullptr && strcmp(info.tagName, "hwSensorName") == 0) {
101                 tagId = info.tagId;
102                 return true;
103             }
104         }
105     }
106     return false;
107 }
108 
init(common_metadata_header_t * metadata)109 void CameraDevice::init(common_metadata_header_t* metadata)
110 {
111     camera_metadata_item_t item;
112 
113     int cameraDeviceRet = Camera::FindCameraMetadataItem(metadata, OHOS_ABILITY_CAMERA_POSITION, &item);
114     if (cameraDeviceRet == CAM_META_SUCCESS) {
115         auto itr = metaToFwCameraPosition_.find(static_cast<camera_position_enum_t>(item.data.u8[0]));
116         if (itr != metaToFwCameraPosition_.end()) {
117             cameraPosition_ = itr->second;
118         }
119     }
120 
121     cameraDeviceRet = Camera::FindCameraMetadataItem(metadata, OHOS_ABILITY_CAMERA_TYPE, &item);
122     if (cameraDeviceRet == CAM_META_SUCCESS) {
123         auto itr = metaToFwCameraType_.find(static_cast<camera_type_enum_t>(item.data.u8[0]));
124         if (itr != metaToFwCameraType_.end()) {
125             cameraType_ = itr->second;
126         }
127     }
128 
129     cameraDeviceRet = Camera::FindCameraMetadataItem(metadata, OHOS_ABILITY_CAMERA_CONNECTION_TYPE, &item);
130     if (cameraDeviceRet == CAM_META_SUCCESS) {
131         auto itr = metaToFwConnectionType_.find(static_cast<camera_connection_type_t>(item.data.u8[0]));
132         if (itr != metaToFwConnectionType_.end()) {
133             connectionType_ = itr->second;
134         }
135     }
136 
137     cameraDeviceRet = Camera::FindCameraMetadataItem(metadata, OHOS_ABILITY_CAMERA_FOLDSCREEN_TYPE, &item);
138     if (cameraDeviceRet == CAM_META_SUCCESS) {
139         auto itr = metaToFwCameraFoldScreenType_.find(static_cast<camera_foldscreen_enum_t>(item.data.u8[0]));
140         if (itr != metaToFwCameraFoldScreenType_.end()) {
141             foldScreenType_ = itr->second;
142         }
143     }
144 
145     cameraDeviceRet = OHOS::Camera::FindCameraMetadataItem(metadata, OHOS_SENSOR_ORIENTATION, &item);
146     if (cameraDeviceRet == CAM_META_SUCCESS) {
147         cameraOrientation_ = static_cast<uint32_t>(item.data.i32[0]);
148     }
149 
150     cameraDeviceRet = OHOS::Camera::FindCameraMetadataItem(metadata, OHOS_ABILITY_CAMERA_IS_RETRACTABLE, &item);
151     if (cameraDeviceRet == CAM_META_SUCCESS) {
152         isRetractable_ = static_cast<bool>(item.data.u8[0]);
153         MEDIA_INFO_LOG("Get isRetractable_  = %{public}d", isRetractable_);
154     }
155 
156     uint32_t moduleTypeTagId;
157     if (isFindModuleTypeTag(moduleTypeTagId)) {
158         cameraDeviceRet = Camera::FindCameraMetadataItem(metadata, moduleTypeTagId, &item);
159         if (cameraDeviceRet == CAM_META_SUCCESS) {
160             moduleType_ = item.data.ui32[0];
161         }
162     }
163 
164     cameraDeviceRet = OHOS::Camera::FindCameraMetadataItem(metadata, OHOS_ABILITY_CAMERA_FOLD_STATUS, &item);
165 
166     foldStatus_ = (cameraDeviceRet == CAM_META_SUCCESS) ? item.data.u8[0] : OHOS_CAMERA_FOLD_STATUS_NONFOLDABLE;
167 
168     cameraDeviceRet = Camera::FindCameraMetadataItem(metadata, OHOS_ABILITY_CAMERA_MODES, &item);
169     if (cameraDeviceRet == CAM_META_SUCCESS) {
170         for (uint32_t i = 0; i < item.count; i++) {
171             auto it = g_metaToFwSupportedMode_.find(static_cast<HDI::Camera::V1_3::OperationMode>(item.data.u8[i]));
172             if (it != g_metaToFwSupportedMode_.end()) {
173                 supportedModes_.emplace_back(it->second);
174             }
175         }
176     }
177 
178     cameraDeviceRet = Camera::FindCameraMetadataItem(metadata, OHOS_ABILITY_STATISTICS_DETECT_TYPE, &item);
179     if (cameraDeviceRet == CAM_META_SUCCESS) {
180         for (uint32_t i = 0; i < item.count; i++) {
181             auto iterator = g_metaToFwCameraMetaDetect_.find(static_cast<StatisticsDetectType>(item.data.u8[i]));
182             if (iterator != g_metaToFwCameraMetaDetect_.end()) {
183                 objectTypes_.push_back(iterator->second);
184             }
185         }
186     }
187 
188     cameraDeviceRet = Camera::FindCameraMetadataItem(metadata, OHOS_ABILITY_PRELAUNCH_AVAILABLE, &item);
189 
190     isPrelaunch_ = (cameraDeviceRet == CAM_META_SUCCESS && item.data.u8[0] == 1);
191 
192     InitLensEquivalentFocalLength(metadata);
193 
194     MEDIA_INFO_LOG("camera position: %{public}d, camera type: %{public}d, camera connection type: %{public}d, "
195                    "camera foldScreen type: %{public}d, camera orientation: %{public}d, isretractable: %{public}d, "
196                    "moduleType: %{public}u, foldStatus: %{public}d", cameraPosition_, cameraType_, connectionType_,
197                    foldScreenType_, cameraOrientation_, isRetractable_, moduleType_, foldStatus_);
198 }
199 
InitLensEquivalentFocalLength(common_metadata_header_t * metadata)200 void CameraDevice::InitLensEquivalentFocalLength(common_metadata_header_t* metadata)
201 {
202     std::vector<int32_t> lensEquivalentFocalLength = {};
203     camera_metadata_item_t item;
204     int ret = Camera::FindCameraMetadataItem(metadata, OHOS_ABILITY_LENS_EQUIVALENT_FOCUS, &item);
205     if (ret == CAM_META_SUCCESS) {
206         for (uint32_t i = 0; i < item.count; i++) {
207             lensEquivalentFocalLength.emplace_back(item.data.i32[i]);
208         }
209     }
210     lensEquivalentFocalLength_ = lensEquivalentFocalLength;
211     MEDIA_INFO_LOG("CameraDevice::InitLensEquivalentFocalLength, lensEquivalentFocalLength size: %{public}zu, "
212         "lensEquivalentFocalLength: %{public}s", lensEquivalentFocalLength_.size(),
213         Container2String(lensEquivalentFocalLength_.begin(), lensEquivalentFocalLength_.end()).c_str());
214 }
215 
GetID()216 std::string CameraDevice::GetID()
217 {
218     return cameraID_;
219 }
220 
GetMetadata()221 std::shared_ptr<Camera::CameraMetadata> CameraDevice::GetMetadata()
222 {
223     std::lock_guard<std::mutex> lock(cachedMetadataMutex_);
224     CHECK_RETURN_RET(cachedMetadata_ != nullptr, cachedMetadata_);
225     auto cameraProxy = CameraManager::GetInstance()->GetServiceProxy();
226     CHECK_RETURN_RET_ELOG(cameraProxy == nullptr, nullptr, "GetMetadata Failed to get cameraProxy");
227     std::shared_ptr<OHOS::Camera::CameraMetadata> metadata;
228     cameraProxy->GetCameraAbility(cameraID_, metadata);
229     return metadata;
230 }
231 
GetCachedMetadata()232 std::shared_ptr<Camera::CameraMetadata> CameraDevice::GetCachedMetadata()
233 {
234     std::lock_guard<std::mutex> lock(cachedMetadataMutex_);
235     return cachedMetadata_;
236 }
237 
AddMetadata(std::shared_ptr<OHOS::Camera::CameraMetadata> srcMetadata)238 void CameraDevice::AddMetadata(std::shared_ptr<OHOS::Camera::CameraMetadata> srcMetadata)
239 {
240     std::lock_guard<std::mutex> lock(cachedMetadataMutex_);
241     cachedMetadata_ = MetadataCommonUtils::CopyMetadata(srcMetadata);
242 }
243 
ResetMetadata()244 void CameraDevice::ResetMetadata()
245 {
246     std::lock_guard<std::mutex> lock(cachedMetadataMutex_);
247     CHECK_RETURN(cachedMetadata_ == nullptr);
248     std::shared_ptr<OHOS::Camera::CameraMetadata> metadata = GetCameraAbility();
249     cachedMetadata_ = MetadataCommonUtils::CopyMetadata(metadata);
250 }
251 
GetCameraAbility()252 const std::shared_ptr<OHOS::Camera::CameraMetadata> CameraDevice::GetCameraAbility()
253 {
254     auto cameraProxy = CameraManager::GetInstance()->GetServiceProxy();
255     CHECK_RETURN_RET_ELOG(cameraProxy == nullptr, nullptr, "GetCameraAbility Failed to get cameraProxy");
256     std::shared_ptr<OHOS::Camera::CameraMetadata> metadata;
257     cameraProxy->GetCameraAbility(cameraID_, metadata);
258     return metadata;
259 }
260 
GetPosition()261 CameraPosition CameraDevice::GetPosition()
262 {
263     uint32_t apiCompatibleVersion = CameraApiVersion::GetApiVersion();
264     auto foldType = CameraManager::GetInstance()->GetFoldScreenType();
265     if (!foldType.empty() && foldType[0] == '4' && cameraPosition_ == CAMERA_POSITION_FRONT &&
266         foldStatus_ == OHOS_CAMERA_FOLD_STATUS_EXPANDED && !(CameraManager::GetInstance()->GetIsInWhiteList())) {
267         cameraPosition_ = CAMERA_POSITION_FOLD_INNER;
268         return cameraPosition_;
269     }
270     if (apiCompatibleVersion < CameraApiVersion::APIVersion::API_FOURTEEN && cameraPosition_ == CAMERA_POSITION_FRONT &&
271         foldScreenType_ == CAMERA_FOLDSCREEN_INNER) {
272         cameraPosition_ = CAMERA_POSITION_FOLD_INNER;
273     }
274     return cameraPosition_;
275 }
276 
GetUsedAsPosition()277 CameraPosition CameraDevice::GetUsedAsPosition()
278 {
279     return usedAsCameraPosition_;
280 }
281 
GetCameraType()282 CameraType CameraDevice::GetCameraType()
283 {
284     return cameraType_;
285 }
286 
GetConnectionType()287 ConnectionType CameraDevice::GetConnectionType()
288 {
289     return connectionType_;
290 }
291 
GetCameraFoldScreenType()292 CameraFoldScreenType CameraDevice::GetCameraFoldScreenType()
293 {
294     return foldScreenType_;
295 }
296 
GetSupportedModes() const297 std::vector<SceneMode> CameraDevice::GetSupportedModes() const
298 {
299     return supportedModes_;
300 }
301 
GetObjectTypes() const302 std::vector<MetadataObjectType> CameraDevice::GetObjectTypes() const
303 {
304     return objectTypes_;
305 }
306 
IsPrelaunch() const307 bool CameraDevice::IsPrelaunch() const
308 {
309     return isPrelaunch_;
310 }
311 
GetHostName()312 std::string CameraDevice::GetHostName()
313 {
314     return dmDeviceInfo_.deviceName;
315 }
316 
GetDeviceType()317 uint16_t CameraDevice::GetDeviceType()
318 {
319     return dmDeviceInfo_.deviceTypeId;
320 }
321 
GetNetWorkId()322 std::string CameraDevice::GetNetWorkId()
323 {
324     return dmDeviceInfo_.networkId;
325 }
326 
GetCameraOrientation()327 uint32_t CameraDevice::GetCameraOrientation()
328 {
329     return cameraOrientation_;
330 }
331 
GetisRetractable()332 bool CameraDevice::GetisRetractable()
333 {
334     return isRetractable_;
335 }
336 
GetLensEquivalentFocalLength()337 std::vector<int32_t> CameraDevice::GetLensEquivalentFocalLength()
338 {
339     MEDIA_INFO_LOG("CameraDevice::GetLensEquivalentFocalLength, lensEquivalentFocalLength size: %{public}zu, "
340         "lensEquivalentFocalLength: %{public}s", lensEquivalentFocalLength_.size(),
341         Container2String(lensEquivalentFocalLength_.begin(), lensEquivalentFocalLength_.end()).c_str());
342     return lensEquivalentFocalLength_;
343 }
344 
GetModuleType()345 uint32_t CameraDevice::GetModuleType()
346 {
347     return moduleType_;
348 }
349 
GetZoomRatioRange()350 std::vector<float> CameraDevice::GetZoomRatioRange()
351 {
352     int32_t minIndex = 0;
353     int32_t maxIndex = 1;
354     std::vector<float> range;
355 
356     CHECK_RETURN_RET(!zoomRatioRange_.empty(), zoomRatioRange_);
357 
358     int ret;
359     uint32_t zoomRangeCount = 2;
360     camera_metadata_item_t item;
361 
362     CHECK_RETURN_RET_ELOG(cachedMetadata_ == nullptr, {},
363         "Failed to get zoom ratio range with cachedMetadata_ is nullptr");
364     ret = Camera::FindCameraMetadataItem(cachedMetadata_->get(), OHOS_ABILITY_ZOOM_RATIO_RANGE, &item);
365     CHECK_RETURN_RET_ELOG(ret != CAM_META_SUCCESS, {},
366         "Failed to get zoom ratio range with return code %{public}d", ret);
367     CHECK_RETURN_RET_ELOG(item.count != zoomRangeCount, {},
368         "Failed to get zoom ratio range with return code %{public}d", ret);
369     range = {item.data.f[minIndex], item.data.f[maxIndex]};
370 
371     CHECK_RETURN_RET_ELOG(range[minIndex] > range[maxIndex], {},
372         "Invalid zoom range. min: %{public}f, max: %{public}f", range[minIndex], range[maxIndex]);
373     MEDIA_DEBUG_LOG("Zoom range min: %{public}f, max: %{public}f", range[minIndex], range[maxIndex]);
374 
375     zoomRatioRange_ = range;
376     return zoomRatioRange_;
377 }
378 
SetProfile(sptr<CameraOutputCapability> capability)379 void CameraDevice::SetProfile(sptr<CameraOutputCapability> capability)
380 {
381     CHECK_RETURN(capability == nullptr);
382     modePreviewProfiles_[NORMAL] = capability->GetPreviewProfiles();
383     modePhotoProfiles_[NORMAL] = capability->GetPhotoProfiles();
384     modeVideoProfiles_[NORMAL] = capability->GetVideoProfiles();
385     modeDepthProfiles_[NORMAL] = capability->GetDepthProfiles();
386     modePreviewProfiles_[CAPTURE] = capability->GetPreviewProfiles();
387     modePhotoProfiles_[CAPTURE] = capability->GetPhotoProfiles();
388     modeDepthProfiles_[CAPTURE] = capability->GetDepthProfiles();
389     modePreviewProfiles_[VIDEO] = capability->GetPreviewProfiles();
390     modePhotoProfiles_[VIDEO] = capability->GetPhotoProfiles();
391     modeVideoProfiles_[VIDEO] = capability->GetVideoProfiles();
392     modeDepthProfiles_[VIDEO] = capability->GetDepthProfiles();
393 }
394 
SetProfile(sptr<CameraOutputCapability> capability,int32_t modeName)395 void CameraDevice::SetProfile(sptr<CameraOutputCapability> capability, int32_t modeName)
396 {
397     CHECK_RETURN(capability == nullptr);
398     modePreviewProfiles_[modeName] = capability->GetPreviewProfiles();
399     modePhotoProfiles_[modeName] = capability->GetPhotoProfiles();
400     modeVideoProfiles_[modeName] = capability->GetVideoProfiles();
401     modeDepthProfiles_[modeName] = capability->GetDepthProfiles();
402 }
403 
GetExposureBiasRange()404 std::vector<float> CameraDevice::GetExposureBiasRange()
405 {
406     int32_t minIndex = 0;
407     int32_t maxIndex = 1;
408     uint32_t biasRangeCount = 2;
409 
410     if (isConcurrentLimted_ == 1) {
411         std::vector<float> compensationRangeLimted = {};
412         for (int i = 0; i < limtedCapabilitySave_.compensation.count; i++) {
413             float num = static_cast<float>(limtedCapabilitySave_.compensation.range[i]);
414             compensationRangeLimted.push_back(num);
415         }
416         exposureBiasRange_ = compensationRangeLimted;
417         return exposureBiasRange_;
418     }
419 
420     CHECK_RETURN_RET(!exposureBiasRange_.empty(), exposureBiasRange_);
421 
422     camera_metadata_item_t item;
423     int ret = Camera::FindCameraMetadataItem(GetMetadata()->get(), OHOS_ABILITY_AE_COMPENSATION_RANGE, &item);
424     CHECK_RETURN_RET_ELOG(ret != CAM_META_SUCCESS, {},
425         "Failed to get exposure compensation range with return code %{public}d", ret);
426     CHECK_RETURN_RET_ELOG(item.count != biasRangeCount, {},
427         "Invalid exposure compensation range count: %{public}d", item.count);
428     int32_t minRange = item.data.i32[minIndex];
429     int32_t maxRange = item.data.i32[maxIndex];
430 
431     CHECK_RETURN_RET_ELOG(minRange > maxRange, {},
432         "Invalid exposure compensation range. min: %{public}d, max: %{public}d", minRange, maxRange);
433 
434     MEDIA_DEBUG_LOG("Exposure hdi compensation min: %{public}d, max: %{public}d", minRange, maxRange);
435     exposureBiasRange_ = { static_cast<float>(minRange), static_cast<float>(maxRange) };
436     return exposureBiasRange_;
437 }
438 
SetCameraDeviceUsedAsPosition(CameraPosition usedAsPosition)439 void CameraDevice::SetCameraDeviceUsedAsPosition(CameraPosition usedAsPosition)
440 {
441     MEDIA_INFO_LOG("CameraDevice::SetCameraDeviceUsedAsPosition params: %{public}u", usedAsPosition);
442     usedAsCameraPosition_ = usedAsPosition;
443 }
444 
GetSupportedFoldStatus()445 uint32_t CameraDevice::GetSupportedFoldStatus()
446 {
447     return foldStatus_;
448 }
449 
SetCameraId(std::string devID)450 void CameraDevice::SetCameraId(std::string devID)
451 {
452     cameraID_ = devID;
453 }
454 
isConcurrentDeviceType()455 bool CameraDevice::isConcurrentDeviceType()
456 {
457     return isConcurrentDevice_;
458 }
459 
SetConcurrentDeviceType(bool changeType)460 void CameraDevice::SetConcurrentDeviceType(bool changeType)
461 {
462     isConcurrentDevice_ = changeType;
463 }
464 
465 } // namespace CameraStandard
466 } // namespace OHOS
467