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