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