• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# OH_NativeBuffer
2
3
4## 概述
5
6提供NativeBuffer功能,通过提供的接口,可以实现共享内存的申请、使用、属性查询、释放等操作
7
8**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer
9
10**起始版本:** 9
11
12
13## 汇总
14
15
16### 文件
17
18| 名称 | 描述 |
19| -------- | -------- |
20| [native_buffer.h](native__buffer_8h.md) | 定义获取和使用NativeBuffer的相关函数<br/>**引用文件:**&lt;native_buffer/native_buffer.h&gt;<br/>**库:** libnative_buffer.so |
21
22
23### 结构体
24
25| 名称 | 描述 |
26| -------- | -------- |
27| [OH_NativeBuffer_Config](_o_h___native_buffer___config.md) | OH_NativeBuffer的属性配置,用于申请新的OH_NativeBuffer实例或查询现有实例的相关属性 |
28
29
30### 类型定义
31
32| 名称 | 描述 |
33| -------- | -------- |
34| [OH_NativeBuffer](#oh_nativebuffer) | 提供OH_NativeBuffer结构体声明 |
35
36
37### 枚举
38
39| 名称 | 描述 |
40| -------- | -------- |
41| [OH_NativeBuffer_Usage](#oh_nativebuffer_usage) { NATIVEBUFFER_USAGE_CPU_READ = (1ULL &lt;&lt; 0), NATIVEBUFFER_USAGE_CPU_WRITE = (1ULL &lt;&lt; 1), NATIVEBUFFER_USAGE_MEM_DMA = (1ULL &lt;&lt; 3) } | OH_NativeBuffer的用途。 |
42| [OH_NativeBuffer_Format](#oh_nativebuffer_format) {<br/>NATIVEBUFFER_PIXEL_FMT_RGB_565 = 3, NATIVEBUFFER_PIXEL_FMT_RGBA_5658, NATIVEBUFFER_PIXEL_FMT_RGBX_4444, NATIVEBUFFER_PIXEL_FMT_RGBA_4444,<br/>NATIVEBUFFER_PIXEL_FMT_RGB_444, NATIVEBUFFER_PIXEL_FMT_RGBX_5551, NATIVEBUFFER_PIXEL_FMT_RGBA_5551, NATIVEBUFFER_PIXEL_FMT_RGB_555,<br/>NATIVEBUFFER_PIXEL_FMT_RGBX_8888, NATIVEBUFFER_PIXEL_FMT_RGBA_8888, NATIVEBUFFER_PIXEL_FMT_RGB_888, NATIVEBUFFER_PIXEL_FMT_BGR_565,<br/>NATIVEBUFFER_PIXEL_FMT_BGRX_4444, NATIVEBUFFER_PIXEL_FMT_BGRA_4444, NATIVEBUFFER_PIXEL_FMT_BGRX_5551, NATIVEBUFFER_PIXEL_FMT_BGRA_5551,<br/>NATIVEBUFFER_PIXEL_FMT_BGRX_8888, NATIVEBUFFER_PIXEL_FMT_BGRA_8888, NATIVEBUFFER_PIXEL_FMT_BUTT = 0X7FFFFFFF<br/>} | OH_NativeBuffer的格式。 |
43| [OH_NativeBuffer_ColorSpace](#oh_nativebuffer_colorspace) {<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的颜色空间 |
44
45
46### 函数
47
48| 名称 | 描述 |
49| -------- | -------- |
50| [OH_NativeBuffer_Alloc](#oh_nativebuffer_alloc) (const [OH_NativeBuffer_Config](_o_h___native_buffer___config.md) \*config) | 通过OH_NativeBuffer_Config创建OH_NativeBuffer实例,每次调用都会产生一个新的OH_NativeBuffer实例 |
51| [OH_NativeBuffer_Reference](#oh_nativebuffer_reference) ([OH_NativeBuffer](#oh_nativebuffer) \*buffer) | 将OH_NativeBuffer对象的引用计数加1 |
52| [OH_NativeBuffer_Unreference](#oh_nativebuffer_unreference) ([OH_NativeBuffer](#oh_nativebuffer) \*buffer) | 将OH_NativeBuffer对象的引用计数减1,当引用计数为0的时候,该NativeBuffer对象会被析构掉 |
53| [OH_NativeBuffer_GetConfig](#oh_nativebuffer_getconfig) ([OH_NativeBuffer](#oh_nativebuffer) \*buffer, [OH_NativeBuffer_Config](_o_h___native_buffer___config.md) \*config) | 用于获取OH_NativeBuffer的属性 |
54| [OH_NativeBuffer_Map](#oh_nativebuffer_map) ([OH_NativeBuffer](#oh_nativebuffer) \*buffer, void \*\*virAddr) | 将OH_NativeBuffer对应的ION内存映射到进程空间 |
55| [OH_NativeBuffer_Unmap](#oh_nativebuffer_unmap) ([OH_NativeBuffer](#oh_nativebuffer) \*buffer) | 将OH_NativeBuffer对应的ION内存从进程空间移除 |
56| [OH_NativeBuffer_GetSeqNum](#oh_nativebuffer_getseqnum) ([OH_NativeBuffer](#oh_nativebuffer) \*buffer) | 获取OH_NativeBuffer的序列号 |
57| [OH_NativeBuffer_SetColorSpace](#oh_nativebuffer_setcolorspace) ([OH_NativeBuffer](#oh_nativebuffer) \*buffer, [OH_NativeBuffer_ColorSpace](#oh_nativebuffer_colorspace) colorSpace) | 为OH_NativeBuffer设置颜色空间属性 |
58
59
60## 类型定义说明
61
62
63### OH_NativeBuffer
64
65```
66typedef struct OH_NativeBufferOH_NativeBuffer
67```
68
69**描述**
70
71提供OH_NativeBuffer结构体声明
72
73**起始版本:** 9
74
75
76## 枚举类型说明
77
78
79### OH_NativeBuffer_ColorSpace
80
81```
82enum OH_NativeBuffer_ColorSpace
83```
84
85**描述**
86
87Indicates the color space of a native buffer.
88
89**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer
90
91**起始版本:** 11
92
93| 枚举值 | 描述 |
94| -------- | -------- |
95| OH_COLORSPACE_NONE | 无颜色空间 |
96| OH_COLORSPACE_BT601_EBU_FULL | 色域范围为BT601_P, 传递函数为BT709, 转换矩阵为BT601_P, 数据范围为RANGE_FULL |
97| OH_COLORSPACE_BT601_SMPTE_C_FULL | 色域范围为BT601_N, 传递函数为BT709, 转换矩阵为BT601_N, 数据范围为RANGE_FULL |
98| OH_COLORSPACE_BT709_FULL | 色域范围为BT709, 传递函数为BT709, 转换矩阵为BT709, 数据范围为RANGE_FULL |
99| OH_COLORSPACE_BT2020_HLG_FULL | 色域范围为BT2020, 传递函数为HLG, 转换矩阵为BT2020, 数据范围为RANGE_FULL |
100| OH_COLORSPACE_BT2020_PQ_FULL | 色域范围为BT2020, 传递函数为PQ, 转换矩阵为BT2020, 数据范围为RANGE_FULL |
101| OH_COLORSPACE_BT601_EBU_LIMIT | 色域范围为BT601_P, 传递函数为BT709, 转换矩阵为BT601_P, 数据范围为RANGE_LIMITED |
102| OH_COLORSPACE_BT601_SMPTE_C_LIMIT | 色域范围为BT601_N, 传递函数为BT709, 转换矩阵为BT601_N, 数据范围为RANGE_LIMITED |
103| OH_COLORSPACE_BT709_LIMIT | 色域范围为BT709, 传递函数为BT709, 转换矩阵为BT709, 数据范围为RANGE_LIMITED |
104| OH_COLORSPACE_BT2020_HLG_LIMIT | 色域范围为BT2020, 传递函数为HLG, 转换矩阵为BT2020, 数据范围为RANGE_LIMITED |
105| OH_COLORSPACE_BT2020_PQ_LIMIT | 色域范围为BT2020, 传递函数为PQ, 转换矩阵为BT2020, 数据范围为RANGE_LIMITED |
106| OH_COLORSPACE_SRGB_FULL | 色域范围为SRGB, 传递函数为SRGB, 转换矩阵为BT601_N, 数据范围为RANGE_FULL |
107| OH_COLORSPACE_P3_FULL | 色域范围为P3_D65, 传递函数为SRGB, 转换矩阵为P3, 数据范围为RANGE_FULL |
108| OH_COLORSPACE_P3_HLG_FULL | 色域范围为P3_D65, 传递函数为HLG, 转换矩阵为P3, 数据范围为RANGE_FULL |
109| OH_COLORSPACE_P3_PQ_FULL | 色域范围为P3_D65, 传递函数为PQ, 转换矩阵为P3, 数据范围为RANGE_FULL |
110| OH_COLORSPACE_ADOBERGB_FULL | 色域范围为ADOBERGB, 传递函数为ADOBERGB, 转换矩阵为ADOBERGB, 数据范围为RANGE_FULL |
111| OH_COLORSPACE_SRGB_LIMIT | 色域范围为SRGB, 传递函数为SRGB, 转换矩阵为BT601_N, 数据范围为RANGE_LIMITED |
112| OH_COLORSPACE_P3_LIMIT | 色域范围为P3_D65, 传递函数为SRGB, 转换矩阵为P3, 数据范围为RANGE_LIMITED |
113| OH_COLORSPACE_P3_HLG_LIMIT | 色域范围为P3_D65, 传递函数为HLG, 转换矩阵为P3, 数据范围为RANGE_LIMITED |
114| OH_COLORSPACE_P3_PQ_LIMIT | 色域范围为P3_D65, 传递函数为PQ, 转换矩阵为P3, 数据范围为RANGE_LIMITED |
115| OH_COLORSPACE_ADOBERGB_LIMIT | 色域范围为ADOBERGB, 传递函数为ADOBERGB, 转换矩阵为ADOBERGB, 数据范围为RANGE_LIMITED |
116| OH_COLORSPACE_LINEAR_SRGB | 色域范围为SRGB, 传递函数为LINEAR |
117| OH_COLORSPACE_LINEAR_BT709 | 等同于 OH_COLORSPACE_LINEAR_SRGB |
118| OH_COLORSPACE_LINEAR_P3 | 色域范围为P3_D65, 传递函数为LINEAR |
119| OH_COLORSPACE_LINEAR_BT2020 | 色域范围为BT2020, 传递函数为LINEAR |
120| OH_COLORSPACE_DISPLAY_SRGB | 等同于OH_COLORSPACE_SRGB_FULL |
121| OH_COLORSPACE_DISPLAY_P3_SRGB | 等同于OH_COLORSPACE_P3_FULL |
122| OH_COLORSPACE_DISPLAY_P3_HLG | 等同于OH_COLORSPACE_P3_HLG_FULL |
123| OH_COLORSPACE_DISPLAY_P3_PQ | 等同于OH_COLORSPACE_P3_PQ_FULL |
124| OH_COLORSPACE_DISPLAY_BT2020_SRGB | 色域范围为BT2020, 传递函数为SRGB, 转换矩阵为BT2020, 数据范围为RANGE_FULL |
125| OH_COLORSPACE_DISPLAY_BT2020_HLG | 等同于OH_COLORSPACE_BT2020_HLG_FULL |
126| OH_COLORSPACE_DISPLAY_BT2020_PQ | 等同于OH_COLORSPACE_BT2020_PQ_FULL |
127
128
129### OH_NativeBuffer_Format
130
131```
132enum OH_NativeBuffer_Format
133```
134
135**描述**
136
137OH_NativeBuffer的格式。
138
139**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer
140
141**起始版本:** 10
142
143| 枚举值 | 描述 |
144| -------- | -------- |
145| NATIVEBUFFER_PIXEL_FMT_RGB_565 | RGB565格式 |
146| NATIVEBUFFER_PIXEL_FMT_RGBA_5658 | RGBA5658格式 |
147| NATIVEBUFFER_PIXEL_FMT_RGBX_4444 | RGBX4444格式 |
148| NATIVEBUFFER_PIXEL_FMT_RGBA_4444 | RGBA4444格式 |
149| NATIVEBUFFER_PIXEL_FMT_RGB_444 | RGB444格式 |
150| NATIVEBUFFER_PIXEL_FMT_RGBX_5551 | RGBX5551格式 |
151| NATIVEBUFFER_PIXEL_FMT_RGBA_5551 | RGBA5551格式 |
152| NATIVEBUFFER_PIXEL_FMT_RGB_555 | RGB555格式 |
153| NATIVEBUFFER_PIXEL_FMT_RGBX_8888 | RGBX8888格式 |
154| NATIVEBUFFER_PIXEL_FMT_RGBA_8888 | RGBA8888格式 |
155| NATIVEBUFFER_PIXEL_FMT_RGB_888 | RGB888格式 |
156| NATIVEBUFFER_PIXEL_FMT_BGR_565 | BGR565格式 |
157| NATIVEBUFFER_PIXEL_FMT_BGRX_4444 | BGRX4444格式 |
158| NATIVEBUFFER_PIXEL_FMT_BGRA_4444 | BGRA4444格式 |
159| NATIVEBUFFER_PIXEL_FMT_BGRX_5551 | BGRX5551格式 |
160| NATIVEBUFFER_PIXEL_FMT_BGRA_5551 | BGRA5551格式 |
161| NATIVEBUFFER_PIXEL_FMT_BGRX_8888 | BGRX8888格式 |
162| NATIVEBUFFER_PIXEL_FMT_BGRA_8888 | BGRA8888格式 |
163| NATIVEBUFFER_PIXEL_FMT_BUTT | 无效格式 |
164
165
166### OH_NativeBuffer_Usage
167
168```
169enum OH_NativeBuffer_Usage
170```
171
172**描述**
173
174OH_NativeBuffer的用途。
175
176**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer
177
178**起始版本:** 10
179
180| 枚举值 | 描述 |
181| -------- | -------- |
182| NATIVEBUFFER_USAGE_CPU_READ | CPU可读 |
183| NATIVEBUFFER_USAGE_CPU_WRITE | CPU可写 |
184| NATIVEBUFFER_USAGE_MEM_DMA | 直接内存访问缓冲区 |
185
186
187## 函数说明
188
189
190### OH_NativeBuffer_Alloc()
191
192```
193OH_NativeBuffer* OH_NativeBuffer_Alloc (const OH_NativeBuffer_Config * config)
194```
195
196**描述**
197
198通过OH_NativeBuffer_Config创建OH_NativeBuffer实例,每次调用都会产生一个新的OH_NativeBuffer实例
199
200**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer
201
202**起始版本:** 9
203
204**参数:**
205
206| 名称 | 描述 |
207| -------- | -------- |
208| config | 一个指向OH_NativeBuffer_Config类型的指针 |
209
210**返回:**
211
212创建成功则返回一个指向OH_NativeBuffer结构体实例的指针,否则返回NULL
213
214
215### OH_NativeBuffer_GetConfig()
216
217```
218void OH_NativeBuffer_GetConfig (OH_NativeBuffer * buffer, OH_NativeBuffer_Config * config )
219```
220
221**描述**
222
223用于获取OH_NativeBuffer的属性
224
225**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer
226
227**起始版本:** 9
228
229**参数:**
230
231| 名称 | 描述 |
232| -------- | -------- |
233| buffer | 一个指向OH_NativeBuffer实例的指针 |
234| config | 一个指向OH_NativeBuffer_Config的指针,用于接收OH_NativeBuffer的属性 |
235
236
237### OH_NativeBuffer_GetSeqNum()
238
239```
240uint32_t OH_NativeBuffer_GetSeqNum (OH_NativeBuffer * buffer)
241```
242
243**描述**
244
245获取OH_NativeBuffer的序列号
246
247**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer
248
249**起始版本:** 9
250
251**参数:**
252
253| 名称 | 描述 |
254| -------- | -------- |
255| buffer | 一个指向OH_NativeBuffer实例的指针 |
256
257**返回:**
258
259返回对应OH_NativeBuffer的唯一序列号
260
261
262### OH_NativeBuffer_Map()
263
264```
265int32_t OH_NativeBuffer_Map (OH_NativeBuffer * buffer, void ** virAddr )
266```
267
268**描述**
269
270将OH_NativeBuffer对应的ION内存映射到进程空间
271
272**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer
273
274**起始版本:** 9
275
276**参数:**
277
278| 名称 | 描述 |
279| -------- | -------- |
280| buffer | 一个指向OH_NativeBuffer实例的指针 |
281| virAddr | 一个二级指针,二级指针指向映射到当前进程的虚拟内存的地址 |
282
283**返回:**
284
285返回值为0表示执行成功
286
287
288### OH_NativeBuffer_Reference()
289
290```
291int32_t OH_NativeBuffer_Reference (OH_NativeBuffer * buffer)
292```
293
294**描述**
295
296将OH_NativeBuffer对象的引用计数加1
297
298**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer
299
300**起始版本:** 9
301
302**参数:**
303
304| 名称 | 描述 |
305| -------- | -------- |
306| buffer | 一个指向OH_NativeBuffer实例的指针 |
307
308**返回:**
309
310返回值为0表示执行成功
311
312
313### OH_NativeBuffer_SetColorSpace()
314
315```
316int32_t OH_NativeBuffer_SetColorSpace (OH_NativeBuffer * buffer, OH_NativeBuffer_ColorSpace colorSpace )
317```
318
319**描述**
320
321为OH_NativeBuffer设置颜色空间属性
322
323**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer
324
325**起始版本:** 11
326
327**参数:**
328
329| 名称 | 描述 |
330| -------- | -------- |
331| buffer | 一个指向OH_NativeBuffer实例的指针 |
332| colorSpace | 为OH_NativeBuffer设置的颜色空间,其值从OH_NativeBuffer_ColorSpace获取 |
333
334**返回:**
335
336返回值为0表示执行成功
337
338
339### OH_NativeBuffer_Unmap()
340
341```
342int32_t OH_NativeBuffer_Unmap (OH_NativeBuffer * buffer)
343```
344
345**描述**
346
347将OH_NativeBuffer对应的ION内存从进程空间移除
348
349**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer
350
351**起始版本:** 9
352
353**参数:**
354
355| 名称 | 描述 |
356| -------- | -------- |
357| buffer | 一个指向OH_NativeBuffer实例的指针 |
358
359**返回:**
360
361返回值为0表示执行成功
362
363
364### OH_NativeBuffer_Unreference()
365
366```
367int32_t OH_NativeBuffer_Unreference (OH_NativeBuffer * buffer)
368```
369
370**描述**
371
372将OH_NativeBuffer对象的引用计数减1,当引用计数为0的时候,该NativeBuffer对象会被析构掉
373
374**系统能力:** SystemCapability.Graphic.Graphic2D.NativeBuffer
375
376**起始版本:** 9
377
378**参数:**
379
380| 名称 | 描述 |
381| -------- | -------- |
382| buffer | 一个指向OH_NativeBuffer实例的指针 |
383
384**返回:**
385
386返回值为0表示执行成功
387