1 /* 2 * Copyright (c) 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 #ifndef OHOS_OH_NATIVE_DISPLAY_MANAGER_INNER_H 17 #define OHOS_OH_NATIVE_DISPLAY_MANAGER_INNER_H 18 19 #include <cstdint> 20 #include <map> 21 #include <set> 22 23 #include "dm_common.h" 24 25 namespace OHOS { 26 namespace Rosen { 27 enum class DM_DisplayStateMode : uint32_t { 28 STATE_UNKNOWN = 0, 29 STATE_OFF, 30 STATE_ON, 31 STATE_DOZE, 32 STATE_DOZE_SUSPEND, 33 STATE_VR, 34 STATE_ON_SUSPEND 35 }; 36 37 enum class DM_ColorSpace : uint32_t { 38 UNKNOWN = 0, 39 ADOBE_RGB = 1, 40 BT2020_HLG = 2, 41 BT2020_PQ = 3, 42 BT601_EBU = 4, 43 BT601_SMPTE_C = 5, 44 BT709 = 6, 45 P3_HLG = 7, 46 P3_PQ = 8, 47 DISPLAY_P3 = 9, 48 SRGB = 10, 49 LINEAR_SRGB = 11, 50 LINEAR_P3 = 12, 51 LINEAR_BT2020 = 13, 52 }; 53 54 enum class DM_HDRFormat : uint32_t { 55 NONE = 0, 56 VIDEO_HLG = 1, 57 VIDEO_HDR10 = 2, 58 VIDEO_HDR_VIVID = 3, 59 IMAGE_HDR_VIVID_DUAL = 4, 60 IMAGE_HDR_VIVID_SINGLE = 5, 61 IMAGE_HDR_ISO_DUAL = 6, 62 IMAGE_HDR_ISO_SINGLE = 7, 63 }; 64 65 const std::map<DisplayState, DM_DisplayStateMode> DM_NATIVE_TO_NDK_DISPLAY_STATE_MAP { 66 { DisplayState::UNKNOWN, DM_DisplayStateMode::STATE_UNKNOWN }, 67 { DisplayState::OFF, DM_DisplayStateMode::STATE_OFF }, 68 { DisplayState::ON, DM_DisplayStateMode::STATE_ON }, 69 { DisplayState::DOZE, DM_DisplayStateMode::STATE_DOZE }, 70 { DisplayState::DOZE_SUSPEND, DM_DisplayStateMode::STATE_DOZE_SUSPEND }, 71 { DisplayState::VR, DM_DisplayStateMode::STATE_VR }, 72 { DisplayState::ON_SUSPEND, DM_DisplayStateMode::STATE_ON_SUSPEND }, 73 }; 74 75 enum class DM_GraphicCM_ColorSpaceType : uint32_t { 76 GRAPHIC_CM_COLORSPACE_NONE, 77 78 // COLORPRIMARIES_BT601_P | (TRANSFUNC_BT709 << 8) | (MATRIX_BT601_P << 16) | (RANGE_FULL << 21) 79 GRAPHIC_CM_BT601_EBU_FULL = 2 | (1 << 8) | (2 << 16) | (1 << 21), 80 81 // COLORPRIMARIES_BT601_N | (TRANSFUNC_BT709 << 8) | (MATRIX_BT601_N << 16) | (RANGE_FULL << 21) 82 GRAPHIC_CM_BT601_SMPTE_C_FULL = 3 | (1 << 8) | (3 << 16) | (1 << 21), 83 84 // COLORPRIMARIES_BT709 | (TRANSFUNC_BT709 << 8) | (MATRIX_BT709 << 16) | (RANGE_FULL << 21) 85 GRAPHIC_CM_BT709_FULL = 1 | (1 << 8) | (1 << 16) | (1 << 21), 86 87 // COLORPRIMARIES_BT2020 | (TRANSFUNC_HLG << 8) | (MATRIX_BT2020 << 16) | (RANGE_FULL << 21) 88 GRAPHIC_CM_BT2020_HLG_FULL = 4 | (5 << 8) | (4 << 16) | (1 << 21), 89 90 // COLORPRIMARIES_BT2020 | (TRANSFUNC_PQ << 8) | (MATRIX_BT2020 << 16) | (RANGE_FULL << 21) 91 GRAPHIC_CM_BT2020_PQ_FULL = 4 | (4 << 8) | (4 << 16) | (1 << 21), 92 93 // COLORPRIMARIES_BT601_P | (TRANSFUNC_BT709 << 8) | (MATRIX_BT601_P << 16) | (RANGE_LIMITED << 21) 94 GRAPHIC_CM_BT601_EBU_LIMIT = 2 | (1 << 8) | (2 << 16) | (2 << 21), 95 96 // COLORPRIMARIES_BT601_N | (TRANSFUNC_BT709 << 8) | (MATRIX_BT601_N << 16) | (RANGE_LIMITED << 21) 97 GRAPHIC_CM_BT601_SMPTE_C_LIMIT = 3 | (1 << 8) | (3 << 16) | (2 << 21), 98 99 // COLORPRIMARIES_BT709 | (TRANSFUNC_BT709 << 8) | (MATRIX_BT709 << 16) | (RANGE_LIMITED << 21) 100 GRAPHIC_CM_BT709_LIMIT = 1 | (1 << 8) | (1 << 16) | (2 << 21), 101 102 // COLORPRIMARIES_BT2020 | (TRANSFUNC_HLG << 8) | (MATRIX_BT2020 << 16) | (RANGE_LIMITED << 21) 103 GRAPHIC_CM_BT2020_HLG_LIMIT = 4 | (5 << 8) | (4 << 16) | (2 << 21), 104 105 // COLORPRIMARIES_BT2020 | (TRANSFUNC_PQ << 8) | (MATRIX_BT2020 << 16) | (RANGE_LIMITED << 21) 106 GRAPHIC_CM_BT2020_PQ_LIMIT = 4 | (4 << 8) | (4 << 16) | (2 << 21), 107 108 // COLORPRIMARIES_SRGB | (TRANSFUNC_SRGB << 8) | (MATRIX_BT601_N << 16) | (RANGE_FULL << 21) 109 GRAPHIC_CM_SRGB_FULL = 1 | (2 << 8) | (3 << 16) | (1 << 21), 110 111 // COLORPRIMARIES_P3_D65 | (TRANSFUNC_SRGB << 8) | (MATRIX_P3 << 16) | (RANGE_FULL << 21) 112 GRAPHIC_CM_P3_FULL = 6 | (2 << 8) | (3 << 16) | (1 << 21), 113 114 // COLORPRIMARIES_P3_D65 | (TRANSFUNC_HLG << 8) | (MATRIX_P3 << 16) | (RANGE_FULL << 21) 115 GRAPHIC_CM_P3_HLG_FULL = 6 | (5 << 8) | (3 << 16) | (1 << 21), 116 117 // COLORPRIMARIES_P3_D65 | (TRANSFUNC_PQ << 8) | (MATRIX_P3 << 16) | (RANGE_FULL << 21) 118 GRAPHIC_CM_P3_PQ_FULL = 6 | (4 << 8) | (3 << 16) | (1 << 21), 119 120 // COLORPRIMARIES_ADOBERGB | (TRANSFUNC_ADOBERGB << 8) | (MATRIX_ADOBERGB << 16) | (RANGE_FULL << 21) 121 GRAPHIC_CM_ADOBERGB_FULL = 23 | (6 << 8) | (0 << 16) | (1 << 21), 122 123 // COLORPRIMARIES_SRGB | (TRANSFUNC_SRGB << 8) | (MATRIX_BT601_N << 16) | (RANGE_LIMITED << 21) 124 GRAPHIC_CM_SRGB_LIMIT = 1 | (2 << 8) | (3 << 16) | (2 << 21), 125 126 // COLORPRIMARIES_P3_D65 | (TRANSFUNC_SRGB << 8) | (MATRIX_P3 << 16) | (RANGE_LIMITED << 21) 127 GRAPHIC_CM_P3_LIMIT = 6 | (2 << 8) | (3 << 16) | (2 << 21), 128 129 // COLORPRIMARIES_P3_D65 | (TRANSFUNC_HLG << 8) | (MATRIX_P3 << 16) | (RANGE_LIMITED << 21) 130 GRAPHIC_CM_P3_HLG_LIMIT = 6 | (5 << 8) | (3 << 16) | (2 << 21), 131 132 // COLORPRIMARIES_P3_D65 | (TRANSFUNC_PQ << 8) | (MATRIX_P3 << 16) | (RANGE_LIMITED << 21) 133 GRAPHIC_CM_P3_PQ_LIMIT = 6 | (4 << 8) | (3 << 16) | (2 << 21), 134 135 // COLORPRIMARIES_ADOBERGB | (TRANSFUNC_ADOBERGB << 8) | (MATRIX_ADOBERGB << 16) | (RANGE_LIMITED << 21) 136 GRAPHIC_CM_ADOBERGB_LIMIT = 23 | (6 << 8) | (0 << 16) | (2 << 21), 137 138 // COLORPRIMARIES_SRGB | (TRANSFUNC_LINEAR << 8) 139 GRAPHIC_CM_LINEAR_SRGB = 1 | (3 << 8), 140 141 // equal to GRAPHIC_CM_LINEAR_SRGB 142 GRAPHIC_CM_LINEAR_BT709 = 1 | (3 << 8), 143 144 // COLORPRIMARIES_P3_D65 | (TRANSFUNC_LINEAR << 8) 145 GRAPHIC_CM_LINEAR_P3 = 6 | (3 << 8), 146 147 // COLORPRIMARIES_BT2020 | (TRANSFUNC_LINEAR << 8) 148 GRAPHIC_CM_LINEAR_BT2020 = 4 | (3 << 8), 149 150 // equal to GRAPHIC_CM_SRGB_FULL 151 GRAPHIC_CM_DISPLAY_SRGB = 1 | (2 << 8) | (3 << 16) | (1 << 21), 152 153 // equal to GRAPHIC_CM_P3_FULL 154 GRAPHIC_CM_DISPLAY_P3_SRGB = 6 | (2 << 8) | (3 << 16) | (1 << 21), 155 156 // equal to GRAPHIC_CM_P3_HLG_FULL 157 GRAPHIC_CM_DISPLAY_P3_HLG = 6 | (5 << 8) | (3 << 16) | (1 << 21), 158 159 // equal to GRAPHIC_CM_P3_PQ_FULL 160 GRAPHIC_CM_DISPLAY_P3_PQ = 6 | (4 << 8) | (3 << 16) | (1 << 21), 161 162 // COLORPRIMARIES_BT2020 | (TRANSFUNC_SRGB << 8) | (MATRIX_BT2020 << 16) | (RANGE_FULL << 21) 163 GRAPHIC_CM_DISPLAY_BT2020_SRGB = 4 | (2 << 8) | (4 << 16) | (1 << 21), 164 165 // equal to GRAPHIC_CM_BT2020_HLG_FULL 166 GRAPHIC_CM_DISPLAY_BT2020_HLG = 4 | (5 << 8) | (4 << 16) | (1 << 21), 167 168 // equal to GRAPHIC_CM_BT2020_PQ_FULL 169 GRAPHIC_CM_DISPLAY_BT2020_PQ = 4 | (4 << 8) | (4 << 16) | (1 << 21) 170 }; 171 172 enum class DM_ScreenHDRFormat : uint32_t { 173 NOT_SUPPORT_HDR = 0, 174 VIDEO_HLG, 175 VIDEO_HDR10, 176 VIDEO_HDR_VIVID, 177 IMAGE_HDR_VIVID_DUAL, 178 IMAGE_HDR_VIVID_SINGLE, 179 IMAGE_HDR_ISO_DUAL, 180 IMAGE_HDR_ISO_SINGLE, 181 }; 182 183 const std::map<DM_GraphicCM_ColorSpaceType, DM_ColorSpace> DM_NATIVE_TO_NDK_COLOR_SPACE_TYPE_MAP { 184 { DM_GraphicCM_ColorSpaceType::GRAPHIC_CM_COLORSPACE_NONE, DM_ColorSpace::UNKNOWN }, 185 { DM_GraphicCM_ColorSpaceType::GRAPHIC_CM_ADOBERGB_FULL, DM_ColorSpace::ADOBE_RGB }, 186 { DM_GraphicCM_ColorSpaceType::GRAPHIC_CM_ADOBERGB_LIMIT, DM_ColorSpace::ADOBE_RGB }, 187 { DM_GraphicCM_ColorSpaceType::GRAPHIC_CM_BT2020_HLG_FULL, DM_ColorSpace::BT2020_HLG }, 188 { DM_GraphicCM_ColorSpaceType::GRAPHIC_CM_BT2020_HLG_LIMIT, DM_ColorSpace::BT2020_HLG }, 189 { DM_GraphicCM_ColorSpaceType::GRAPHIC_CM_DISPLAY_BT2020_HLG, DM_ColorSpace::BT2020_HLG }, 190 { DM_GraphicCM_ColorSpaceType::GRAPHIC_CM_BT2020_PQ_FULL, DM_ColorSpace::BT2020_PQ }, 191 { DM_GraphicCM_ColorSpaceType::GRAPHIC_CM_BT2020_PQ_LIMIT, DM_ColorSpace::BT2020_PQ }, 192 { DM_GraphicCM_ColorSpaceType::GRAPHIC_CM_DISPLAY_BT2020_PQ, DM_ColorSpace::BT2020_PQ }, 193 { DM_GraphicCM_ColorSpaceType::GRAPHIC_CM_BT601_EBU_FULL, DM_ColorSpace::BT601_EBU }, 194 { DM_GraphicCM_ColorSpaceType::GRAPHIC_CM_BT601_EBU_LIMIT, DM_ColorSpace::BT601_EBU }, 195 { DM_GraphicCM_ColorSpaceType::GRAPHIC_CM_BT601_SMPTE_C_FULL, DM_ColorSpace::BT601_SMPTE_C }, 196 { DM_GraphicCM_ColorSpaceType::GRAPHIC_CM_BT601_SMPTE_C_LIMIT, DM_ColorSpace::BT601_SMPTE_C }, 197 { DM_GraphicCM_ColorSpaceType::GRAPHIC_CM_BT709_FULL, DM_ColorSpace::BT709 }, 198 { DM_GraphicCM_ColorSpaceType::GRAPHIC_CM_BT709_LIMIT, DM_ColorSpace::BT709 }, 199 { DM_GraphicCM_ColorSpaceType::GRAPHIC_CM_P3_HLG_FULL, DM_ColorSpace::P3_HLG }, 200 { DM_GraphicCM_ColorSpaceType::GRAPHIC_CM_P3_HLG_LIMIT, DM_ColorSpace::P3_HLG }, 201 { DM_GraphicCM_ColorSpaceType::GRAPHIC_CM_DISPLAY_P3_HLG, DM_ColorSpace::P3_HLG }, 202 { DM_GraphicCM_ColorSpaceType::GRAPHIC_CM_P3_PQ_FULL, DM_ColorSpace::P3_PQ }, 203 { DM_GraphicCM_ColorSpaceType::GRAPHIC_CM_P3_PQ_LIMIT, DM_ColorSpace::P3_PQ }, 204 { DM_GraphicCM_ColorSpaceType::GRAPHIC_CM_DISPLAY_P3_PQ, DM_ColorSpace::P3_PQ }, 205 { DM_GraphicCM_ColorSpaceType::GRAPHIC_CM_P3_FULL, DM_ColorSpace::DISPLAY_P3 }, 206 { DM_GraphicCM_ColorSpaceType::GRAPHIC_CM_P3_LIMIT, DM_ColorSpace::DISPLAY_P3 }, 207 { DM_GraphicCM_ColorSpaceType::GRAPHIC_CM_DISPLAY_P3_SRGB, DM_ColorSpace::DISPLAY_P3 }, 208 { DM_GraphicCM_ColorSpaceType::GRAPHIC_CM_SRGB_FULL, DM_ColorSpace::SRGB }, 209 { DM_GraphicCM_ColorSpaceType::GRAPHIC_CM_SRGB_LIMIT, DM_ColorSpace::SRGB }, 210 { DM_GraphicCM_ColorSpaceType::GRAPHIC_CM_DISPLAY_SRGB, DM_ColorSpace::SRGB }, 211 { DM_GraphicCM_ColorSpaceType::GRAPHIC_CM_LINEAR_SRGB, DM_ColorSpace::LINEAR_SRGB }, 212 { DM_GraphicCM_ColorSpaceType::GRAPHIC_CM_LINEAR_BT709, DM_ColorSpace::LINEAR_SRGB }, 213 { DM_GraphicCM_ColorSpaceType::GRAPHIC_CM_LINEAR_P3, DM_ColorSpace::LINEAR_P3 }, 214 { DM_GraphicCM_ColorSpaceType::GRAPHIC_CM_LINEAR_BT2020, DM_ColorSpace::LINEAR_BT2020 }, 215 }; 216 217 const std::map<DM_ScreenHDRFormat, DM_HDRFormat> DM_NATIVE_TO_NDK_HDR_FORMAT_TYPE_MAP { 218 { DM_ScreenHDRFormat::NOT_SUPPORT_HDR, DM_HDRFormat::NONE }, 219 { DM_ScreenHDRFormat::VIDEO_HLG, DM_HDRFormat::VIDEO_HLG }, 220 { DM_ScreenHDRFormat::VIDEO_HDR10, DM_HDRFormat::VIDEO_HDR10 }, 221 { DM_ScreenHDRFormat::VIDEO_HDR_VIVID, DM_HDRFormat::VIDEO_HDR_VIVID }, 222 { DM_ScreenHDRFormat::IMAGE_HDR_VIVID_DUAL, DM_HDRFormat::IMAGE_HDR_VIVID_DUAL }, 223 { DM_ScreenHDRFormat::IMAGE_HDR_VIVID_SINGLE, DM_HDRFormat::IMAGE_HDR_VIVID_SINGLE }, 224 { DM_ScreenHDRFormat::IMAGE_HDR_ISO_DUAL, DM_HDRFormat::IMAGE_HDR_ISO_DUAL }, 225 { DM_ScreenHDRFormat::IMAGE_HDR_ISO_SINGLE, DM_HDRFormat::IMAGE_HDR_ISO_SINGLE }, 226 }; 227 228 #define DISPLAY_MANAGER_FREE_MEMORY(ptr) \ 229 do { \ 230 if ((ptr)) { \ 231 free((ptr)); \ 232 (ptr) = NULL; \ 233 } \ 234 } while (0) 235 236 } // namespace Rosen 237 } // namespace OHOS 238 #endif // OHOS_OH_NATIVE_DISPLAY_MANAGER_INNER_H 239