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 "display/graphic/common/v1_0/cm_color_space.h"
19  
20  namespace OHOS {
21  namespace CameraStandard {
22  
23  const std::unordered_map<camera_flash_mode_enum_t, FlashMode> g_metaFlashModeMap_ = {
24      {OHOS_CAMERA_FLASH_MODE_CLOSE, FLASH_MODE_CLOSE},
25      {OHOS_CAMERA_FLASH_MODE_OPEN, FLASH_MODE_OPEN},
26      {OHOS_CAMERA_FLASH_MODE_AUTO, FLASH_MODE_AUTO},
27      {OHOS_CAMERA_FLASH_MODE_ALWAYS_OPEN, FLASH_MODE_ALWAYS_OPEN}
28  };
29  
30  const std::unordered_map<camera_exposure_mode_enum_t, ExposureMode> g_metaExposureModeMap_ = {
31      {OHOS_CAMERA_EXPOSURE_MODE_LOCKED, EXPOSURE_MODE_LOCKED},
32      {OHOS_CAMERA_EXPOSURE_MODE_AUTO, EXPOSURE_MODE_AUTO},
33      {OHOS_CAMERA_EXPOSURE_MODE_CONTINUOUS_AUTO, EXPOSURE_MODE_CONTINUOUS_AUTO}
34  };
35  
36  const std::unordered_map<camera_focus_mode_enum_t, FocusMode> g_metaFocusModeMap_ = {
37      {OHOS_CAMERA_FOCUS_MODE_MANUAL, FOCUS_MODE_MANUAL},
38      {OHOS_CAMERA_FOCUS_MODE_CONTINUOUS_AUTO, FOCUS_MODE_CONTINUOUS_AUTO},
39      {OHOS_CAMERA_FOCUS_MODE_AUTO, FOCUS_MODE_AUTO},
40      {OHOS_CAMERA_FOCUS_MODE_LOCKED, FOCUS_MODE_LOCKED}
41  };
42  
43  const std::unordered_map<CameraQualityPrioritization, QualityPrioritization> g_metaQualityPrioritizationMap_ = {
44      { OHOS_CAMERA_QUALITY_PRIORITIZATION_HIGH_QUALITY, HIGH_QUALITY },
45      { OHOS_CAMERA_QUALITY_PRIORITIZATION_POWER_BALANCE, POWER_BALANCE }
46  };
47  
48  const std::unordered_map<camera_beauty_type_t, BeautyType> g_metaBeautyTypeMap_ = {
49      {OHOS_CAMERA_BEAUTY_TYPE_AUTO, AUTO_TYPE},
50      {OHOS_CAMERA_BEAUTY_TYPE_SKIN_SMOOTH, SKIN_SMOOTH},
51      {OHOS_CAMERA_BEAUTY_TYPE_FACE_SLENDER, FACE_SLENDER},
52      {OHOS_CAMERA_BEAUTY_TYPE_SKIN_TONE, SKIN_TONE}
53  };
54  
55  const std::unordered_map<camera_device_metadata_tag_t, BeautyType> g_metaBeautyAbilityMap_ = {
56      {OHOS_ABILITY_BEAUTY_AUTO_VALUES, AUTO_TYPE},
57      {OHOS_ABILITY_BEAUTY_SKIN_SMOOTH_VALUES, SKIN_SMOOTH},
58      {OHOS_ABILITY_BEAUTY_FACE_SLENDER_VALUES, FACE_SLENDER},
59      {OHOS_ABILITY_BEAUTY_SKIN_TONE_VALUES, SKIN_TONE}
60  };
61  
62  const std::unordered_map<camera_xmage_color_type_t, ColorEffect> g_metaColorEffectMap_ = {
63      {CAMERA_CUSTOM_COLOR_NORMAL, COLOR_EFFECT_NORMAL},
64      {CAMERA_CUSTOM_COLOR_BRIGHT, COLOR_EFFECT_BRIGHT},
65      {CAMERA_CUSTOM_COLOR_SOFT, COLOR_EFFECT_SOFT},
66      {CAMERA_CUSTOM_COLOR_MONO, COLOR_EFFECT_BLACK_WHITE}
67  };
68  
69  const std::unordered_map<CameraVideoStabilizationMode, VideoStabilizationMode> g_metaVideoStabModesMap_ = {
70      {OHOS_CAMERA_VIDEO_STABILIZATION_OFF, OFF},
71      {OHOS_CAMERA_VIDEO_STABILIZATION_LOW, LOW},
72      {OHOS_CAMERA_VIDEO_STABILIZATION_MIDDLE, MIDDLE},
73      {OHOS_CAMERA_VIDEO_STABILIZATION_HIGH, HIGH},
74      {OHOS_CAMERA_VIDEO_STABILIZATION_AUTO, AUTO}
75  };
76  
77  const std::unordered_map<camera_portrait_effect_type_t, PortraitEffect> g_metaToFwPortraitEffect_ = {
78      {OHOS_CAMERA_PORTRAIT_EFFECT_OFF, OFF_EFFECT},
79      {OHOS_CAMERA_PORTRAIT_CIRCLES, CIRCLES},
80      {OHOS_CAMERA_PORTRAIT_HEART, HEART},
81      {OHOS_CAMERA_PORTRAIT_ROTATED, ROTATED},
82      {OHOS_CAMERA_PORTRAIT_STUDIO, STUDIO},
83      {OHOS_CAMERA_PORTRAIT_THEATER, THEATER},
84  };
85  
86  const std::unordered_map<VideoStabilizationMode, CameraVideoStabilizationMode> g_fwkVideoStabModesMap_ = {
87      {OFF, OHOS_CAMERA_VIDEO_STABILIZATION_OFF},
88      {LOW, OHOS_CAMERA_VIDEO_STABILIZATION_LOW},
89      {MIDDLE, OHOS_CAMERA_VIDEO_STABILIZATION_MIDDLE},
90      {HIGH, OHOS_CAMERA_VIDEO_STABILIZATION_HIGH},
91      {AUTO, OHOS_CAMERA_VIDEO_STABILIZATION_AUTO}
92  };
93  
94  const std::unordered_map<ExposureMode, camera_exposure_mode_enum_t> g_fwkExposureModeMap_ = {
95      {EXPOSURE_MODE_LOCKED, OHOS_CAMERA_EXPOSURE_MODE_LOCKED},
96      {EXPOSURE_MODE_AUTO, OHOS_CAMERA_EXPOSURE_MODE_AUTO},
97      {EXPOSURE_MODE_CONTINUOUS_AUTO, OHOS_CAMERA_EXPOSURE_MODE_CONTINUOUS_AUTO}
98  };
99  
100  
101  const std::map<CM_ColorSpaceType, ColorSpace> g_metaColorSpaceMap_ = {
102      {CM_COLORSPACE_NONE, COLOR_SPACE_UNKNOWN},
103      {CM_P3_FULL, DISPLAY_P3},
104      {CM_SRGB_FULL, SRGB},
105      {CM_BT709_FULL, BT709},
106      {CM_BT2020_HLG_FULL, BT2020_HLG},
107      {CM_BT2020_PQ_FULL, BT2020_PQ},
108      {CM_P3_HLG_FULL, P3_HLG},
109      {CM_P3_PQ_FULL, P3_PQ},
110      {CM_P3_LIMIT, DISPLAY_P3_LIMIT},
111      {CM_SRGB_LIMIT, SRGB_LIMIT},
112      {CM_BT709_LIMIT, BT709_LIMIT},
113      {CM_BT2020_HLG_LIMIT, BT2020_HLG_LIMIT},
114      {CM_BT2020_PQ_LIMIT, BT2020_PQ_LIMIT},
115      {CM_P3_HLG_LIMIT, P3_HLG_LIMIT},
116      {CM_P3_PQ_LIMIT, P3_PQ_LIMIT}
117  };
118  
119  const std::unordered_map<FocusMode, camera_focus_mode_enum_t> g_fwkFocusModeMap_ = {
120      {FOCUS_MODE_MANUAL, OHOS_CAMERA_FOCUS_MODE_MANUAL},
121      {FOCUS_MODE_CONTINUOUS_AUTO, OHOS_CAMERA_FOCUS_MODE_CONTINUOUS_AUTO},
122      {FOCUS_MODE_AUTO, OHOS_CAMERA_FOCUS_MODE_AUTO},
123      {FOCUS_MODE_LOCKED, OHOS_CAMERA_FOCUS_MODE_LOCKED}
124  };
125  
126  const std::unordered_map<QualityPrioritization, CameraQualityPrioritization> g_fwkQualityPrioritizationMap_ = {
127      { HIGH_QUALITY, OHOS_CAMERA_QUALITY_PRIORITIZATION_HIGH_QUALITY },
128      { POWER_BALANCE, OHOS_CAMERA_QUALITY_PRIORITIZATION_POWER_BALANCE }
129  };
130  
131  const std::unordered_map<ColorEffect, camera_xmage_color_type_t> g_fwkColorEffectMap_ = {
132      {COLOR_EFFECT_NORMAL, CAMERA_CUSTOM_COLOR_NORMAL},
133      {COLOR_EFFECT_BRIGHT, CAMERA_CUSTOM_COLOR_BRIGHT},
134      {COLOR_EFFECT_SOFT, CAMERA_CUSTOM_COLOR_SOFT},
135      {COLOR_EFFECT_BLACK_WHITE, CAMERA_CUSTOM_COLOR_MONO}
136  };
137  
138  const std::unordered_map<FlashMode, camera_flash_mode_enum_t> g_fwkFlashModeMap_ = {
139      {FLASH_MODE_CLOSE, OHOS_CAMERA_FLASH_MODE_CLOSE},
140      {FLASH_MODE_OPEN, OHOS_CAMERA_FLASH_MODE_OPEN},
141      {FLASH_MODE_AUTO, OHOS_CAMERA_FLASH_MODE_AUTO},
142      {FLASH_MODE_ALWAYS_OPEN, OHOS_CAMERA_FLASH_MODE_ALWAYS_OPEN}
143  };
144  
145  const std::unordered_map<BeautyType, camera_beauty_type_t> g_fwkBeautyTypeMap_ = {
146      {AUTO_TYPE, OHOS_CAMERA_BEAUTY_TYPE_AUTO},
147      {SKIN_SMOOTH, OHOS_CAMERA_BEAUTY_TYPE_SKIN_SMOOTH},
148      {FACE_SLENDER, OHOS_CAMERA_BEAUTY_TYPE_FACE_SLENDER},
149      {SKIN_TONE, OHOS_CAMERA_BEAUTY_TYPE_SKIN_TONE}
150  };
151  
152  const std::unordered_map<BeautyType, camera_device_metadata_tag_t> g_fwkBeautyAbilityMap_ = {
153      {AUTO_TYPE, OHOS_ABILITY_BEAUTY_AUTO_VALUES},
154      {SKIN_SMOOTH, OHOS_ABILITY_BEAUTY_SKIN_SMOOTH_VALUES},
155      {FACE_SLENDER, OHOS_ABILITY_BEAUTY_FACE_SLENDER_VALUES},
156      {SKIN_TONE, OHOS_ABILITY_BEAUTY_SKIN_TONE_VALUES}
157  };
158  
159  const std::unordered_map<PortraitThemeType, CameraPortraitThemeTypes> g_fwkPortraitThemeTypeMap_ = {
160      {PortraitThemeType::NATURAL, OHOS_CAMERA_PORTRAIT_THEME_TYPE_NATURAL},
161      {PortraitThemeType::DELICATE, OHOS_CAMERA_PORTRAIT_THEME_TYPE_DELICATE},
162      {PortraitThemeType::STYLISH, OHOS_CAMERA_PORTRAIT_THEME_TYPE_STYLISH},
163  };
164  
165  const std::unordered_map<CameraPortraitThemeTypes, PortraitThemeType> g_metaPortraitThemeTypeMap_ = {
166      {OHOS_CAMERA_PORTRAIT_THEME_TYPE_NATURAL, PortraitThemeType::NATURAL},
167      {OHOS_CAMERA_PORTRAIT_THEME_TYPE_DELICATE, PortraitThemeType::DELICATE},
168      {OHOS_CAMERA_PORTRAIT_THEME_TYPE_STYLISH, PortraitThemeType::STYLISH},
169  };
170  
171  const std::vector<VideoRotation> g_fwkVideoRotationVector_ = {
172      VideoRotation::ROTATION_0,
173      VideoRotation::ROTATION_90,
174      VideoRotation::ROTATION_180,
175      VideoRotation::ROTATION_270
176  };
177  } // namespace CameraStandard
178  } // namespace OHOS
179