1/* 2 * Copyright (c) 2023 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_HDI_DISPLAY_GRAPHIC_COMMON_V1_0_CMCOLORSPACE_H 17#define OHOS_HDI_DISPLAY_GRAPHIC_COMMON_V1_0_CMCOLORSPACE_H 18 19#include <cstdbool> 20#include <cstdint> 21 22#ifndef HDI_BUFF_MAX_SIZE 23#define HDI_BUFF_MAX_SIZE (1024 * 200) 24#endif 25 26#ifndef HDI_CHECK_VALUE_RETURN 27#define HDI_CHECK_VALUE_RETURN(lv, compare, rv, ret) do { \ 28 if ((lv) compare (rv)) { \ 29 return ret; \ 30 } \ 31} while (false) 32#endif 33 34#ifndef HDI_CHECK_VALUE_RET_GOTO 35#define HDI_CHECK_VALUE_RET_GOTO(lv, compare, rv, ret, value, table) do { \ 36 if ((lv) compare (rv)) { \ 37 ret = value; \ 38 goto table; \ 39 } \ 40} while (false) 41#endif 42 43namespace OHOS { 44class MessageParcel; 45} 46 47namespace OHOS { 48namespace HDI { 49namespace Display { 50namespace Graphic { 51namespace Common { 52namespace V1_0 { 53 54using namespace OHOS; 55 56enum CM_ColorPrimaries : int32_t { 57 COLORPRIMARIES_BT709 = 1, 58 COLORPRIMARIES_SRGB = 1, 59 COLORPRIMARIES_BT601_P, 60 COLORPRIMARIES_BT601_N, 61 COLORPRIMARIES_BT2020 = 4, 62 COLORPRIMARIES_BT2100 = 4, 63 COLORPRIMARIES_P3_DCI, 64 COLORPRIMARIES_P3_D65, 65 COLORPRIMARIES_MONO, 66 COLORPRIMARIES_ADOBERGB = 23, 67}; 68 69enum CM_TransFunc : int32_t { 70 TRANSFUNC_BT709 = 1, 71 TRANSFUNC_SRGB = 2, 72 TRANSFUNC_LINEAR = 3, 73 TRANSFUNC_PQ, 74 TRANSFUNC_HLG, 75 TRANSFUNC_ADOBERGB, 76 TRANSFUNC_GAMMA2_2, 77 TRANSFUNC_GAMMA2_4, 78}; 79 80enum CM_Range : int32_t { 81 RANGE_UNKNOW = 0, 82 RANGE_FULL, 83 RANGE_LIMITED, 84 RANGE_EXTEND, 85}; 86 87enum CM_Matrix : int32_t { 88 MATRIX_ADOBERGB = 0, 89 MATRIX_BT709 = 1, 90 MATRIX_BT601_P, 91 MATRIX_BT601_N = 3, 92 MATRIX_P3 = 3, 93 MATRIX_BT2020 = 4, 94 MATRIX_BT2100 = 4, 95 MATRIX_BT2100_ICTCP, 96}; 97 98struct CM_ColorSpaceInfo { 99 OHOS::HDI::Display::Graphic::Common::V1_0::CM_ColorPrimaries primaries; 100 OHOS::HDI::Display::Graphic::Common::V1_0::CM_TransFunc transfunc; 101 OHOS::HDI::Display::Graphic::Common::V1_0::CM_Matrix matrix; 102 OHOS::HDI::Display::Graphic::Common::V1_0::CM_Range range; 103} __attribute__ ((aligned(8))); 104 105enum CM_ColorSpaceType : int32_t { 106 CM_COLORSPACE_NONE, 107 CM_BT601_EBU_FULL = 2 | (1 << 8) | (2 << 16) | (1 << 21), 108 CM_BT601_SMPTE_C_FULL = 3 | (1 << 8) | (3 << 16) | (1 << 21), 109 CM_BT709_FULL = 1 | (1 << 8) | (1 << 16) | (1 << 21), 110 CM_BT2020_HLG_FULL = 4 | (5 << 8) | (4 << 16) | (1 << 21), 111 CM_BT2020_PQ_FULL = 4 | (4 << 8) | (4 << 16) | (1 << 21), 112 CM_BT601_EBU_LIMIT = 2 | (1 << 8) | (2 << 16) | (2 << 21), 113 CM_BT601_SMPTE_C_LIMIT = 3 | (1 << 8) | (3 << 16) | (2 << 21), 114 CM_BT709_LIMIT = 1 | (1 << 8) | (1 << 16) | (2 << 21), 115 CM_BT2020_HLG_LIMIT = 4 | (5 << 8) | (4 << 16) | (2 << 21), 116 CM_BT2020_PQ_LIMIT = 4 | (4 << 8) | (4 << 16) | (2 << 21), 117 CM_SRGB_FULL = 1 | (2 << 8) | (3 << 16) | (1 << 21), 118 CM_P3_FULL = 6 | (2 << 8) | (3 << 16) | (1 << 21), 119 CM_P3_HLG_FULL = 6 | (5 << 8) | (3 << 16) | (1 << 21), 120 CM_P3_PQ_FULL = 6 | (4 << 8) | (3 << 16) | (1 << 21), 121 CM_ADOBERGB_FULL = 23 | (6 << 8) | (0 << 16) | (1 << 21), 122 CM_SRGB_LIMIT = 1 | (2 << 8) | (3 << 16) | (2 << 21), 123 CM_P3_LIMIT = 6 | (2 << 8) | (3 << 16) | (2 << 21), 124 CM_P3_HLG_LIMIT = 6 | (5 << 8) | (3 << 16) | (2 << 21), 125 CM_P3_PQ_LIMIT = 6 | (4 << 8) | (3 << 16) | (2 << 21), 126 CM_ADOBERGB_LIMIT = 23 | (6 << 8) | (0 << 16) | (2 << 21), 127 CM_LINEAR_SRGB = 1 | (3 << 8), 128 CM_LINEAR_BT709 = 1 | (3 << 8), 129 CM_LINEAR_P3 = 6 | (3 << 8), 130 CM_LINEAR_BT2020 = 4 | (3 << 8), 131 CM_DISPLAY_SRGB = 1 | (2 << 8) | (3 << 16) | (1 << 21), 132 CM_DISPLAY_P3_SRGB = 6 | (2 << 8) | (3 << 16) | (1 << 21), 133 CM_DISPLAY_P3_HLG = 6 | (5 << 8) | (3 << 16) | (1 << 21), 134 CM_DISPLAY_P3_PQ = 6 | (4 << 8) | (3 << 16) | (1 << 21), 135 CM_DISPLAY_BT2020_SRGB = 4 | (2 << 8) | (4 << 16) | (1 << 21), 136 CM_DISPLAY_BT2020_HLG = 4 | (5 << 8) | (4 << 16) | (1 << 21), 137 CM_DISPLAY_BT2020_PQ = 4 | (4 << 8) | (4 << 16) | (1 << 21), 138}; 139 140enum CM_ColorSpaceMask : int32_t { 141 CM_PRIMARIES_MASK = 255, 142 CM_TRANSFUNC_MASK = 255 << 8, 143 CM_MATRIX_MASK = 31 << 16, 144 CM_RANGE_MASK = 7 << 21, 145}; 146 147enum CM_HDR_Metadata_Type : int32_t { 148 CM_METADATA_NONE, 149 CM_VIDEO_HLG, 150 CM_VIDEO_HDR10, 151 CM_VIDEO_HDR_VIVID, 152 CM_IMAGE_HDR_VIVID_DUAL, 153 CM_IMAGE_HDR_VIVID_SINGLE, 154 CM_IMAGE_HDR_ISO_DUAL, 155 CM_IMAGE_HDR_ISO_SINGLE, 156}; 157 158bool CM_ColorSpaceInfoBlockMarshalling(OHOS::MessageParcel &data, const OHOS::HDI::Display::Graphic::Common::V1_0::CM_ColorSpaceInfo& dataBlock); 159 160bool CM_ColorSpaceInfoBlockUnmarshalling(OHOS::MessageParcel &data, OHOS::HDI::Display::Graphic::Common::V1_0::CM_ColorSpaceInfo& dataBlock); 161 162 163} // V1_0 164} // Common 165} // Graphic 166} // Display 167} // HDI 168} // OHOS 169 170#endif // OHOS_HDI_DISPLAY_GRAPHIC_COMMON_V1_0_CMCOLORSPACE_H 171 172