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/>**引用文件:**<native_buffer/native_buffer.h><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 << 0), NATIVEBUFFER_USAGE_CPU_WRITE = (1ULL << 1), NATIVEBUFFER_USAGE_MEM_DMA = (1ULL << 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