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 /** 17 * @addtogroup OH_NativeBuffer 18 * @{ 19 * 20 * @brief Provides the common types for native buffer. 21 * 22 * @since 12 23 * @version 1.0 24 */ 25 26 /** 27 * @file buffer_common.h 28 * 29 * @brief Defines the common types for native buffer. 30 * 31 * @kit ArkGraphics2D 32 * @library libnative_buffer.so 33 * @syscap SystemCapability.Graphic.Graphic2D.NativeBuffer 34 * @since 12 35 * @version 1.0 36 */ 37 38 #ifndef NDK_INCLUDE_BUFFER_COMMON_H_ 39 #define NDK_INCLUDE_BUFFER_COMMON_H_ 40 41 #ifdef __cplusplus 42 extern "C" { 43 #endif 44 45 /** 46 * @brief Indicates the color space of a native buffer. 47 * 48 * @syscap SystemCapability.Graphic.Graphic2D.NativeBuffer 49 * @since 11 50 * @version 1.0 51 */ 52 /** 53 * @brief Indicates the color space of a native buffer. 54 * Move from native_buffer.h to native_common.h 55 * 56 * @syscap SystemCapability.Graphic.Graphic2D.NativeBuffer 57 * @since 12 58 * @version 1.0 59 */ 60 typedef enum OH_NativeBuffer_ColorSpace { 61 /** None color space */ 62 OH_COLORSPACE_NONE, 63 /** COLORPRIMARIES_BT601_P | (TRANSFUNC_BT709 << 8) | (MATRIX_BT601_P << 16) | (RANGE_FULL << 21) */ 64 OH_COLORSPACE_BT601_EBU_FULL, 65 /** COLORPRIMARIES_BT601_N | (TRANSFUNC_BT709 << 8) | (MATRIX_BT601_N << 16) | (RANGE_FULL << 21)*/ 66 OH_COLORSPACE_BT601_SMPTE_C_FULL, 67 /** COLORPRIMARIES_BT709 | (TRANSFUNC_BT709 << 8) | (MATRIX_BT709 << 16) | (RANGE_FULL << 21) */ 68 OH_COLORSPACE_BT709_FULL, 69 /** COLORPRIMARIES_BT2020 | (TRANSFUNC_HLG << 8) | (MATRIX_BT2020 << 16) | (RANGE_FULL << 21) */ 70 OH_COLORSPACE_BT2020_HLG_FULL, 71 /** COLORPRIMARIES_BT2020 | (TRANSFUNC_PQ << 8) | (MATRIX_BT2020 << 16) | (RANGE_FULL << 21) */ 72 OH_COLORSPACE_BT2020_PQ_FULL, 73 /** COLORPRIMARIES_BT601_P | (TRANSFUNC_BT709 << 8) | (MATRIX_BT601_P << 16) | (RANGE_LIMITED << 21) */ 74 OH_COLORSPACE_BT601_EBU_LIMIT, 75 /** COLORPRIMARIES_BT601_N | (TRANSFUNC_BT709 << 8) | (MATRIX_BT601_N << 16) | (RANGE_LIMITED << 21) */ 76 OH_COLORSPACE_BT601_SMPTE_C_LIMIT, 77 /** COLORPRIMARIES_BT709 | (TRANSFUNC_BT709 << 8) | (MATRIX_BT709 << 16) | (RANGE_LIMITED << 21) */ 78 OH_COLORSPACE_BT709_LIMIT, 79 /** COLORPRIMARIES_BT2020 | (TRANSFUNC_HLG << 8) | (MATRIX_BT2020 << 16) | (RANGE_LIMITED << 21) */ 80 OH_COLORSPACE_BT2020_HLG_LIMIT, 81 /** COLORPRIMARIES_BT2020 | (TRANSFUNC_PQ << 8) | (MATRIX_BT2020 << 16) | (RANGE_LIMITED << 21) */ 82 OH_COLORSPACE_BT2020_PQ_LIMIT, 83 /** COLORPRIMARIES_SRGB | (TRANSFUNC_SRGB << 8) | (MATRIX_BT601_N << 16) | (RANGE_FULL << 21) */ 84 OH_COLORSPACE_SRGB_FULL, 85 /** COLORPRIMARIES_P3_D65 | (TRANSFUNC_SRGB << 8) | (MATRIX_P3 << 16) | (RANGE_FULL << 21) */ 86 OH_COLORSPACE_P3_FULL, 87 /** COLORPRIMARIES_P3_D65 | (TRANSFUNC_HLG << 8) | (MATRIX_P3 << 16) | (RANGE_FULL << 21) */ 88 OH_COLORSPACE_P3_HLG_FULL, 89 /** COLORPRIMARIES_P3_D65 | (TRANSFUNC_PQ << 8) | (MATRIX_P3 << 16) | (RANGE_FULL << 21) */ 90 OH_COLORSPACE_P3_PQ_FULL, 91 /** COLORPRIMARIES_ADOBERGB | (TRANSFUNC_ADOBERGB << 8) | (MATRIX_ADOBERGB << 16) | (RANGE_FULL << 21) */ 92 OH_COLORSPACE_ADOBERGB_FULL, 93 /** COLORPRIMARIES_SRGB | (TRANSFUNC_SRGB << 8) | (MATRIX_BT601_N << 16) | (RANGE_LIMITED << 21) */ 94 OH_COLORSPACE_SRGB_LIMIT, 95 /** COLORPRIMARIES_P3_D65 | (TRANSFUNC_SRGB << 8) | (MATRIX_P3 << 16) | (RANGE_LIMITED << 21) */ 96 OH_COLORSPACE_P3_LIMIT, 97 /** COLORPRIMARIES_P3_D65 | (TRANSFUNC_HLG << 8) | (MATRIX_P3 << 16) | (RANGE_LIMITED << 21) */ 98 OH_COLORSPACE_P3_HLG_LIMIT, 99 /** COLORPRIMARIES_P3_D65 | (TRANSFUNC_PQ << 8) | (MATRIX_P3 << 16) | (RANGE_LIMITED << 21) */ 100 OH_COLORSPACE_P3_PQ_LIMIT, 101 /** COLORPRIMARIES_ADOBERGB | (TRANSFUNC_ADOBERGB << 8) | (MATRIX_ADOBERGB << 16) | (RANGE_LIMITED << 21) */ 102 OH_COLORSPACE_ADOBERGB_LIMIT, 103 /** COLORPRIMARIES_SRGB | (TRANSFUNC_LINEAR << 8) */ 104 OH_COLORSPACE_LINEAR_SRGB, 105 /** equal to OH_COLORSPACE_LINEAR_SRGB */ 106 OH_COLORSPACE_LINEAR_BT709, 107 /** COLORPRIMARIES_P3_D65 | (TRANSFUNC_LINEAR << 8) */ 108 OH_COLORSPACE_LINEAR_P3, 109 /** COLORPRIMARIES_BT2020 | (TRANSFUNC_LINEAR << 8) */ 110 OH_COLORSPACE_LINEAR_BT2020, 111 /** equal to OH_COLORSPACE_SRGB_FULL */ 112 OH_COLORSPACE_DISPLAY_SRGB, 113 /** equal to OH_COLORSPACE_P3_FULL */ 114 OH_COLORSPACE_DISPLAY_P3_SRGB, 115 /** equal to OH_COLORSPACE_P3_HLG_FULL */ 116 OH_COLORSPACE_DISPLAY_P3_HLG, 117 /** equal to OH_COLORSPACE_P3_PQ_FULL */ 118 OH_COLORSPACE_DISPLAY_P3_PQ, 119 /** COLORPRIMARIES_BT2020 | (TRANSFUNC_SRGB << 8) | (MATRIX_BT2020 << 16) | (RANGE_FULL << 21) */ 120 OH_COLORSPACE_DISPLAY_BT2020_SRGB, 121 /** equal to OH_COLORSPACE_BT2020_HLG_FULL */ 122 OH_COLORSPACE_DISPLAY_BT2020_HLG, 123 /** equal to OH_COLORSPACE_BT2020_PQ_FULL */ 124 OH_COLORSPACE_DISPLAY_BT2020_PQ, 125 } OH_NativeBuffer_ColorSpace; 126 127 /** 128 * @brief Indicates the HDR metadata type of a native buffer. 129 * 130 * @syscap SystemCapability.Graphic.Graphic2D.NativeBuffer 131 * @since 12 132 * @version 1.0 133 */ 134 typedef enum OH_NativeBuffer_MetadataType { 135 /** HLG */ 136 OH_VIDEO_HDR_HLG, 137 /** HDR10 */ 138 OH_VIDEO_HDR_HDR10, 139 /** HDR VIVID */ 140 OH_VIDEO_HDR_VIVID, 141 /** 142 * NONE Metadata 143 * @since 13 144 */ 145 OH_VIDEO_NONE = -1 146 } OH_NativeBuffer_MetadataType; 147 148 /** 149 * @brief Indicates the color x and y. 150 * 151 * @syscap SystemCapability.Graphic.Graphic2D.NativeBuffer 152 * @since 12 153 * @version 1.0 154 */ 155 typedef struct OH_NativeBuffer_ColorXY { 156 /** color X */ 157 float x; 158 /** color Y */ 159 float y; 160 } OH_NativeBuffer_ColorXY; 161 162 /** 163 * @brief Indicates the smpte2086 metadata. 164 * 165 * @syscap SystemCapability.Graphic.Graphic2D.NativeBuffer 166 * @since 12 167 * @version 1.0 168 */ 169 typedef struct OH_NativeBuffer_Smpte2086 { 170 /** primary red */ 171 OH_NativeBuffer_ColorXY displayPrimaryRed; 172 /** primary green */ 173 OH_NativeBuffer_ColorXY displayPrimaryGreen; 174 /** primary blue */ 175 OH_NativeBuffer_ColorXY displayPrimaryBlue; 176 /** white point */ 177 OH_NativeBuffer_ColorXY whitePoint; 178 /** max luminance */ 179 float maxLuminance; 180 /** min luminance */ 181 float minLuminance; 182 } OH_NativeBuffer_Smpte2086; 183 184 /** 185 * @brief Indicates the cta861.3 metadata. 186 * 187 * @syscap SystemCapability.Graphic.Graphic2D.NativeBuffer 188 * @since 12 189 * @version 1.0 190 */ 191 typedef struct OH_NativeBuffer_Cta861 { 192 /** max content lightLevel */ 193 float maxContentLightLevel; 194 /** max frame average light level */ 195 float maxFrameAverageLightLevel; 196 } OH_NativeBuffer_Cta861; 197 198 /** 199 * @brief Indicates the HDR static metadata. 200 * 201 * @syscap SystemCapability.Graphic.Graphic2D.NativeBuffer 202 * @since 12 203 * @version 1.0 204 */ 205 typedef struct OH_NativeBuffer_StaticMetadata { 206 /** smpte 2086 metadata*/ 207 OH_NativeBuffer_Smpte2086 smpte2086; 208 /** CTA-861.3 metadata*/ 209 OH_NativeBuffer_Cta861 cta861; 210 } OH_NativeBuffer_StaticMetadata; 211 212 /** 213 * @brief Indicates the HDR metadata key of a native buffer. 214 * 215 * @syscap SystemCapability.Graphic.Graphic2D.NativeBuffer 216 * @since 12 217 * @version 1.0 218 */ 219 typedef enum OH_NativeBuffer_MetadataKey { 220 /** value: OH_NativeBuffer_MetadataType*/ 221 OH_HDR_METADATA_TYPE, 222 /** value: OH_NativeBuffer_StaticMetadata*/ 223 OH_HDR_STATIC_METADATA, 224 /** byte stream of SEI in video stream*/ 225 OH_HDR_DYNAMIC_METADATA 226 } OH_NativeBuffer_MetadataKey; 227 228 #ifdef __cplusplus 229 } 230 #endif 231 232 /** @} */ 233 #endif