# Core
## 概述
Core模块提供用于播放框架的基础骨干能力,包含内存、错误码、格式载体等相关函数。
@syscap SystemCapability.Multimedia.Media.Core
**Since:**
9
**Version:**
1.0
## 汇总
### 文件
| 名称 | 描述 |
| -------- | -------- |
| [native_averrors.h](native__averrors_8h.md) | 声明了媒体播放框架的错误码。 |
| [native_avformat.h](native__avformat_8h.md) | 声明了格式相关的函数和枚举。 |
| [native_avmemory.h](native__avmemory_8h.md) | 声明了AVMemory的函数接口。 |
### 类型定义
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVErrCode](#ohaverrcode) | typedef enum [OH_AVErrCode](#ohaverrcode)
音视频错误码。 |
| **OH_AVFormat** | typedef struct OH_AVFormat |
| [OH_AVPixelFormat](#ohavpixelformat) | typedef enum [OH_AVPixelFormat](#ohavpixelformat)
AVPixel 格式的枚举。 |
| **OH_AVMemory** | typedef struct OH_AVMemory |
### 枚举
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVErrCode](#ohaverrcode) {
**AV_ERR_OK** = 0, **AV_ERR_NO_MEMORY** = 1, **AV_ERR_OPERATE_NOT_PERMIT** = 2, **AV_ERR_INVALID_VAL** = 3, **AV_ERR_IO** = 4, **AV_ERR_TIMEOUT** = 5, **AV_ERR_UNKNOWN** = 6, **AV_ERR_SERVICE_DIED** = 7, **AV_ERR_INVALID_STATE** = 8, **AV_ERR_UNSUPPORT** = 9, **AV_ERR_EXTEND_START** = 100
} | 音视频错误码。 |
| [OH_AVPixelFormat](#ohavpixelformat) {
**AV_PIXEL_FORMAT_YUVI420** = 1, **AV_PIXEL_FORMAT_NV12** = 2, **AV_PIXEL_FORMAT_NV21** = 3, **AV_PIXEL_FORMAT_SURFACE_FORMAT** = 4, **AV_PIXEL_FORMAT_RGBA** = 5
} | AVPixel 格式的枚举。 |
### 函数
| 名称 | 描述 |
| -------- | -------- |
| [OH_AVFormat_Create](#ohavformatcreate) (void) | struct OH_AVFormat \*
创建一个OH_AVFormat句柄指针,用以读写数据。 |
| [OH_AVFormat_Destroy](#ohavformatdestroy) (struct OH_AVFormat \*format) | void
销毁指定OH_AVFormat句柄资源。 |
| [OH_AVFormat_Copy](#ohavformatcopy) (struct OH_AVFormat \*to, struct OH_AVFormat \*from) | bool
拷贝OH_AVFormat句柄资源. |
| [OH_AVFormat_SetIntValue](#ohavformatsetintvalue) (struct OH_AVFormat \*format, const char \*key, int32_t value) | bool
向OH_AVFormat写入Int数据. |
| [OH_AVFormat_SetLongValue](#ohavformatsetlongvalue) (struct OH_AVFormat \*format, const char \*key, int64_t value) | bool
向OH_AVFormat写入Long数据。 |
| [OH_AVFormat_SetFloatValue](#ohavformatsetfloatvalue) (struct OH_AVFormat \*format, const char \*key, float value) | bool
向OH_AVFormat写入Float数据。 |
| [OH_AVFormat_SetDoubleValue](#ohavformatsetdoublevalue) (struct OH_AVFormat \*format, const char \*key, double value) | bool
向OH_AVFormat写入Double数据。 |
| [OH_AVFormat_SetStringValue](#ohavformatsetstringvalue) (struct OH_AVFormat \*format, const char \*key, const char \*value) | bool
向OH_AVFormat写入String数据。 |
| [OH_AVFormat_SetBuffer](#ohavformatsetbuffer) (struct OH_AVFormat \*format, const char \*key, const uint8_t \*addr, size_t size) | bool
向OH_AVFormat写入一块指定长度的数据。 |
| [OH_AVFormat_GetIntValue](#ohavformatgetintvalue) (struct OH_AVFormat \*format, const char \*key, int32_t \*out) | bool
从OH_AVFormat读取Int数据。 |
| [OH_AVFormat_GetLongValue](#ohavformatgetlongvalue) (struct OH_AVFormat \*format, const char \*key, int64_t \*out) | bool
从OH_AVFormat读取Long数据。 |
| [OH_AVFormat_GetFloatValue](#ohavformatgetfloatvalue) (struct OH_AVFormat \*format, const char \*key, float \*out) | bool
从OH_AVFormat读取Float数据。 |
| [OH_AVFormat_GetDoubleValue](#ohavformatgetdoublevalue) (struct OH_AVFormat \*format, const char \*key, double \*out) | bool
从OH_AVFormat读取Double数据。 |
| [OH_AVFormat_GetStringValue](#ohavformatgetstringvalue) (struct OH_AVFormat \*format, const char \*key, const char \*\*out) | bool
从OH_AVFormat读取Double数据。 |
| [OH_AVFormat_GetBuffer](#ohavformatgetbuffer) (struct OH_AVFormat \*format, const char \*key, uint8_t \*\*addr, size_t \*size) | bool
从OH_AVFormat读取一块指定长度的数据。 |
| [OH_AVFormat_DumpInfo](#ohavformatdumpinfo) (struct OH_AVFormat \*format) | const char \*
以字符串的形式输出OH_AVFormat所包含的信息。 |
| [OH_AVMemory_GetAddr](#ohavmemorygetaddr) (struct OH_AVMemory \*mem) | uint8_t \*
获取入参的内存虚拟地址。 |
| [OH_AVMemory_GetSize](#ohavmemorygetsize) (struct OH_AVMemory \*mem) | int32_t
获取入参的内存长度。 |
## 类型定义说明
### OH_AVErrCode
```
typedef enum OH_AVErrCodeOH_AVErrCode
```
**描述:**
音视频错误码。
@syscap SystemCapability.Multimedia.Media.Core
### OH_AVPixelFormat
```
typedef enum OH_AVPixelFormatOH_AVPixelFormat
```
**描述:**
AVPixel 格式的枚举。
@syscap SystemCapability.Multimedia.Media.Core
## 枚举类型说明
### OH_AVErrCode
```
enum OH_AVErrCode
```
**描述:**
音视频错误码。
@syscap SystemCapability.Multimedia.Media.Core
| 枚举值 | 描述 |
| -------- | -------- |
| AV_ERR_OK | 操作成功 |
| AV_ERR_NO_MEMORY | 无内存 |
| AV_ERR_OPERATE_NOT_PERMIT | 无效参数 |
| AV_ERR_INVALID_VAL | 无效值 |
| AV_ERR_IO | IO 错误 |
| AV_ERR_TIMEOUT | 超时错误 |
| AV_ERR_UNKNOWN | 未知错误 |
| AV_ERR_SERVICE_DIED | 媒体服务死亡 |
| AV_ERR_INVALID_STATE | 当前状态不支持此操作 |
| AV_ERR_UNSUPPORT | 未支持的接口 |
| AV_ERR_EXTEND_START | 扩展错误码初始值 |
### OH_AVPixelFormat
```
enum OH_AVPixelFormat
```
**描述:**
AVPixel 格式的枚举。
@syscap SystemCapability.Multimedia.Media.Core
| 枚举值 | 描述 |
| -------- | -------- |
| AV_PIXEL_FORMAT_YUVI420 | yuv 420 planar |
| AV_PIXEL_FORMAT_NV12 | NV12. yuv 420 semiplanar |
| AV_PIXEL_FORMAT_NV21 | NV21. yvu 420 semiplanar |
| AV_PIXEL_FORMAT_SURFACE_FORMAT | surface格式 |
| AV_PIXEL_FORMAT_RGBA | RGBA8888 |
## 函数说明
### OH_AVFormat_Copy()
```
bool OH_AVFormat_Copy (struct OH_AVFormat * to, struct OH_AVFormat * from )
```
**描述:**
拷贝OH_AVFormat句柄资源.
@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| to | 接收数据的OH_AVFormat句柄指针 |
| from | 被拷贝数据的OH_AVFormat句柄指针 |
**返回:**
返回值为TRUE表示成功
返回值为FALSE表示失败
### OH_AVFormat_Create()
```
struct OH_AVFormat* OH_AVFormat_Create (void )
```
**描述:**
创建一个OH_AVFormat句柄指针,用以读写数据。
@syscap SystemCapability.Multimedia.Media.Core
**返回:**
返回OH_AVFormat实例的指针
### OH_AVFormat_Destroy()
```
void OH_AVFormat_Destroy (struct OH_AVFormat * format)
```
**描述:**
销毁指定OH_AVFormat句柄资源。
@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
**返回:**
void
### OH_AVFormat_DumpInfo()
```
const char* OH_AVFormat_DumpInfo (struct OH_AVFormat * format)
```
**描述:**
以字符串的形式输出OH_AVFormat所包含的信息。
@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
**返回:**
返回由键值和数据组成的字符串指针
### OH_AVFormat_GetBuffer()
```
bool OH_AVFormat_GetBuffer (struct OH_AVFormat * format, const char * key, uint8_t ** addr, size_t * size )
```
**描述:**
从OH_AVFormat读取一块指定长度的数据。
@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| key | 读写数据的键值 |
| addr | 生命周期是format持有,伴随format销毁,如果调用者需要长期持有,必须进行内存拷贝 |
| size | 读写数据的长度 |
**返回:**
返回值为TRUE表示成功
返回值为FALSE表示失败
### OH_AVFormat_GetDoubleValue()
```
bool OH_AVFormat_GetDoubleValue (struct OH_AVFormat * format, const char * key, double * out )
```
**描述:**
从OH_AVFormat读取Double数据。
@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| key | 读取数据的键值 |
| out | 读取的数据 |
**返回:**
返回值为TRUE表示成功
返回值为FALSE表示失败
### OH_AVFormat_GetFloatValue()
```
bool OH_AVFormat_GetFloatValue (struct OH_AVFormat * format, const char * key, float * out )
```
**描述:**
从OH_AVFormat读取Float数据。
@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| key | 读取数据的键值 |
| out | 读取的数据 |
**返回:**
返回值为TRUE表示成功
返回值为FALSE表示失败
### OH_AVFormat_GetIntValue()
```
bool OH_AVFormat_GetIntValue (struct OH_AVFormat * format, const char * key, int32_t * out )
```
**描述:**
从OH_AVFormat读取Int数据。
@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| key | 读取数据的键值 |
| out | 读取的数据 |
**返回:**
返回值为TRUE表示成功
返回值为FALSE表示失败
### OH_AVFormat_GetLongValue()
```
bool OH_AVFormat_GetLongValue (struct OH_AVFormat * format, const char * key, int64_t * out )
```
**描述:**
从OH_AVFormat读取Long数据。
@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| key | 读取数据的键值 |
| out | 读取的数据 |
**返回:**
返回值为TRUE表示成功
返回值为FALSE表示失败
### OH_AVFormat_GetStringValue()
```
bool OH_AVFormat_GetStringValue (struct OH_AVFormat * format, const char * key, const char ** out )
```
**描述:**
从OH_AVFormat读取Double数据。
@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| key | 读取数据的键值 |
| out | 读取的字符串指针,指向的数据生命周期伴随GetString更新,伴随format销毁,如果调用者需要长期持有,必须进行内存拷贝 |
**返回:**
返回值为TRUE表示成功
返回值为FALSE表示失败
### OH_AVFormat_SetBuffer()
```
bool OH_AVFormat_SetBuffer (struct OH_AVFormat * format, const char * key, const uint8_t * addr, size_t size )
```
**描述:**
向OH_AVFormat写入一块指定长度的数据。
@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| key | 写入数据的键值 |
| addr | 写入的数据地址 |
| size | 写入的数据长度 |
**返回:**
返回值为TRUE表示成功
返回值为FALSE表示失败
### OH_AVFormat_SetDoubleValue()
```
bool OH_AVFormat_SetDoubleValue (struct OH_AVFormat * format, const char * key, double value )
```
**描述:**
向OH_AVFormat写入Double数据。
@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| key | 写入数据的键值 |
| value | 写入的数据 |
**返回:**
返回值为TRUE表示成功
返回值为FALSE表示失败
### OH_AVFormat_SetFloatValue()
```
bool OH_AVFormat_SetFloatValue (struct OH_AVFormat * format, const char * key, float value )
```
**描述:**
向OH_AVFormat写入Float数据。
@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| key | 写入数据的键值 |
| value | 写入的数据 |
**返回:**
返回值为TRUE表示成功
返回值为FALSE表示失败
### OH_AVFormat_SetIntValue()
```
bool OH_AVFormat_SetIntValue (struct OH_AVFormat * format, const char * key, int32_t value )
```
**描述:**
向OH_AVFormat写入Int数据.
@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| key | 写入数据的键值 |
| value | 写入的数据 |
**返回:**
返回值为TRUE表示成功
返回值为FALSE表示失败
### OH_AVFormat_SetLongValue()
```
bool OH_AVFormat_SetLongValue (struct OH_AVFormat * format, const char * key, int64_t value )
```
**描述:**
向OH_AVFormat写入Long数据。
@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| key | 写入数据的键值 |
| value | 写入的数据 |
**返回:**
返回值为TRUE表示成功
返回值为FALSE表示失败
### OH_AVFormat_SetStringValue()
```
bool OH_AVFormat_SetStringValue (struct OH_AVFormat * format, const char * key, const char * value )
```
**描述:**
向OH_AVFormat写入String数据。
@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| format | 指向OH_AVFormat实例的指针 |
| key | 写入数据的键值 |
| value | 写入的数据 |
**返回:**
返回值为TRUE表示成功
返回值为FALSE表示失败
### OH_AVMemory_GetAddr()
```
uint8_t* OH_AVMemory_GetAddr (struct OH_AVMemory * mem)
```
**描述:**
获取入参的内存虚拟地址。
@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| mem | 指向OH_AVMemory实例的指针 |
**返回:**
如果内存有效,返回内存的虚拟地址
如果内存无效,返回nullptr
### OH_AVMemory_GetSize()
```
int32_t OH_AVMemory_GetSize (struct OH_AVMemory * mem)
```
**描述:**
获取入参的内存长度。
@syscap SystemCapability.Multimedia.Media.Core
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| mem | 指向OH_AVMemory实例的指针 |
**返回:**
如果内存有效,返回内存长度
如果内存无效,返回-1