1# OH_NativeBuffer 2 3## 概述 4 5提供NativeBuffer功能,通过提供的接口,可以实现共享内存的申请、使用、属性查询、释放等操作。 6 7**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer 8 9**起始版本:** 9 10 11 12## 汇总 13 14 15### 文件 16 17| 名称 | 描述 | 18| -------- | -------- | 19| [buffer_common.h](buffer__common_8h.md) | 提供NativeBuffer模块的公共类型定义。<br/>部分类型定义从native_buffer.h移动至此头文件统一呈现,对于此类类型,API version 12版本之前即支持使用,各版本均可正常使用。 | 20| [native_buffer.h](native__buffer_8h.md) | 定义获取和使用NativeBuffer的相关函数。 | 21 22 23### 结构体 24 25| 名称 | 描述 | 26| -------- | -------- | 27| struct [OH_NativeBuffer_Config](_o_h___native_buffer___config.md) | OH_NativeBuffer的属性配置,用于申请新的OH_NativeBuffer实例或查询现有实例的相关属性 | 28| struct [OH_NativeBuffer_Plane](_o_h___native_buffer___plane.md) | 单个图像平面格式信息。 | 29| struct [OH_NativeBuffer_Planes](_o_h___native_buffer___planes.md) | OH_NativeBuffer的图像平面格式信息。 | 30| struct [OH_NativeBuffer_ColorXY](_o_h___native_buffer___color_x_y.md) | 表示基色的X和Y坐标。 | 31| struct [OH_NativeBuffer_Smpte2086](_o_h___native_buffer___smpte2086.md) | 表示smpte2086静态元数据。 | 32| struct [OH_NativeBuffer_Cta861](_o_h___native_buffer___cta861.md) | 表示CTA-861.3静态元数据。 | 33| struct [OH_NativeBuffer_StaticMetadata](_o_h___native_buffer___static_metadata.md) | 表示HDR静态元数据。 | 34 35 36### 类型定义 37 38| 名称 | 描述 | 39| -------- | -------- | 40| typedef struct [OH_NativeBuffer](#oh_nativebuffer) [OH_NativeBuffer](#oh_nativebuffer) | 提供OH_NativeBuffer结构体声明 | 41| typedef enum [OH_NativeBuffer_Usage](#oh_nativebuffer_usage-1) [OH_NativeBuffer_Usage](#oh_nativebuffer_usage) | OH_NativeBuffer的用途。 | 42| typedef enum [OH_NativeBuffer_Format](#oh_nativebuffer_format-1) [OH_NativeBuffer_Format](#oh_nativebuffer_format) | OH_NativeBuffer的格式。 | 43| typedef enum [OH_NativeBuffer_ColorSpace](#oh_nativebuffer_colorspace-1) [OH_NativeBuffer_ColorSpace](#oh_nativebuffer_colorspace) | OH_NativeBuffer的颜色空间 | 44| typedef enum [OH_NativeBuffer_TransformType](#oh_nativebuffer_transformtype-1) [OH_NativeBuffer_TransformType](#oh_nativebuffer_transformtype) | OH_NativeBuffer的转换类型。 | 45| typedef enum [OH_NativeBuffer_ColorGamut](#oh_nativebuffer_colorgamut-1) [OH_NativeBuffer_ColorGamut](#oh_nativebuffer_colorgamut) | OH_NativeBuffer的色域。 | 46| typedef enum [OHNativeErrorCode](_native_window.md#ohnativeerrorcode-1) [OHNativeErrorCode](#ohnativeerrorcode) | 接口错误码说明(仅用于查询)。 | 47| typedef struct [OH_NativeBuffer_Config](_o_h___native_buffer___config.md) [OH_NativeBuffer_Config](#oh_nativebuffer_config) | OH_NativeBuffer的属性配置,用于申请新的OH_NativeBuffer实例或查询现有实例的相关属性 | 48| typedef struct [OH_NativeBuffer_Plane](_o_h___native_buffer___plane.md) [OH_NativeBuffer_Plane](#oh_nativebuffer_plane) | 单个图像平面格式信息。 | 49| typedef struct [OH_NativeBuffer_Planes](_o_h___native_buffer___planes.md) [OH_NativeBuffer_Planes](#oh_nativebuffer_planes) | OH_NativeBuffer的图像平面格式信息。 | 50| typedef enum [OH_NativeBuffer_MetadataType](#oh_nativebuffer_metadatatype) [OH_NativeBuffer_MetadataType](#oh_nativebuffer_metadatatype) | OH_NativeBuffer的图像标准。 | 51| typedef struct [OH_NativeBuffer_ColorXY](_o_h___native_buffer___color_x_y.md) [OH_NativeBuffer_ColorXY](#oh_nativebuffer_colorxy) | 表示基色的X和Y坐标。 | 52| typedef struct [OH_NativeBuffer_Smpte2086](_o_h___native_buffer___smpte2086.md) [OH_NativeBuffer_Smpte2086](#oh_nativebuffer_smpte2086) | 表示smpte2086静态元数据。 | 53| typedef struct [OH_NativeBuffer_Cta861](_o_h___native_buffer___cta861.md) [OH_NativeBuffer_Cta861](#oh_nativebuffer_cta861) | 表示CTA-861.3静态元数据。 | 54| typedef struct [OH_NativeBuffer_StaticMetadata](_o_h___native_buffer___static_metadata.md) [OH_NativeBuffer_StaticMetadata](#oh_nativebuffer_staticmetadata) | 表示HDR静态元数据。 | 55| typedef enum [OH_NativeBuffer_MetadataKey](#oh_nativebuffer_metadatakey-1) [OH_NativeBuffer_MetadataKey](#oh_nativebuffer_metadatakey) | 表示OH_NativeBuffer的HDR元数据种类的键值。 | 56 57 58### 枚举 59 60| 名称 | 描述 | 61| -------- | -------- | 62| [OH_NativeBuffer_Usage](#oh_nativebuffer_usage-1) {<br/>NATIVEBUFFER_USAGE_CPU_READ = (1ULL << 0), NATIVEBUFFER_USAGE_CPU_WRITE = (1ULL << 1), NATIVEBUFFER_USAGE_MEM_DMA = (1ULL << 3), NATIVEBUFFER_USAGE_HW_RENDER = (1ULL << 8),<br/>NATIVEBUFFER_USAGE_HW_TEXTURE = (1ULL << 9), NATIVEBUFFER_USAGE_CPU_READ_OFTEN = (1ULL << 16), NATIVEBUFFER_USAGE_ALIGNMENT_512 = (1ULL << 18)<br/>} | OH_NativeBuffer的用途。 | 63| [OH_NativeBuffer_Format](#oh_nativebuffer_format-1) {<br/>NATIVEBUFFER_PIXEL_FMT_CLUT8 = 0, NATIVEBUFFER_PIXEL_FMT_CLUT1, NATIVEBUFFER_PIXEL_FMT_CLUT4, NATIVEBUFFER_PIXEL_FMT_RGB_565 = 3,<br/>NATIVEBUFFER_PIXEL_FMT_RGBA_5658, NATIVEBUFFER_PIXEL_FMT_RGBX_4444, NATIVEBUFFER_PIXEL_FMT_RGBA_4444, NATIVEBUFFER_PIXEL_FMT_RGB_444,<br/>NATIVEBUFFER_PIXEL_FMT_RGBX_5551, NATIVEBUFFER_PIXEL_FMT_RGBA_5551, NATIVEBUFFER_PIXEL_FMT_RGB_555, NATIVEBUFFER_PIXEL_FMT_RGBX_8888,<br/>NATIVEBUFFER_PIXEL_FMT_RGBA_8888, NATIVEBUFFER_PIXEL_FMT_RGB_888, NATIVEBUFFER_PIXEL_FMT_BGR_565, NATIVEBUFFER_PIXEL_FMT_BGRX_4444,<br/>NATIVEBUFFER_PIXEL_FMT_BGRA_4444, NATIVEBUFFER_PIXEL_FMT_BGRX_5551, NATIVEBUFFER_PIXEL_FMT_BGRA_5551, NATIVEBUFFER_PIXEL_FMT_BGRX_8888,<br/>NATIVEBUFFER_PIXEL_FMT_BGRA_8888, NATIVEBUFFER_PIXEL_FMT_YUV_422_I, NATIVEBUFFER_PIXEL_FMT_YCBCR_422_SP, NATIVEBUFFER_PIXEL_FMT_YCRCB_422_SP,<br/>NATIVEBUFFER_PIXEL_FMT_YCBCR_420_SP, NATIVEBUFFER_PIXEL_FMT_YCRCB_420_SP, NATIVEBUFFER_PIXEL_FMT_YCBCR_422_P, NATIVEBUFFER_PIXEL_FMT_YCRCB_422_P,<br/>NATIVEBUFFER_PIXEL_FMT_YCBCR_420_P, NATIVEBUFFER_PIXEL_FMT_YCRCB_420_P, NATIVEBUFFER_PIXEL_FMT_YUYV_422_PKG, NATIVEBUFFER_PIXEL_FMT_UYVY_422_PKG,<br/>NATIVEBUFFER_PIXEL_FMT_YVYU_422_PKG, NATIVEBUFFER_PIXEL_FMT_VYUY_422_PKG, NATIVEBUFFER_PIXEL_FMT_RGBA_1010102, NATIVEBUFFER_PIXEL_FMT_YCBCR_P010,<br/>NATIVEBUFFER_PIXEL_FMT_YCRCB_P010, NATIVEBUFFER_PIXEL_FMT_RAW10, NATIVEBUFFER_PIXEL_FMT_BLOB, NATIVEBUFFER_PIXEL_FMT_RGBA16_FLOAT, NATIVEBUFFER_PIXEL_FMT_VENDER_MASK = 0X7FFF0000, NATIVEBUFFER_PIXEL_FMT_BUTT = 0X7FFFFFFF<br/>} | OH_NativeBuffer的格式。 | 64| [OH_NativeBuffer_ColorSpace](#oh_nativebuffer_colorspace-1) {<br/>OH_COLORSPACE_NONE, OH_COLORSPACE_BT601_EBU_FULL, OH_COLORSPACE_BT601_SMPTE_C_FULL, OH_COLORSPACE_BT709_FULL,<br/>OH_COLORSPACE_BT2020_HLG_FULL, OH_COLORSPACE_BT2020_PQ_FULL, OH_COLORSPACE_BT601_EBU_LIMIT, OH_COLORSPACE_BT601_SMPTE_C_LIMIT,<br/>OH_COLORSPACE_BT709_LIMIT, OH_COLORSPACE_BT2020_HLG_LIMIT, OH_COLORSPACE_BT2020_PQ_LIMIT, OH_COLORSPACE_SRGB_FULL,<br/>OH_COLORSPACE_P3_FULL, OH_COLORSPACE_P3_HLG_FULL, OH_COLORSPACE_P3_PQ_FULL, OH_COLORSPACE_ADOBERGB_FULL,<br/>OH_COLORSPACE_SRGB_LIMIT, OH_COLORSPACE_P3_LIMIT, OH_COLORSPACE_P3_HLG_LIMIT, OH_COLORSPACE_P3_PQ_LIMIT,<br/>OH_COLORSPACE_ADOBERGB_LIMIT, OH_COLORSPACE_LINEAR_SRGB, OH_COLORSPACE_LINEAR_BT709, OH_COLORSPACE_LINEAR_P3,<br/>OH_COLORSPACE_LINEAR_BT2020, OH_COLORSPACE_DISPLAY_SRGB, OH_COLORSPACE_DISPLAY_P3_SRGB, OH_COLORSPACE_DISPLAY_P3_HLG,<br/>OH_COLORSPACE_DISPLAY_P3_PQ, OH_COLORSPACE_DISPLAY_BT2020_SRGB, OH_COLORSPACE_DISPLAY_BT2020_HLG, OH_COLORSPACE_DISPLAY_BT2020_PQ<br/>} | OH_NativeBuffer的颜色空间 | 65| [OH_NativeBuffer_TransformType](#oh_nativebuffer_transformtype-1) {<br/>NATIVEBUFFER_ROTATE_NONE = 0, NATIVEBUFFER_ROTATE_90, NATIVEBUFFER_ROTATE_180, NATIVEBUFFER_ROTATE_270,<br/>NATIVEBUFFER_FLIP_H, NATIVEBUFFER_FLIP_V, NATIVEBUFFER_FLIP_H_ROT90, NATIVEBUFFER_FLIP_V_ROT90,<br/>NATIVEBUFFER_FLIP_H_ROT180, NATIVEBUFFER_FLIP_V_ROT180, NATIVEBUFFER_FLIP_H_ROT270, NATIVEBUFFER_FLIP_V_ROT270<br/>} | OH_NativeBuffer的转换类型。 | 66| [OH_NativeBuffer_ColorGamut](#oh_nativebuffer_colorgamut-1) {<br/>NATIVEBUFFER_COLOR_GAMUT_NATIVE = 0, NATIVEBUFFER_COLOR_GAMUT_STANDARD_BT601 = 1, NATIVEBUFFER_COLOR_GAMUT_STANDARD_BT709 = 2, NATIVEBUFFER_COLOR_GAMUT_DCI_P3 = 3,<br/>NATIVEBUFFER_COLOR_GAMUT_SRGB = 4, NATIVEBUFFER_COLOR_GAMUT_ADOBE_RGB = 5, NATIVEBUFFER_COLOR_GAMUT_DISPLAY_P3 = 6, NATIVEBUFFER_COLOR_GAMUT_BT2020 = 7,<br/>NATIVEBUFFER_COLOR_GAMUT_BT2100_PQ = 8, NATIVEBUFFER_COLOR_GAMUT_BT2100_HLG = 9, NATIVEBUFFER_COLOR_GAMUT_DISPLAY_BT2020 = 10<br/>} | OH_NativeBuffer的色域。 | 67| [OHNativeErrorCode](#ohnativeerrorcode-1) {<br/>NATIVE_ERROR_OK = 0,NATIVE_ERROR_MEM_OPERATION_ERROR = 30001000, NATIVE_ERROR_INVALID_ARGUMENTS = 40001000, NATIVE_ERROR_NO_PERMISSION = 40301000, NATIVE_ERROR_NO_BUFFER = 40601000,<br/>NATIVE_ERROR_NO_CONSUMER = 41202000, NATIVE_ERROR_NOT_INIT = 41203000, NATIVE_ERROR_CONSUMER_CONNECTED = 41206000, NATIVE_ERROR_BUFFER_STATE_INVALID = 41207000,<br/>NATIVE_ERROR_BUFFER_IN_CACHE = 41208000, NATIVE_ERROR_BUFFER_QUEUE_FULL = 41209000, NATIVE_ERROR_BUFFER_NOT_IN_CACHE = 41210000,NATIVE_ERROR_CONSUMER_DISCONNECTED = 41211000,NATIVE_ERROR_CONSUMER_NO_LISTENER_REGISTERED = 41212000, NATIVE_ERROR_UNSUPPORTED = 50102000,<br/>NATIVE_ERROR_UNKNOWN = 50002000,NATIVE_ERROR_HDI_ERROR = 50007000,NATIVE_ERROR_BINDER_ERROR = 50401000, NATIVE_ERROR_EGL_STATE_UNKNOWN = 60001000, NATIVE_ERROR_EGL_API_FAILED = 60002000<br/>} | 接口错误码说明(仅用于查询)。 | 68| [OH_NativeBuffer_MetadataType](#oh_nativebuffer_metadatatype-1) { OH_VIDEO_HDR_HLG, OH_VIDEO_HDR_HDR10, OH_VIDEO_HDR_VIVID,OH_VIDEO_NONE = -1 } | OH_NativeBuffer的图像标准。 | 69| [OH_NativeBuffer_MetadataKey](#oh_nativebuffer_metadatakey-1) { OH_HDR_METADATA_TYPE, OH_HDR_STATIC_METADATA, OH_HDR_DYNAMIC_METADATA } | 表示OH_NativeBuffer的HDR元数据种类的键值。 | 70 71 72### 函数 73 74| 名称 | 描述 | 75| -------- | -------- | 76| [OH_NativeBuffer](#oh_nativebuffer) \* [OH_NativeBuffer_Alloc](#oh_nativebuffer_alloc) (const [OH_NativeBuffer_Config](_o_h___native_buffer___config.md) \*config) | 通过OH_NativeBuffer_Config创建OH_NativeBuffer实例,每次调用都会产生一个新的OH_NativeBuffer实例 | 77| int32_t [OH_NativeBuffer_Reference](#oh_nativebuffer_reference) ([OH_NativeBuffer](#oh_nativebuffer) \*buffer) | 将OH_NativeBuffer对象的引用计数加1 | 78| int32_t [OH_NativeBuffer_Unreference](#oh_nativebuffer_unreference) ([OH_NativeBuffer](#oh_nativebuffer) \*buffer) | 将OH_NativeBuffer对象的引用计数减1,当引用计数为0的时候,该NativeBuffer对象会被析构掉 | 79| void [OH_NativeBuffer_GetConfig](#oh_nativebuffer_getconfig) ([OH_NativeBuffer](#oh_nativebuffer) \*buffer, [OH_NativeBuffer_Config](_o_h___native_buffer___config.md) \*config) | 用于获取OH_NativeBuffer的属性 | 80| int32_t [OH_NativeBuffer_Map](#oh_nativebuffer_map) ([OH_NativeBuffer](#oh_nativebuffer) \*buffer, void \*\*virAddr) | 将OH_NativeBuffer对应的ION内存映射到进程空间 | 81| int32_t [OH_NativeBuffer_Unmap](#oh_nativebuffer_unmap) ([OH_NativeBuffer](#oh_nativebuffer) \*buffer) | 将OH_NativeBuffer对应的ION内存从进程空间移除 | 82| uint32_t [OH_NativeBuffer_GetSeqNum](#oh_nativebuffer_getseqnum) ([OH_NativeBuffer](#oh_nativebuffer) \*buffer) | 获取OH_NativeBuffer的序列号 | 83| int32_t [OH_NativeBuffer_SetColorSpace](#oh_nativebuffer_setcolorspace) ([OH_NativeBuffer](#oh_nativebuffer) \*buffer, [OH_NativeBuffer_ColorSpace](#oh_nativebuffer_colorspace) colorSpace) | 为OH_NativeBuffer设置颜色空间属性。 | 84| int32_t [OH_NativeBuffer_MapPlanes](#oh_nativebuffer_mapplanes) ([OH_NativeBuffer](#oh_nativebuffer) \*buffer, void \*\*virAddr, [OH_NativeBuffer_Planes](_o_h___native_buffer___planes.md) \*outPlanes) | 将OH_NativeBuffer对应的多通道ION内存映射到进程空间。 | 85| int32_t [OH_NativeBuffer_FromNativeWindowBuffer](#oh_nativebuffer_fromnativewindowbuffer) ([OHNativeWindowBuffer](_native_window.md#ohnativewindowbuffer) \*nativeWindowBuffer, [OH_NativeBuffer](#oh_nativebuffer) \*\*buffer) | 将OHNativeWindowBuffer实例转换为OH_NativeBuffer实例。 | 86| int32_t [OH_NativeBuffer_GetColorSpace](#oh_nativebuffer_getcolorspace) ([OH_NativeBuffer](#oh_nativebuffer) \*buffer, [OH_NativeBuffer_ColorSpace](#oh_nativebuffer_colorspace) \*colorSpace) | 获取OH_NativeBuffer颜色空间属性。 | 87| int32_t [OH_NativeBuffer_SetMetadataValue](#oh_nativebuffer_setmetadatavalue) ([OH_NativeBuffer](#oh_nativebuffer) \*buffer, [OH_NativeBuffer_MetadataKey](#oh_nativebuffer_metadatakey) metadataKey, int32_t size, uint8_t \*metaData) | 为OH_NativeBuffer设置元数据属性值。 | 88| int32_t [OH_NativeBuffer_GetMetadataValue](#oh_nativebuffer_getmetadatavalue) ([OH_NativeBuffer](#oh_nativebuffer) \*buffer, [OH_NativeBuffer_MetadataKey](#oh_nativebuffer_metadatakey) metadataKey, int32_t \*size, uint8_t \*\*metaData) | 获取OH_NativeBuffer元数据属性值。 | 89 90 91## 类型定义说明 92 93 94### OH_NativeBuffer 95 96``` 97typedef struct OH_NativeBuffer OH_NativeBuffer 98``` 99 100**描述** 101 102提供OH_NativeBuffer结构体声明 103 104**起始版本:** 9 105 106 107### OH_NativeBuffer_ColorGamut 108 109``` 110typedef enum OH_NativeBuffer_ColorGamut OH_NativeBuffer_ColorGamut 111``` 112 113**描述** 114 115OH_NativeBuffer的色域。 116 117**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer 118 119**起始版本:** 12 120 121 122### OH_NativeBuffer_ColorSpace 123 124``` 125typedef enum OH_NativeBuffer_ColorSpace OH_NativeBuffer_ColorSpace 126``` 127 128**描述** 129 130OH_NativeBuffer的颜色空间 131 132**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer 133 134**起始版本:** 11 135 136 137### OH_NativeBuffer_ColorXY 138 139``` 140typedef struct OH_NativeBuffer_ColorXY OH_NativeBuffer_ColorXY 141``` 142 143**描述** 144 145表示基色的X和Y坐标。 146 147**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer 148 149**起始版本:** 12 150 151 152### OH_NativeBuffer_Config 153 154``` 155typedef struct OH_NativeBuffer_Config OH_NativeBuffer_Config 156``` 157 158**描述** 159 160OH_NativeBuffer的属性配置,用于申请新的OH_NativeBuffer实例或查询现有实例的相关属性 161 162**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer 163 164**起始版本:** 9 165 166 167### OH_NativeBuffer_Cta861 168 169``` 170typedef struct OH_NativeBuffer_Cta861 OH_NativeBuffer_Cta861 171``` 172 173**描述** 174 175表示CTA-861.3静态元数据。 176 177**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer 178 179**起始版本:** 12 180 181 182### OH_NativeBuffer_Format 183 184``` 185typedef enum OH_NativeBuffer_Format OH_NativeBuffer_Format 186``` 187 188**描述** 189 190OH_NativeBuffer的格式。 191 192**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer 193 194**起始版本:** 10 195 196 197### OH_NativeBuffer_MetadataKey 198 199``` 200typedef enum OH_NativeBuffer_MetadataKey OH_NativeBuffer_MetadataKey 201``` 202 203**描述** 204 205表示OH_NativeBuffer的HDR元数据种类的键值。 206 207**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer 208 209**起始版本:** 12 210 211 212### OH_NativeBuffer_MetadataType 213 214``` 215typedef enum OH_NativeBuffer_MetadataType OH_NativeBuffer_MetadataType 216``` 217 218**描述** 219 220OH_NativeBuffer的图像标准。 221 222**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer 223 224**起始版本:** 12 225 226 227### OH_NativeBuffer_Plane 228 229``` 230typedef struct OH_NativeBuffer_Plane OH_NativeBuffer_Plane 231``` 232 233**描述** 234 235单个图像平面格式信息。 236 237**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer 238 239**起始版本:** 12 240 241 242### OH_NativeBuffer_Planes 243 244``` 245typedef struct OH_NativeBuffer_Planes OH_NativeBuffer_Planes 246``` 247 248**描述** 249 250OH_NativeBuffer的图像平面格式信息。 251 252**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer 253 254**起始版本:** 12 255 256 257### OH_NativeBuffer_Smpte2086 258 259``` 260typedef struct OH_NativeBuffer_Smpte2086 OH_NativeBuffer_Smpte2086 261``` 262 263**描述** 264 265表示smpte2086静态元数据。 266 267**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer 268 269**起始版本:** 12 270 271 272### OH_NativeBuffer_StaticMetadata 273 274``` 275typedef struct OH_NativeBuffer_StaticMetadata OH_NativeBuffer_StaticMetadata 276``` 277 278**描述** 279 280表示HDR静态元数据。 281 282**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer 283 284**起始版本:** 12 285 286 287### OH_NativeBuffer_TransformType 288 289``` 290typedef enum OH_NativeBuffer_TransformType OH_NativeBuffer_TransformType 291``` 292 293**描述** 294 295OH_NativeBuffer的转换类型。 296 297**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer 298 299**起始版本:** 12 300 301 302### OH_NativeBuffer_Usage 303 304``` 305typedef enum OH_NativeBuffer_Usage OH_NativeBuffer_Usage 306``` 307 308**描述** 309 310OH_NativeBuffer的用途。 311 312**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer 313 314**起始版本:** 10 315 316 317### OHNativeErrorCode 318 319``` 320typedef enum OHNativeErrorCodeOHNativeErrorCode 321``` 322 323**描述** 324 325接口错误码说明(仅用于查询)。 326 327**起始版本:** 12 328 329 330## 枚举类型说明 331 332 333### OH_NativeBuffer_ColorGamut 334 335``` 336enum OH_NativeBuffer_ColorGamut 337``` 338 339**描述** 340 341OH_NativeBuffer的色域。 342 343**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer 344 345**起始版本:** 12 346 347| 枚举值 | 描述 | 348| -------- | -------- | 349| NATIVEBUFFER_COLOR_GAMUT_NATIVE | 默认色域格式 | 350| NATIVEBUFFER_COLOR_GAMUT_STANDARD_BT601 | Standard BT601 色域格式 | 351| NATIVEBUFFER_COLOR_GAMUT_STANDARD_BT709 | Standard BT709 色域格式 | 352| NATIVEBUFFER_COLOR_GAMUT_DCI_P3 | DCI P3 色域格式 | 353| NATIVEBUFFER_COLOR_GAMUT_SRGB | SRGB 色域格式 | 354| NATIVEBUFFER_COLOR_GAMUT_ADOBE_RGB | Adobe RGB 色域格式 | 355| NATIVEBUFFER_COLOR_GAMUT_DISPLAY_P3 | Display P3 色域格式 | 356| NATIVEBUFFER_COLOR_GAMUT_BT2020 | BT2020 色域格式 | 357| NATIVEBUFFER_COLOR_GAMUT_BT2100_PQ | BT2100 PQ 色域格式 | 358| NATIVEBUFFER_COLOR_GAMUT_BT2100_HLG | BT2100 HLG 色域格式 | 359| NATIVEBUFFER_COLOR_GAMUT_DISPLAY_BT2020 | Display BT2020 色域格式 | 360 361 362### OH_NativeBuffer_ColorSpace 363 364``` 365enum OH_NativeBuffer_ColorSpace 366``` 367 368**描述** 369 370OH_NativeBuffer的颜色空间 371 372**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer 373 374**起始版本:** 11 375 376| 枚举值 | 描述 | 377| -------- | -------- | 378| OH_COLORSPACE_NONE | 无颜色空间 | 379| OH_COLORSPACE_BT601_EBU_FULL | 色域范围为BT601_P, 传递函数为BT709, 转换矩阵为BT601_P, 数据范围为RANGE_FULL | 380| OH_COLORSPACE_BT601_SMPTE_C_FULL | 色域范围为BT601_N, 传递函数为BT709, 转换矩阵为BT601_N, 数据范围为RANGE_FULL | 381| OH_COLORSPACE_BT709_FULL | 色域范围为BT709, 传递函数为BT709, 转换矩阵为BT709, 数据范围为RANGE_FULL | 382| OH_COLORSPACE_BT2020_HLG_FULL | 色域范围为BT2020, 传递函数为HLG, 转换矩阵为BT2020, 数据范围为RANGE_FULL | 383| OH_COLORSPACE_BT2020_PQ_FULL | 色域范围为BT2020, 传递函数为PQ, 转换矩阵为BT2020, 数据范围为RANGE_FULL | 384| OH_COLORSPACE_BT601_EBU_LIMIT | 色域范围为BT601_P, 传递函数为BT709, 转换矩阵为BT601_P, 数据范围为RANGE_LIMITED | 385| OH_COLORSPACE_BT601_SMPTE_C_LIMIT | 色域范围为BT601_N, 传递函数为BT709, 转换矩阵为BT601_N, 数据范围为RANGE_LIMITED | 386| OH_COLORSPACE_BT709_LIMIT | 色域范围为BT709, 传递函数为BT709, 转换矩阵为BT709, 数据范围为RANGE_LIMITED | 387| OH_COLORSPACE_BT2020_HLG_LIMIT | 色域范围为BT2020, 传递函数为HLG, 转换矩阵为BT2020, 数据范围为RANGE_LIMITED | 388| OH_COLORSPACE_BT2020_PQ_LIMIT | 色域范围为BT2020, 传递函数为PQ, 转换矩阵为BT2020, 数据范围为RANGE_LIMITED | 389| OH_COLORSPACE_SRGB_FULL | 色域范围为SRGB, 传递函数为SRGB, 转换矩阵为BT601_N, 数据范围为RANGE_FULL | 390| OH_COLORSPACE_P3_FULL | 色域范围为P3_D65, 传递函数为SRGB, 转换矩阵为P3, 数据范围为RANGE_FULL | 391| OH_COLORSPACE_P3_HLG_FULL | 色域范围为P3_D65, 传递函数为HLG, 转换矩阵为P3, 数据范围为RANGE_FULL | 392| OH_COLORSPACE_P3_PQ_FULL | 色域范围为P3_D65, 传递函数为PQ, 转换矩阵为P3, 数据范围为RANGE_FULL | 393| OH_COLORSPACE_ADOBERGB_FULL | 色域范围为ADOBERGB, 传递函数为ADOBERGB, 转换矩阵为ADOBERGB, 数据范围为RANGE_FULL | 394| OH_COLORSPACE_SRGB_LIMIT | 色域范围为SRGB, 传递函数为SRGB, 转换矩阵为BT601_N, 数据范围为RANGE_LIMITED | 395| OH_COLORSPACE_P3_LIMIT | 色域范围为P3_D65, 传递函数为SRGB, 转换矩阵为P3, 数据范围为RANGE_LIMITED | 396| OH_COLORSPACE_P3_HLG_LIMIT | 色域范围为P3_D65, 传递函数为HLG, 转换矩阵为P3, 数据范围为RANGE_LIMITED | 397| OH_COLORSPACE_P3_PQ_LIMIT | 色域范围为P3_D65, 传递函数为PQ, 转换矩阵为P3, 数据范围为RANGE_LIMITED | 398| OH_COLORSPACE_ADOBERGB_LIMIT | 色域范围为ADOBERGB, 传递函数为ADOBERGB, 转换矩阵为ADOBERGB, 数据范围为RANGE_LIMITED | 399| OH_COLORSPACE_LINEAR_SRGB | 色域范围为SRGB, 传递函数为LINEAR | 400| OH_COLORSPACE_LINEAR_BT709 | 等同于 OH_COLORSPACE_LINEAR_SRGB | 401| OH_COLORSPACE_LINEAR_P3 | 色域范围为P3_D65, 传递函数为LINEAR | 402| OH_COLORSPACE_LINEAR_BT2020 | 色域范围为BT2020, 传递函数为LINEAR | 403| OH_COLORSPACE_DISPLAY_SRGB | 等同于 OH_COLORSPACE_SRGB_FULL | 404| OH_COLORSPACE_DISPLAY_P3_SRGB | 等同于 OH_COLORSPACE_P3_FULL | 405| OH_COLORSPACE_DISPLAY_P3_HLG | 等同于 OH_COLORSPACE_P3_HLG_FULL | 406| OH_COLORSPACE_DISPLAY_P3_PQ | 等同于 OH_COLORSPACE_P3_PQ_FULL | 407| OH_COLORSPACE_DISPLAY_BT2020_SRGB | 色域范围为BT2020, 传递函数为SRGB, 转换矩阵为BT2020, 数据范围为RANGE_FULL | 408| OH_COLORSPACE_DISPLAY_BT2020_HLG | 等同于 OH_COLORSPACE_BT2020_HLG_FULL | 409| OH_COLORSPACE_DISPLAY_BT2020_PQ | 等同于 OH_COLORSPACE_BT2020_PQ_FULL | 410 411 412### OH_NativeBuffer_Format 413 414``` 415enum OH_NativeBuffer_Format 416``` 417 418**描述** 419 420OH_NativeBuffer的格式。 421 422**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer 423 424**起始版本:** 10 425 426| 枚举值 | 描述 | 427| -------- | -------- | 428| NATIVEBUFFER_PIXEL_FMT_CLUT8<sup>12+</sup> | CLUT8格式 | 429| NATIVEBUFFER_PIXEL_FMT_CLUT1<sup>12+</sup> | CLUT1格式 | 430| NATIVEBUFFER_PIXEL_FMT_CLUT4<sup>12+</sup> | CLUT4格式 | 431| NATIVEBUFFER_PIXEL_FMT_RGB_565 | RGB565格式 | 432| NATIVEBUFFER_PIXEL_FMT_RGBA_5658 | RGBA5658格式 | 433| NATIVEBUFFER_PIXEL_FMT_RGBX_4444 | RGBX4444格式 | 434| NATIVEBUFFER_PIXEL_FMT_RGBA_4444 | RGBA4444格式 | 435| NATIVEBUFFER_PIXEL_FMT_RGB_444 | RGB444格式 | 436| NATIVEBUFFER_PIXEL_FMT_RGBX_5551 | RGBX5551格式 | 437| NATIVEBUFFER_PIXEL_FMT_RGBA_5551 | RGBA5551格式 | 438| NATIVEBUFFER_PIXEL_FMT_RGB_555 | RGB555格式 | 439| NATIVEBUFFER_PIXEL_FMT_RGBX_8888 | RGBX8888格式 | 440| NATIVEBUFFER_PIXEL_FMT_RGBA_8888 | RGBA8888格式 | 441| NATIVEBUFFER_PIXEL_FMT_RGB_888 | RGB888格式 | 442| NATIVEBUFFER_PIXEL_FMT_BGR_565 | BGR565格式 | 443| NATIVEBUFFER_PIXEL_FMT_BGRX_4444 | BGRX4444格式 | 444| NATIVEBUFFER_PIXEL_FMT_BGRA_4444 | BGRA4444格式 | 445| NATIVEBUFFER_PIXEL_FMT_BGRX_5551 | BGRX5551格式 | 446| NATIVEBUFFER_PIXEL_FMT_BGRA_5551 | BGRA5551格式 | 447| NATIVEBUFFER_PIXEL_FMT_BGRX_8888 | BGRX8888格式 | 448| NATIVEBUFFER_PIXEL_FMT_BGRA_8888 | BGRA8888格式 | 449| NATIVEBUFFER_PIXEL_FMT_YUV_422_I<sup>12+</sup> | YUV422 interleaved 格式 | 450| NATIVEBUFFER_PIXEL_FMT_YCBCR_422_SP<sup>12+</sup> | YCBCR422 semi-planar 格式 | 451| NATIVEBUFFER_PIXEL_FMT_YCRCB_422_SP<sup>12+</sup> | YCRCB422 semi-planar 格式 | 452| NATIVEBUFFER_PIXEL_FMT_YCBCR_420_SP<sup>12+</sup> | YCBCR420 semi-planar 格式 | 453| NATIVEBUFFER_PIXEL_FMT_YCRCB_420_SP<sup>12+</sup> | YCRCB420 semi-planar 格式 | 454| NATIVEBUFFER_PIXEL_FMT_YCBCR_422_P<sup>12+</sup> | YCBCR422 planar 格式 | 455| NATIVEBUFFER_PIXEL_FMT_YCRCB_422_P<sup>12+</sup> | YCRCB422 planar 格式 | 456| NATIVEBUFFER_PIXEL_FMT_YCBCR_420_P<sup>12+</sup> | YCBCR420 planar 格式 | 457| NATIVEBUFFER_PIXEL_FMT_YCRCB_420_P<sup>12+</sup> | YCRCB420 planar 格式 | 458| NATIVEBUFFER_PIXEL_FMT_YUYV_422_PKG<sup>12+</sup> | YUYV422 packed 格式 | 459| NATIVEBUFFER_PIXEL_FMT_UYVY_422_PKG<sup>12+</sup> | UYVY422 packed 格式 | 460| NATIVEBUFFER_PIXEL_FMT_YVYU_422_PKG<sup>12+</sup> | YVYU422 packed 格式 | 461| NATIVEBUFFER_PIXEL_FMT_VYUY_422_PKG<sup>12+</sup> | VYUY422 packed 格式 | 462| NATIVEBUFFER_PIXEL_FMT_RGBA_1010102<sup>12+</sup> | RGBA_1010102 packed 格式 | 463| NATIVEBUFFER_PIXEL_FMT_YCBCR_P010<sup>12+</sup> | YCBCR420 semi-planar 10bit packed 格式 | 464| NATIVEBUFFER_PIXEL_FMT_YCRCB_P010<sup>12+</sup> | YCRCB420 semi-planar 10bit packed 格式 | 465| NATIVEBUFFER_PIXEL_FMT_RAW10<sup>12+</sup> | Raw 10bit packed 格式 | 466| NATIVEBUFFER_PIXEL_FMT_BLOB<sup>15+</sup> | BLOB格式 | 467| NATIVEBUFFER_PIXEL_FMT_RGBA16_FLOAT<sup>15+</sup> | RGBA16 float格式 | 468| NATIVEBUFFER_PIXEL_FMT_VENDER_MASK<sup>12+</sup> | vendor mask 格式 | 469| NATIVEBUFFER_PIXEL_FMT_BUTT | 无效格式 | 470 471 472### OH_NativeBuffer_MetadataKey 473 474``` 475enum OH_NativeBuffer_MetadataKey 476``` 477 478**描述** 479 480表示OH_NativeBuffer的HDR元数据种类的键值。 481 482**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer 483 484**起始版本:** 12 485 486| 枚举值 | 描述 | 487| -------- | -------- | 488| OH_HDR_METADATA_TYPE | 元数据类型,其值见[OH_NativeBuffer_MetadataType](#oh_nativebuffer_metadatatype),size为OH_NativeBuffer_MetadataType大小。 | 489| OH_HDR_STATIC_METADATA | 静态元数据,其值见[OH_NativeBuffer_StaticMetadata](_o_h___native_buffer___static_metadata.md),size为OH_NativeBuffer_StaticMetadata大小。 | 490| OH_HDR_DYNAMIC_METADATA | 动态元数据,其值见视频流中SEI的字节流,size的取值范围为1-3000。 | 491 492 493### OH_NativeBuffer_MetadataType 494 495``` 496enum OH_NativeBuffer_MetadataType 497``` 498 499**描述** 500 501OH_NativeBuffer的图像标准。 502 503**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer 504 505**起始版本:** 12 506 507| 枚举值 | 描述 | 508| -------- | -------- | 509| OH_VIDEO_HDR_HLG | 视频HLG。 | 510| OH_VIDEO_HDR_HDR10 | 视频HDR10。 | 511| OH_VIDEO_HDR_VIVID | 视频HDR VIVID。 | 512| OH_VIDEO_NONE<sup>13+</sup> | 无元数据。 | 513 514 515### OH_NativeBuffer_TransformType 516 517``` 518enum OH_NativeBuffer_TransformType 519``` 520 521**描述** 522 523OH_NativeBuffer的转换类型。 524 525**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer 526 527**起始版本:** 12 528 529| 枚举值 | 描述 | 530| -------- | -------- | 531| NATIVEBUFFER_ROTATE_NONE | 不旋转 | 532| NATIVEBUFFER_ROTATE_90 | 旋转90度 | 533| NATIVEBUFFER_ROTATE_180 | 旋转180度 | 534| NATIVEBUFFER_ROTATE_270 | 旋转270度 | 535| NATIVEBUFFER_FLIP_H | 水平翻转 | 536| NATIVEBUFFER_FLIP_V | 垂直翻转 | 537| NATIVEBUFFER_FLIP_H_ROT90 | 水平翻转并旋转90度 | 538| NATIVEBUFFER_FLIP_V_ROT90 | 垂直翻转并旋转90度 | 539| NATIVEBUFFER_FLIP_H_ROT180 | 水平翻转并旋转180度 | 540| NATIVEBUFFER_FLIP_V_ROT180 | 垂直翻转并旋转180度 | 541| NATIVEBUFFER_FLIP_H_ROT270 | 水平翻转并旋转270度 | 542| NATIVEBUFFER_FLIP_V_ROT270 | 垂直翻转并旋转270度 | 543 544 545### OH_NativeBuffer_Usage 546 547``` 548enum OH_NativeBuffer_Usage 549``` 550 551**描述** 552 553OH_NativeBuffer的用途。 554 555**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer 556 557**起始版本:** 10 558 559| 枚举值 | 描述 | 560| -------- | -------- | 561| NATIVEBUFFER_USAGE_CPU_READ | CPU可读 | 562| NATIVEBUFFER_USAGE_CPU_WRITE | CPU可写 | 563| NATIVEBUFFER_USAGE_MEM_DMA | 直接内存访问缓冲区 | 564| NATIVEBUFFER_USAGE_HW_RENDER<sup>12+</sup> | GPU可写 | 565| NATIVEBUFFER_USAGE_HW_TEXTURE<sup>12+</sup> | GPU可读 | 566| NATIVEBUFFER_USAGE_CPU_READ_OFTEN<sup>12+</sup> | CPU可直接映射 | 567| NATIVEBUFFER_USAGE_ALIGNMENT_512<sup>12+</sup> | 512字节对齐 | 568 569 570### OHNativeErrorCode 571 572``` 573enum OHNativeErrorCode 574``` 575 576**描述** 577 578接口错误码说明(仅用于查询)。 579 580**起始版本:** 12 581 582| 枚举值 | 描述 | 583| -------- | -------- | 584| NATIVE_ERROR_OK | 成功。 | 585| NATIVE_ERROR_MEM_OPERATION_ERROR<sup>15+</sup> | 内存操作错误。 | 586| NATIVE_ERROR_INVALID_ARGUMENTS | 入参无效。 | 587| NATIVE_ERROR_NO_PERMISSION | 无权限操作。 | 588| NATIVE_ERROR_NO_BUFFER | 无空闲可用的buffer。 | 589| NATIVE_ERROR_NO_CONSUMER | 消费端不存在。 | 590| NATIVE_ERROR_NOT_INIT | 未初始化。 | 591| NATIVE_ERROR_CONSUMER_CONNECTED | 消费端已经被连接。 | 592| NATIVE_ERROR_BUFFER_STATE_INVALID | buffer状态不符合预期。 | 593| NATIVE_ERROR_BUFFER_IN_CACHE | buffer已在缓存队列中。 | 594| NATIVE_ERROR_BUFFER_QUEUE_FULL | 队列已满。 | 595| NATIVE_ERROR_BUFFER_NOT_IN_CACHE | buffer不在缓存队列中。 | 596| NATIVE_ERROR_CONSUMER_DISCONNECTED | 消费端已经被断开连接。 | 597| NATIVE_ERROR_CONSUMER_NO_LISTENER_REGISTERED | 消费端未注册listener回调函数。 | 598| NATIVE_ERROR_UNSUPPORTED | 当前设备或平台不支持。 | 599| NATIVE_ERROR_UNKNOWN | 未知错误,请查看日志。 | 600| NATIVE_ERROR_HDI_ERROR | HDI接口调用失败。 | 601| NATIVE_ERROR_BINDER_ERROR | 跨进程通信失败。 | 602| NATIVE_ERROR_EGL_STATE_UNKNOWN | egl环境状态异常。 | 603| NATIVE_ERROR_EGL_API_FAILED | egl接口调用失败。 | 604 605 606## 函数说明 607 608 609### OH_NativeBuffer_Alloc() 610 611``` 612OH_NativeBuffer* OH_NativeBuffer_Alloc (const OH_NativeBuffer_Config* config) 613``` 614 615**描述** 616 617通过OH_NativeBuffer_Config创建OH_NativeBuffer实例,每次调用都会产生一个新的OH_NativeBuffer实例。 618本接口需要与OH_NativeBuffer_Unreference接口配合使用,否则会存在内存泄露。 619本接口为非线程安全类型接口。 620 621**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer 622 623**起始版本:** 9 624 625**参数:** 626 627| 名称 | 描述 | 628| -------- | -------- | 629| config | 一个指向OH_NativeBuffer_Config类型的指针 | 630 631**返回:** 632 633创建成功则返回一个指向OH_NativeBuffer结构体实例的指针,否则返回NULL 634 635 636### OH_NativeBuffer_FromNativeWindowBuffer() 637 638``` 639int32_t OH_NativeBuffer_FromNativeWindowBuffer (OHNativeWindowBuffer *nativeWindowBuffer, OH_NativeBuffer **buffer ) 640``` 641 642**描述** 643 644将OHNativeWindowBuffer实例转换为OH_NativeBuffer实例。 645本接口为非线程安全类型接口。 646 647**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer 648 649**起始版本:** 12 650 651**参数:** 652 653| 名称 | 描述 | 654| -------- | -------- | 655| nativeWindowBuffer | 一个指向OHNativeWindowBuffer实例的指针。 | 656| buffer | 一个指向OH_NativeBuffer实例的指针。 | 657 658**返回:** 659 660返回值为0表示执行成功,其他返回值可参考[OHNativeErrorCode](#ohnativeerrorcode)。 661 662 663### OH_NativeBuffer_GetColorSpace() 664 665``` 666int32_t OH_NativeBuffer_GetColorSpace (OH_NativeBuffer *buffer, OH_NativeBuffer_ColorSpace *colorSpace ) 667``` 668 669**描述** 670 671获取OH_NativeBuffer颜色空间属性。 672本接口为非线程安全类型接口。 673 674**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer 675 676**起始版本:** 12 677 678**参数:** 679 680| 名称 | 描述 | 681| -------- | -------- | 682| buffer | 一个指向OH_NativeBuffer实例的指针。 | 683| colorSpace | OH_NativeBuffer的颜色空间,其值从[OH_NativeBuffer_ColorSpace](#oh_nativebuffer_colorspace)获取。 | 684 685**返回:** 686 687返回值为0表示执行成功,其他返回值可参考[OHNativeErrorCode](#ohnativeerrorcode)。 688 689 690### OH_NativeBuffer_GetConfig() 691 692``` 693void OH_NativeBuffer_GetConfig (OH_NativeBuffer *buffer, OH_NativeBuffer_Config* config ) 694``` 695 696**描述** 697 698用于获取OH_NativeBuffer的属性。 699本接口为非线程安全类型接口。 700 701**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer 702 703**起始版本:** 9 704 705**参数:** 706 707| 名称 | 描述 | 708| -------- | -------- | 709| buffer | 一个指向OH_NativeBuffer实例的指针 | 710| config | 一个指向OH_NativeBuffer_Config的指针,用于接收OH_NativeBuffer的属性 | 711 712 713### OH_NativeBuffer_GetMetadataValue() 714 715``` 716int32_t OH_NativeBuffer_GetMetadataValue (OH_NativeBuffer *buffer, OH_NativeBuffer_MetadataKey metadataKey, int32_t *size, uint8_t **metaData ) 717``` 718 719**描述** 720 721获取OH_NativeBuffer元数据属性值。 722本接口为非线程安全类型接口。 723 724**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer 725 726**起始版本:** 12 727 728**参数:** 729 730| 名称 | 描述 | 731| -------- | -------- | 732| buffer | 一个指向OH_NativeBuffer实例的指针。 | 733| metadataKey | OH_NativeBuffer的元数据类型,其值从[OH_NativeBuffer_MetadataKey](#oh_nativebuffer_metadatakey)获取。 | 734| size | uint8_t向量的大小,其取值范围见[OH_NativeBuffer_MetadataKey](#oh_nativebuffer_metadatakey)。 | 735| metaDate | 指向uint8_t向量的二级指针。 | 736 737**返回:** 738 739返回值为0表示执行成功,其他返回值可参考[OHNativeErrorCode](#ohnativeerrorcode)。 740 741 742### OH_NativeBuffer_GetSeqNum() 743 744``` 745uint32_t OH_NativeBuffer_GetSeqNum (OH_NativeBuffer *buffer) 746``` 747 748**描述** 749 750获取OH_NativeBuffer的序列号。 751本接口为非线程安全类型接口。 752 753**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer 754 755**起始版本:** 9 756 757**参数:** 758 759| 名称 | 描述 | 760| -------- | -------- | 761| buffer | 一个指向OH_NativeBuffer实例的指针 | 762 763**返回:** 764 765返回对应OH_NativeBuffer的唯一序列号 766 767 768### OH_NativeBuffer_Map() 769 770``` 771int32_t OH_NativeBuffer_Map (OH_NativeBuffer *buffer, void **virAddr ) 772``` 773 774**描述** 775 776将OH_NativeBuffer对应的ION内存映射到进程空间。 777本接口需要与OH_NativeBuffer_Unmap接口配合使用。 778本接口为非线程安全类型接口。 779 780**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer 781 782**起始版本:** 9 783 784**参数:** 785 786| 名称 | 描述 | 787| -------- | -------- | 788| buffer | 一个指向OH_NativeBuffer实例的指针 | 789| virAddr | 一个二级指针,二级指针指向映射到当前进程的虚拟内存的地址 | 790 791**返回:** 792 793返回值为0表示执行成功,其他返回值可参考[OHNativeErrorCode](#ohnativeerrorcode)。 794 795 796### OH_NativeBuffer_MapPlanes() 797 798``` 799int32_t OH_NativeBuffer_MapPlanes (OH_NativeBuffer *buffer, void **virAddr, OH_NativeBuffer_Planes *outPlanes ) 800``` 801 802**描述** 803 804将OH_NativeBuffer对应的多通道ION内存映射到进程空间。 805本接口为非线程安全类型接口。 806 807**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer 808 809**起始版本:** 12 810 811**参数:** 812 813| 名称 | 描述 | 814| -------- | -------- | 815| buffer | 一个指向OH_NativeBuffer实例的指针。 | 816| virAddr | 一个二级指针,二级指针指向映射到当前进程的虚拟内存的地址。 | 817| outPlanes | 一个指向所有图像平面格式信息的指针。 | 818 819**返回:** 820 821返回值为0表示执行成功,其他返回值可参考[OHNativeErrorCode](#ohnativeerrorcode)。 822 823 824### OH_NativeBuffer_Reference() 825 826``` 827int32_t OH_NativeBuffer_Reference (OH_NativeBuffer *buffer) 828``` 829 830**描述** 831 832将OH_NativeBuffer对象的引用计数加1。 833本接口需要与OH_NativeBuffer_Unreference接口配合使用,否则会存在内存泄露。 834本接口为非线程安全类型接口。 835 836**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer 837 838**起始版本:** 9 839 840**参数:** 841 842| 名称 | 描述 | 843| -------- | -------- | 844| buffer | 一个指向OH_NativeBuffer实例的指针 | 845 846**返回:** 847 848返回值为0表示执行成功,其他返回值可参考[OHNativeErrorCode](#ohnativeerrorcode)。 849 850 851### OH_NativeBuffer_SetColorSpace() 852 853``` 854int32_t OH_NativeBuffer_SetColorSpace (OH_NativeBuffer *buffer, OH_NativeBuffer_ColorSpace colorSpace ) 855``` 856 857**描述** 858 859为OH_NativeBuffer设置颜色空间属性。 860本接口为非线程安全类型接口。 861 862**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer 863 864**起始版本:** 11 865 866**参数:** 867 868| 名称 | 描述 | 869| -------- | -------- | 870| buffer | 一个指向OH_NativeBuffer实例的指针。 | 871| colorSpace | 为OH_NativeBuffer设置的颜色空间,其值从[OH_NativeBuffer_ColorSpace](#oh_nativebuffer_colorspace)获取。 | 872 873**返回:** 874 875返回值为0表示执行成功,其他返回值可参考[OHNativeErrorCode](#ohnativeerrorcode)。 876 877 878### OH_NativeBuffer_SetMetadataValue() 879 880``` 881int32_t OH_NativeBuffer_SetMetadataValue (OH_NativeBuffer *buffer, OH_NativeBuffer_MetadataKey metadataKey, int32_t size, uint8_t *metaData ) 882``` 883 884**描述** 885 886为OH_NativeBuffer设置元数据属性值。 887本接口为非线程安全类型接口。 888 889**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer 890 891**起始版本:** 12 892 893**参数:** 894 895| 名称 | 描述 | 896| -------- | -------- | 897| buffer | 一个指向OH_NativeBuffer实例的指针。 | 898| metadataKey | OH_NativeBuffer的元数据类型,其值从[OH_NativeBuffer_MetadataKey](#oh_nativebuffer_metadatakey-1)获取。 | 899| size | uint8_t向量的大小,其取值范围见[OH_NativeBuffer_MetadataKey](#oh_nativebuffer_metadatakey-1)。 | 900| metaDate | 指向uint8_t向量的指针。 | 901 902**返回:** 903 904返回值为0表示执行成功,其他返回值可参考[OHNativeErrorCode](#ohnativeerrorcode)。 905 906 907### OH_NativeBuffer_Unmap() 908 909``` 910int32_t OH_NativeBuffer_Unmap (OH_NativeBuffer *buffer) 911``` 912 913**描述** 914 915将OH_NativeBuffer对应的ION内存从进程空间移除。 916本接口为非线程安全类型接口。 917 918**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer 919 920**起始版本:** 9 921 922**参数:** 923 924| 名称 | 描述 | 925| -------- | -------- | 926| buffer | 一个指向OH_NativeBuffer实例的指针 | 927 928**返回:** 929 930返回值为0表示执行成功,其他返回值可参考[OHNativeErrorCode](#ohnativeerrorcode)。 931 932 933### OH_NativeBuffer_Unreference() 934 935``` 936int32_t OH_NativeBuffer_Unreference (OH_NativeBuffer *buffer) 937``` 938 939**描述** 940 941将OH_NativeBuffer对象的引用计数减1,当引用计数为0的时候,该NativeBuffer对象会被析构掉。 942本接口为非线程安全类型接口。 943 944**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer 945 946**起始版本:** 9 947 948**参数:** 949 950| 名称 | 描述 | 951| -------- | -------- | 952| buffer | 一个指向OH_NativeBuffer实例的指针 | 953 954**返回:** 955 956返回值为0表示执行成功,其他返回值可参考[OHNativeErrorCode](#ohnativeerrorcode)。 957