1 /* 2 * Copyright (c) 2024-2024 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 "ability/camera_ability_const.h" 17 #include "camera_util.h" 18 #include "camera/v1_3/types.h" 19 #include "capture_scene_const.h" 20 #include "display/graphic/common/v1_0/cm_color_space.h" 21 #include "istream_metadata.h" 22 namespace OHOS { 23 namespace CameraStandard { 24 using OHOS::HDI::Camera::V1_3::OperationMode; 25 26 const std::unordered_map<camera_flash_mode_enum_t, FlashMode> g_metaFlashModeMap_ = { 27 {OHOS_CAMERA_FLASH_MODE_CLOSE, FLASH_MODE_CLOSE}, 28 {OHOS_CAMERA_FLASH_MODE_OPEN, FLASH_MODE_OPEN}, 29 {OHOS_CAMERA_FLASH_MODE_AUTO, FLASH_MODE_AUTO}, 30 {OHOS_CAMERA_FLASH_MODE_ALWAYS_OPEN, FLASH_MODE_ALWAYS_OPEN} 31 }; 32 33 const std::unordered_map<camera_exposure_mode_enum_t, ExposureMode> g_metaExposureModeMap_ = { 34 {OHOS_CAMERA_EXPOSURE_MODE_LOCKED, EXPOSURE_MODE_LOCKED}, 35 {OHOS_CAMERA_EXPOSURE_MODE_AUTO, EXPOSURE_MODE_AUTO}, 36 {OHOS_CAMERA_EXPOSURE_MODE_CONTINUOUS_AUTO, EXPOSURE_MODE_CONTINUOUS_AUTO} 37 }; 38 39 const std::unordered_map<camera_focus_mode_enum_t, FocusMode> g_metaFocusModeMap_ = { 40 {OHOS_CAMERA_FOCUS_MODE_MANUAL, FOCUS_MODE_MANUAL}, 41 {OHOS_CAMERA_FOCUS_MODE_CONTINUOUS_AUTO, FOCUS_MODE_CONTINUOUS_AUTO}, 42 {OHOS_CAMERA_FOCUS_MODE_AUTO, FOCUS_MODE_AUTO}, 43 {OHOS_CAMERA_FOCUS_MODE_LOCKED, FOCUS_MODE_LOCKED} 44 }; 45 46 const std::unordered_map<CameraQualityPrioritization, QualityPrioritization> g_metaQualityPrioritizationMap_ = { 47 { OHOS_CAMERA_QUALITY_PRIORITIZATION_HIGH_QUALITY, HIGH_QUALITY }, 48 { OHOS_CAMERA_QUALITY_PRIORITIZATION_POWER_BALANCE, POWER_BALANCE } 49 }; 50 51 const std::unordered_map<camera_beauty_type_t, BeautyType> g_metaBeautyTypeMap_ = { 52 {OHOS_CAMERA_BEAUTY_TYPE_AUTO, AUTO_TYPE}, 53 {OHOS_CAMERA_BEAUTY_TYPE_SKIN_SMOOTH, SKIN_SMOOTH}, 54 {OHOS_CAMERA_BEAUTY_TYPE_FACE_SLENDER, FACE_SLENDER}, 55 {OHOS_CAMERA_BEAUTY_TYPE_SKIN_TONE, SKIN_TONE} 56 }; 57 58 const std::unordered_map<camera_device_metadata_tag_t, BeautyType> g_metaBeautyAbilityMap_ = { 59 {OHOS_ABILITY_BEAUTY_AUTO_VALUES, AUTO_TYPE}, 60 {OHOS_ABILITY_BEAUTY_SKIN_SMOOTH_VALUES, SKIN_SMOOTH}, 61 {OHOS_ABILITY_BEAUTY_FACE_SLENDER_VALUES, FACE_SLENDER}, 62 {OHOS_ABILITY_BEAUTY_SKIN_TONE_VALUES, SKIN_TONE} 63 }; 64 65 const std::unordered_map<camera_xmage_color_type_t, ColorEffect> g_metaColorEffectMap_ = { 66 {CAMERA_CUSTOM_COLOR_NORMAL, COLOR_EFFECT_NORMAL}, 67 {CAMERA_CUSTOM_COLOR_BRIGHT, COLOR_EFFECT_BRIGHT}, 68 {CAMERA_CUSTOM_COLOR_SOFT, COLOR_EFFECT_SOFT}, 69 {CAMERA_CUSTOM_COLOR_MONO, COLOR_EFFECT_BLACK_WHITE} 70 }; 71 72 const std::unordered_map<CameraVideoStabilizationMode, VideoStabilizationMode> g_metaVideoStabModesMap_ = { 73 {OHOS_CAMERA_VIDEO_STABILIZATION_OFF, OFF}, 74 {OHOS_CAMERA_VIDEO_STABILIZATION_LOW, LOW}, 75 {OHOS_CAMERA_VIDEO_STABILIZATION_MIDDLE, MIDDLE}, 76 {OHOS_CAMERA_VIDEO_STABILIZATION_HIGH, HIGH}, 77 {OHOS_CAMERA_VIDEO_STABILIZATION_AUTO, AUTO} 78 }; 79 80 const std::unordered_map<camera_portrait_effect_type_t, PortraitEffect> g_metaToFwPortraitEffect_ = { 81 {OHOS_CAMERA_PORTRAIT_EFFECT_OFF, OFF_EFFECT}, 82 {OHOS_CAMERA_PORTRAIT_CIRCLES, CIRCLES}, 83 {OHOS_CAMERA_PORTRAIT_HEART, HEART}, 84 {OHOS_CAMERA_PORTRAIT_ROTATED, ROTATED}, 85 {OHOS_CAMERA_PORTRAIT_STUDIO, STUDIO}, 86 {OHOS_CAMERA_PORTRAIT_THEATER, THEATER}, 87 }; 88 89 const std::unordered_map<VideoStabilizationMode, CameraVideoStabilizationMode> g_fwkVideoStabModesMap_ = { 90 {OFF, OHOS_CAMERA_VIDEO_STABILIZATION_OFF}, 91 {LOW, OHOS_CAMERA_VIDEO_STABILIZATION_LOW}, 92 {MIDDLE, OHOS_CAMERA_VIDEO_STABILIZATION_MIDDLE}, 93 {HIGH, OHOS_CAMERA_VIDEO_STABILIZATION_HIGH}, 94 {AUTO, OHOS_CAMERA_VIDEO_STABILIZATION_AUTO} 95 }; 96 97 const std::unordered_map<ExposureMode, camera_exposure_mode_enum_t> g_fwkExposureModeMap_ = { 98 {EXPOSURE_MODE_LOCKED, OHOS_CAMERA_EXPOSURE_MODE_LOCKED}, 99 {EXPOSURE_MODE_AUTO, OHOS_CAMERA_EXPOSURE_MODE_AUTO}, 100 {EXPOSURE_MODE_CONTINUOUS_AUTO, OHOS_CAMERA_EXPOSURE_MODE_CONTINUOUS_AUTO} 101 }; 102 103 104 const std::map<CM_ColorSpaceType, ColorSpace> g_metaColorSpaceMap_ = { 105 {CM_COLORSPACE_NONE, COLOR_SPACE_UNKNOWN}, 106 {CM_P3_FULL, DISPLAY_P3}, 107 {CM_SRGB_FULL, SRGB}, 108 {CM_BT709_FULL, BT709}, 109 {CM_BT2020_HLG_FULL, BT2020_HLG}, 110 {CM_BT2020_PQ_FULL, BT2020_PQ}, 111 {CM_P3_HLG_FULL, P3_HLG}, 112 {CM_P3_PQ_FULL, P3_PQ}, 113 {CM_P3_LIMIT, DISPLAY_P3_LIMIT}, 114 {CM_SRGB_LIMIT, SRGB_LIMIT}, 115 {CM_BT709_LIMIT, BT709_LIMIT}, 116 {CM_BT2020_HLG_LIMIT, BT2020_HLG_LIMIT}, 117 {CM_BT2020_PQ_LIMIT, BT2020_PQ_LIMIT}, 118 {CM_P3_HLG_LIMIT, P3_HLG_LIMIT}, 119 {CM_P3_PQ_LIMIT, P3_PQ_LIMIT} 120 }; 121 122 const std::unordered_map<FocusMode, camera_focus_mode_enum_t> g_fwkFocusModeMap_ = { 123 {FOCUS_MODE_MANUAL, OHOS_CAMERA_FOCUS_MODE_MANUAL}, 124 {FOCUS_MODE_CONTINUOUS_AUTO, OHOS_CAMERA_FOCUS_MODE_CONTINUOUS_AUTO}, 125 {FOCUS_MODE_AUTO, OHOS_CAMERA_FOCUS_MODE_AUTO}, 126 {FOCUS_MODE_LOCKED, OHOS_CAMERA_FOCUS_MODE_LOCKED} 127 }; 128 129 const std::unordered_map<QualityPrioritization, CameraQualityPrioritization> g_fwkQualityPrioritizationMap_ = { 130 { HIGH_QUALITY, OHOS_CAMERA_QUALITY_PRIORITIZATION_HIGH_QUALITY }, 131 { POWER_BALANCE, OHOS_CAMERA_QUALITY_PRIORITIZATION_POWER_BALANCE } 132 }; 133 134 const std::unordered_map<ColorEffect, camera_xmage_color_type_t> g_fwkColorEffectMap_ = { 135 {COLOR_EFFECT_NORMAL, CAMERA_CUSTOM_COLOR_NORMAL}, 136 {COLOR_EFFECT_BRIGHT, CAMERA_CUSTOM_COLOR_BRIGHT}, 137 {COLOR_EFFECT_SOFT, CAMERA_CUSTOM_COLOR_SOFT}, 138 {COLOR_EFFECT_BLACK_WHITE, CAMERA_CUSTOM_COLOR_MONO} 139 }; 140 141 const std::unordered_map<FlashMode, camera_flash_mode_enum_t> g_fwkFlashModeMap_ = { 142 {FLASH_MODE_CLOSE, OHOS_CAMERA_FLASH_MODE_CLOSE}, 143 {FLASH_MODE_OPEN, OHOS_CAMERA_FLASH_MODE_OPEN}, 144 {FLASH_MODE_AUTO, OHOS_CAMERA_FLASH_MODE_AUTO}, 145 {FLASH_MODE_ALWAYS_OPEN, OHOS_CAMERA_FLASH_MODE_ALWAYS_OPEN} 146 }; 147 148 const std::unordered_map<BeautyType, camera_beauty_type_t> g_fwkBeautyTypeMap_ = { 149 {AUTO_TYPE, OHOS_CAMERA_BEAUTY_TYPE_AUTO}, 150 {SKIN_SMOOTH, OHOS_CAMERA_BEAUTY_TYPE_SKIN_SMOOTH}, 151 {FACE_SLENDER, OHOS_CAMERA_BEAUTY_TYPE_FACE_SLENDER}, 152 {SKIN_TONE, OHOS_CAMERA_BEAUTY_TYPE_SKIN_TONE} 153 }; 154 155 const std::unordered_map<BeautyType, camera_device_metadata_tag_t> g_fwkBeautyAbilityMap_ = { 156 {AUTO_TYPE, OHOS_ABILITY_BEAUTY_AUTO_VALUES}, 157 {SKIN_SMOOTH, OHOS_ABILITY_BEAUTY_SKIN_SMOOTH_VALUES}, 158 {FACE_SLENDER, OHOS_ABILITY_BEAUTY_FACE_SLENDER_VALUES}, 159 {SKIN_TONE, OHOS_ABILITY_BEAUTY_SKIN_TONE_VALUES} 160 }; 161 162 const std::unordered_map<PortraitThemeType, CameraPortraitThemeTypes> g_fwkPortraitThemeTypeMap_ = { 163 {PortraitThemeType::NATURAL, OHOS_CAMERA_PORTRAIT_THEME_TYPE_NATURAL}, 164 {PortraitThemeType::DELICATE, OHOS_CAMERA_PORTRAIT_THEME_TYPE_DELICATE}, 165 {PortraitThemeType::STYLISH, OHOS_CAMERA_PORTRAIT_THEME_TYPE_STYLISH}, 166 }; 167 168 const std::unordered_map<CameraPortraitThemeTypes, PortraitThemeType> g_metaPortraitThemeTypeMap_ = { 169 {OHOS_CAMERA_PORTRAIT_THEME_TYPE_NATURAL, PortraitThemeType::NATURAL}, 170 {OHOS_CAMERA_PORTRAIT_THEME_TYPE_DELICATE, PortraitThemeType::DELICATE}, 171 {OHOS_CAMERA_PORTRAIT_THEME_TYPE_STYLISH, PortraitThemeType::STYLISH}, 172 }; 173 174 const std::vector<VideoRotation> g_fwkVideoRotationVector_ = { 175 VideoRotation::ROTATION_0, 176 VideoRotation::ROTATION_90, 177 VideoRotation::ROTATION_180, 178 VideoRotation::ROTATION_270 179 }; 180 181 const std::unordered_map<OperationMode, SceneMode> g_metaToFwSupportedMode_ = { 182 {OperationMode::NORMAL, NORMAL}, 183 {OperationMode::CAPTURE, CAPTURE}, 184 {OperationMode::VIDEO, VIDEO}, 185 {OperationMode::PORTRAIT, PORTRAIT}, 186 {OperationMode::NIGHT, NIGHT}, 187 {OperationMode::PROFESSIONAL_PHOTO, PROFESSIONAL_PHOTO}, 188 {OperationMode::PROFESSIONAL_VIDEO, PROFESSIONAL_VIDEO}, 189 {OperationMode::SLOW_MOTION, SLOW_MOTION}, 190 {OperationMode::SCAN_CODE, SCAN}, 191 {OperationMode::CAPTURE_MACRO, CAPTURE_MACRO}, 192 {OperationMode::VIDEO_MACRO, VIDEO_MACRO}, 193 {OperationMode::HIGH_FRAME_RATE, HIGH_FRAME_RATE}, 194 {OperationMode::HIGH_RESOLUTION_PHOTO, HIGH_RES_PHOTO}, 195 {OperationMode::SECURE, SECURE}, 196 {OperationMode::QUICK_SHOT_PHOTO, QUICK_SHOT_PHOTO}, 197 {OperationMode::APERTURE_VIDEO, APERTURE_VIDEO}, 198 {OperationMode::PANORAMA_PHOTO, PANORAMA_PHOTO}, 199 {OperationMode::LIGHT_PAINTING, LIGHT_PAINTING}, 200 {OperationMode::TIMELAPSE_PHOTO, TIMELAPSE_PHOTO}, 201 {OperationMode::FLUORESCENCE_PHOTO, FLUORESCENCE_PHOTO}, 202 }; 203 204 const std::unordered_map<SceneMode, OperationMode> g_fwToMetaSupportedMode_ = { 205 {NORMAL, OperationMode::NORMAL}, 206 {CAPTURE, OperationMode::CAPTURE}, 207 {VIDEO, OperationMode::VIDEO}, 208 {PORTRAIT, OperationMode::PORTRAIT}, 209 {NIGHT, OperationMode::NIGHT}, 210 {PROFESSIONAL_PHOTO, OperationMode::PROFESSIONAL_PHOTO}, 211 {PROFESSIONAL_VIDEO, OperationMode::PROFESSIONAL_VIDEO}, 212 {SLOW_MOTION, OperationMode::SLOW_MOTION}, 213 {SCAN, OperationMode::SCAN_CODE}, 214 {CAPTURE_MACRO, OperationMode::CAPTURE_MACRO}, 215 {VIDEO_MACRO, OperationMode::VIDEO_MACRO}, 216 {HIGH_FRAME_RATE, OperationMode::HIGH_FRAME_RATE}, 217 {HIGH_RES_PHOTO, OperationMode::HIGH_RESOLUTION_PHOTO}, 218 {SECURE, OperationMode::SECURE}, 219 {QUICK_SHOT_PHOTO, OperationMode::QUICK_SHOT_PHOTO}, 220 {APERTURE_VIDEO, OperationMode::APERTURE_VIDEO}, 221 {PANORAMA_PHOTO, OperationMode::PANORAMA_PHOTO}, 222 {LIGHT_PAINTING, OperationMode::LIGHT_PAINTING}, 223 {TIMELAPSE_PHOTO, OperationMode::TIMELAPSE_PHOTO}, 224 {FLUORESCENCE_PHOTO, OperationMode::FLUORESCENCE_PHOTO}, 225 }; 226 227 const std::unordered_map<StatisticsDetectType, MetadataObjectType> g_metaToFwCameraMetaDetect_ = { 228 {StatisticsDetectType::OHOS_CAMERA_HUMAN_FACE_DETECT, MetadataObjectType::FACE}, 229 {StatisticsDetectType::OHOS_CAMERA_HUMAN_BODY_DETECT, MetadataObjectType::HUMAN_BODY}, 230 {StatisticsDetectType::OHOS_CAMERA_CAT_FACE_DETECT, MetadataObjectType::CAT_FACE}, 231 {StatisticsDetectType::OHOS_CAMERA_CAT_BODY_DETECT, MetadataObjectType::CAT_BODY}, 232 {StatisticsDetectType::OHOS_CAMERA_DOG_FACE_DETECT, MetadataObjectType::DOG_FACE}, 233 {StatisticsDetectType::OHOS_CAMERA_DOG_BODY_DETECT, MetadataObjectType::DOG_BODY}, 234 {StatisticsDetectType::OHOS_CAMERA_SALIENT_DETECT, MetadataObjectType::SALIENT_DETECTION}, 235 {StatisticsDetectType::OHOS_CAMERA_BAR_CODE_DETECT, MetadataObjectType::BAR_CODE_DETECTION}, 236 {StatisticsDetectType::OHOS_CAMERA_BASE_FACE_DETECT, MetadataObjectType::BASE_FACE_DETECTION} 237 }; 238 239 const std::unordered_map<camera_focus_range_type_t, FocusRangeType> g_metaFocusRangeTypeMap_ = { 240 {OHOS_CAMERA_FOCUS_RANGE_AUTO, FocusRangeType::FOCUS_RANGE_TYPE_AUTO}, 241 {OHOS_CAMERA_FOCUS_RANGE_NEAR, FocusRangeType::FOCUS_RANGE_TYPE_NEAR} 242 }; 243 244 const std::unordered_map<FocusRangeType, camera_focus_range_type_t> g_fwkocusRangeTypeMap_ = { 245 {FocusRangeType::FOCUS_RANGE_TYPE_AUTO, OHOS_CAMERA_FOCUS_RANGE_AUTO}, 246 {FocusRangeType::FOCUS_RANGE_TYPE_NEAR, OHOS_CAMERA_FOCUS_RANGE_NEAR} 247 }; 248 249 const std::unordered_map<camera_focus_driven_type_t, FocusDrivenType> g_metaFocusDrivenTypeMap_ = { 250 {OHOS_CAMERA_FOCUS_DRIVEN_AUTO, FocusDrivenType::FOCUS_DRIVEN_TYPE_AUTO}, 251 {OHOS_CAMERA_FOCUS_DRIVEN_FACE, FocusDrivenType::FOCUS_DRIVEN_TYPE_FACE} 252 }; 253 254 const std::unordered_map<FocusDrivenType, camera_focus_driven_type_t> g_fwkFocusDrivenTypeMap_ = { 255 {FocusDrivenType::FOCUS_DRIVEN_TYPE_AUTO, OHOS_CAMERA_FOCUS_DRIVEN_AUTO}, 256 {FocusDrivenType::FOCUS_DRIVEN_TYPE_FACE, OHOS_CAMERA_FOCUS_DRIVEN_FACE} 257 }; 258 259 const std::unordered_map<camera_color_reservation_type_t, ColorReservationType> 260 g_metaColorReservationTypeMap_ = { 261 {OHOS_CAMERA_COLOR_RESERVATION_NONE, ColorReservationType::COLOR_RESERVATION_TYPE_NONE}, 262 {OHOS_CAMERA_COLOR_RESERVATION_PORTRAIT, ColorReservationType::COLOR_RESERVATION_TYPE_PORTRAIT} 263 }; 264 265 const std::unordered_map<ColorReservationType, camera_color_reservation_type_t> 266 g_fwkColorReservationTypeMap_ = { 267 {ColorReservationType::COLOR_RESERVATION_TYPE_NONE, OHOS_CAMERA_COLOR_RESERVATION_NONE}, 268 {ColorReservationType::COLOR_RESERVATION_TYPE_PORTRAIT, OHOS_CAMERA_COLOR_RESERVATION_PORTRAIT} 269 }; 270 } // namespace CameraStandard 271 } // namespace OHOS 272