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