---
title: CreateBuffer
description: "创建一个buffer。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/252RC1/armnative/kunpengcpsvideo_16_0091.html
sourcePath: /source/zh/kunpengboostkithistory/252RC1/armnative/kunpengcpsvideo_16_0091.html
indexId: feb9685c3e8c0bd31129126b16674d12a3288be16f87d04026fca5dc3ae01fea79
---
# CreateBuffer

#### 函数功能

创建一个buffer。


#### 函数原型

int32_t CreateBuffer(FrameFormat format, MemType type, GpuEncoderBufferT &buffer) = 0


#### 参数说明

| 字段名称 | 输入/输出 | 字段类型 | 字段描述 |
| --- | --- | --- | --- |
| format | 输入 | FrameFormat | 要创建的buffer对应的格式。 |


FrameFormat定义如下。

```
enum FrameFormat : uint32_t {
    FRAME_FORMAT_NONE,
    FRAME_FORMAT_RGBA,
    FRAME_FORMAT_BGRA,
    FRAME_FORMAT_YUV,
    FRAME_FORMAT_NV12,
    FRAME_FORMAT_H264,
    FRAME_FORMAT_HEVC,
    FRAME_FORMAT_COUNT
};
```


| 字段名称 | 输入/输出 | 字段类型 | 字段描述 |
| --- | --- | --- | --- |
| type | 输入 | MemType | 需要为buffer分配空间的位置。 |


MemType定义如下。

```
enum MemType : uint32_t {
    MEM_TYPE_NONE,
    MEM_TYPE_HOST, //分配在主机内存中
    MEM_TYPE_DEVICE, //分配在设备内存中
    MEM_TYPE_COUNT
};
```

| 字段名称 | 输入/输出 | 字段类型 | 字段描述 |
| --- | --- | --- | --- |
| buffer | 输出 | GpuEncoderBufferT & | 分配完成后用于挂载buffer的指针。 |


GpuEncoderBufferT定义如下，开发者或厂商实现该接口时需要使用new为GpuEncoderBuffer分配内存，并在ReleaseBuffer接口中进行内存释放。

```
struct GpuEncoderBuffer {
    FrameFormat format = FRAME_FORMAT_NONE;
    MemType memType = MEM_TYPE_NONE;
    FrameSize size = {};
    GpuType gpuType = GPU_NONE;
    uint8_t *data  = nullptr;
    uint32_t dataLen = 0;
};
using GpuEncoderBufferT = GpuEncoderBuffer *;
```

#### 返回值说明

数据类型：GpuEncoderErrorCode

取值如下：

- OK：创建buffer成功。
- 其他：创建buffer失败。
