1# OH_NativeBuffer 2 3 4## 概述 5 6提供NativeBuffer功能,通过提供的接口,可以实现共享内存的申请、使用、属性查询、释放等操作。 7 8\@syscap SystemCapability.Graphic.Graphic2D.NativeBuffer 9 10**起始版本:** 11 129 13 14 15## 汇总 16 17 18### 文件 19 20| 名称 | 描述 | 21| -------- | -------- | 22| [native_buffer.h](native__buffer_8h.md) | 定义获取和使用NativeBuffer的相关函数。<br/>**引用文件:** <native_buffer/native_buffer.h> <br/>**库:** libnative_buffer.so| 23 24 25### 结构体 26 27| 名称 | 描述 | 28| -------- | -------- | 29| [OH_NativeBuffer_Config](_o_h___native_buffer___config.md) | OH_NativeBuffer的属性配置,用于申请新的OH_NativeBuffer实例或查询现有实例的相关属性。 | 30 31 32### 类型定义 33 34| 名称 | 描述 | 35| -------- | -------- | 36| [OH_NativeBuffer](#oh_nativebuffer) | 提供OH_NativeBuffer结构体声明。 | 37 38### 枚举 39 40| 名称 | 描述 | 41| -------- | -------- | 42| [OH_NativeBuffer_Usage](#oh_nativebuffer_usage) { NATIVEBUFFER_USAGE_CPU_READ = (1ULL << 0), NATIVEBUFFER_USAGE_CPU_WRITE = (1ULL << 1), NATIVEBUFFER_USAGE_MEM_DMA = (1ULL << 3) } | OH_NativeBuffer的用途。 | 43| [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的格式。 | 44 45### 函数 46 47| 名称 | 描述 | 48| -------- | -------- | 49| [OH_NativeBuffer_Alloc](#oh_nativebuffer_alloc) (const [OH_NativeBuffer_Config](_o_h___native_buffer___config.md) \*config) | 通过OH_NativeBuffer_Config创建OH_NativeBuffer实例,每次调用都会产生一个新的OH_NativeBuffer实例。 | 50| [OH_NativeBuffer_Reference](#oh_nativebuffer_reference) ([OH_NativeBuffer](#oh_nativebuffer) \*buffer) | 将OH_NativeBuffer对象的引用计数加1。 | 51| [OH_NativeBuffer_Unreference](#oh_nativebuffer_unreference) ([OH_NativeBuffer](#oh_nativebuffer) \*buffer) | 将OH_NativeBuffer对象的引用计数减1,当引用计数为0的时候,该NativeBuffer对象会被析构掉。 | 52| [OH_NativeBuffer_GetConfig](#oh_nativebuffer_getconfig) ([OH_NativeBuffer](#oh_nativebuffer) \*buffer, [OH_NativeBuffer_Config](_o_h___native_buffer___config.md) \*config) | 用于获取OH_NativeBuffer的属性。 | 53| [OH_NativeBuffer_Map](#oh_nativebuffer_map) ([OH_NativeBuffer](#oh_nativebuffer) \*buffer, void \*\*virAddr) | 将OH_NativeBuffer对应的ION内存映射到进程空间。 | 54| [OH_NativeBuffer_Unmap](#oh_nativebuffer_unmap) ([OH_NativeBuffer](#oh_nativebuffer) \*buffer) | 将OH_NativeBuffer对应的ION内存从进程空间移除。 | 55| [OH_NativeBuffer_GetSeqNum](#oh_nativebuffer_getseqnum) ([OH_NativeBuffer](#oh_nativebuffer) \*buffer) | 获取OH_NativeBuffer的序列号。 | 56 57 58## 类型定义说明 59 60 61### OH_NativeBuffer 62 63 64``` 65typedef struct OH_NativeBuffer OH_NativeBuffer 66``` 67 68**描述:** 69 70提供OH_NativeBuffer结构体声明。 71 72## 枚举类型说明 73 74 75### OH_NativeBuffer_Format 76 77``` 78enum OH_NativeBuffer_Format 79``` 80 81**描述:** 82 83OH_NativeBuffer的格式。 84 85\@SysCap SystemCapability.Graphic.Graphic2D.NativeBuffer 86 87| 枚举值 | 描述 | 88| -------- | -------- | 89| NATIVEBUFFER_PIXEL_FMT_RGB_565 | RGB565格式 | 90| NATIVEBUFFER_PIXEL_FMT_RGBA_5658 | RGBA5658格式 | 91| NATIVEBUFFER_PIXEL_FMT_RGBX_4444 | RGBX4444格式 | 92| NATIVEBUFFER_PIXEL_FMT_RGBA_4444 | RGBA4444格式 | 93| NATIVEBUFFER_PIXEL_FMT_RGB_444 | RGB444格式 | 94| NATIVEBUFFER_PIXEL_FMT_RGBX_5551 | RGBX5551格式 | 95| NATIVEBUFFER_PIXEL_FMT_RGBA_5551 | RGBA5551格式 | 96| NATIVEBUFFER_PIXEL_FMT_RGB_555 | RGB555格式 | 97| NATIVEBUFFER_PIXEL_FMT_RGBX_8888 | RGBX8888格式 | 98| NATIVEBUFFER_PIXEL_FMT_RGBA_8888 | RGBA8888格式 | 99| NATIVEBUFFER_PIXEL_FMT_RGB_888 | RGB888格式 | 100| NATIVEBUFFER_PIXEL_FMT_BGR_565 | BGR565格式 | 101| NATIVEBUFFER_PIXEL_FMT_BGRX_4444 | BGRX4444格式 | 102| NATIVEBUFFER_PIXEL_FMT_BGRA_4444 | BGRA4444格式 | 103| NATIVEBUFFER_PIXEL_FMT_BGRX_5551 | BGRX5551格式 | 104| NATIVEBUFFER_PIXEL_FMT_BGRA_5551 | BGRA5551格式 | 105| NATIVEBUFFER_PIXEL_FMT_BGRX_8888 | BGRX8888格式 | 106| NATIVEBUFFER_PIXEL_FMT_BGRA_8888 | BGRA8888格式 | 107| NATIVEBUFFER_PIXEL_FMT_BUTT | 无效格式 | 108 109**起始版本:** 110 11110 112 113 114### OH_NativeBuffer_Usage 115 116``` 117enum OH_NativeBuffer_Usage 118``` 119 120**描述:** 121 122OH_NativeBuffer的用途。 123 124\@SysCap SystemCapability.Graphic.Graphic2D.NativeBuffer 125 126| 枚举值 | 描述 | 127| -------- | -------- | 128| NATIVEBUFFER_USAGE_CPU_READ | CPU可读 | 129| NATIVEBUFFER_USAGE_CPU_WRITE | CPU可写 | 130| NATIVEBUFFER_USAGE_MEM_DMA | 直接内存访问缓冲区 | 131 132**起始版本:** 133 13410 135 136 137## 函数说明 138 139 140### OH_NativeBuffer_Alloc() 141 142 143``` 144OH_NativeBuffer* OH_NativeBuffer_Alloc (const OH_NativeBuffer_Config * config) 145``` 146 147**描述:** 148 149通过OH_NativeBuffer_Config创建OH_NativeBuffer实例,每次调用都会产生一个新的OH_NativeBuffer实例。 150 151\@syscap SystemCapability.Graphic.Graphic2D.NativeBuffer 152 153**参数:** 154 155| 名称 | 描述 | 156| -------- | -------- | 157| config | 一个指向OH_NativeBuffer_Config类型的指针。 | 158 159**返回:** 160 161创建成功则返回一个指向OH_NativeBuffer结构体实例的指针,否则返回NULL。 162 163 164### OH_NativeBuffer_GetConfig() 165 166 167``` 168void OH_NativeBuffer_GetConfig (OH_NativeBuffer * buffer, OH_NativeBuffer_Config * config ) 169``` 170 171**描述:** 172 173用于获取OH_NativeBuffer的属性。 174 175\@syscap SystemCapability.Graphic.Graphic2D.NativeBuffer 176 177**参数:** 178 179| 名称 | 描述 | 180| -------- | -------- | 181| buffer | 一个指向OH_NativeBuffer实例的指针。 | 182| config | 一个指向OH_NativeBuffer_Config的指针,用于接收OH_NativeBuffer的属性。 | 183 184 185### OH_NativeBuffer_GetSeqNum() 186 187 188``` 189uint32_t OH_NativeBuffer_GetSeqNum (OH_NativeBuffer * buffer) 190``` 191 192**描述:** 193 194获取OH_NativeBuffer的序列号。 195 196\@syscap SystemCapability.Graphic.Graphic2D.NativeBuffer 197 198**参数:** 199 200| 名称 | 描述 | 201| -------- | -------- | 202| buffer | 一个指向OH_NativeBuffer实例的指针。 | 203 204**返回:** 205 206返回对应OH_NativeBuffer的唯一序列号。 207 208 209### OH_NativeBuffer_Map() 210 211 212``` 213int32_t OH_NativeBuffer_Map (OH_NativeBuffer * buffer, void ** virAddr ) 214``` 215 216**描述:** 217 218将OH_NativeBuffer对应的ION内存映射到进程空间。 219 220\@syscap SystemCapability.Graphic.Graphic2D.NativeBuffer 221 222**参数:** 223 224| 名称 | 描述 | 225| -------- | -------- | 226| buffer | 一个指向OH_NativeBuffer实例的指针。 | 227| virAddr | 一个二级指针,二级指针指向映射到当前进程的虚拟内存的地址。 | 228 229**返回:** 230 231返回值为0表示执行成功。 232 233 234### OH_NativeBuffer_Reference() 235 236 237``` 238int32_t OH_NativeBuffer_Reference (OH_NativeBuffer * buffer) 239``` 240 241**描述:** 242 243将OH_NativeBuffer对象的引用计数加1。 244 245\@syscap SystemCapability.Graphic.Graphic2D.NativeBuffer 246 247**参数:** 248 249| 名称 | 描述 | 250| -------- | -------- | 251| buffer | 一个指向OH_NativeBuffer实例的指针。 | 252 253**返回:** 254 255返回值为0表示执行成功。 256 257 258### OH_NativeBuffer_Unmap() 259 260 261``` 262int32_t OH_NativeBuffer_Unmap (OH_NativeBuffer * buffer) 263``` 264 265**描述:** 266 267将OH_NativeBuffer对应的ION内存从进程空间移除。 268 269\@syscap SystemCapability.Graphic.Graphic2D.NativeBuffer 270 271**参数:** 272 273| 名称 | 描述 | 274| -------- | -------- | 275| buffer | 一个指向OH_NativeBuffer实例的指针。 | 276 277**返回:** 278 279返回值为0表示执行成功。 280 281 282### OH_NativeBuffer_Unreference() 283 284 285``` 286int32_t OH_NativeBuffer_Unreference (OH_NativeBuffer * buffer) 287``` 288 289**描述:** 290 291将OH_NativeBuffer对象的引用计数减1,当引用计数为0的时候,该NativeBuffer对象会被析构掉。 292 293\@syscap SystemCapability.Graphic.Graphic2D.NativeBuffer 294 295**参数:** 296 297| 名称 | 描述 | 298| -------- | -------- | 299| buffer | 一个指向OH_NativeBuffer实例的指针。 | 300 301**返回:** 302 303返回值为0表示执行成功。 304