• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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