• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 &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的用途。 |
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