1# Core 2 3 4## 概述 5 6Core模块提供用于媒体框架的基础骨干能力,包含内存、错误码、媒体数据结构等相关函数。 7 8**系统能力:** SystemCapability.Multimedia.Media.Core 9 10**起始版本:** 9 11 12 13## 汇总 14 15 16### 文件 17 18| 名称 | 描述 | 19| -------- | -------- | 20| [native_audio_channel_layout.h](native__audio__channel__layout_8h.md) | 在录制和播放时的扬声器布局。 | 21| [native_avbuffer.h](native__avbuffer_8h.md) | 声明了媒体数据结构AVBuffer的函数接口。 | 22| [native_avbuffer_info.h](native__avbuffer__info_8h.md) | 声明了媒体数据结构AVBuffer属性的定义。 | 23| [native_averrors.h](native__averrors_8h.md) | 媒体框架错误码。 | 24| [native_avformat.h](native__avformat_8h.md) | 声明了OH_AVFormat相关的函数和枚举。 | 25| [native_avmemory.h](native__avmemory_8h.md) | 声明了媒体数据结构AVMemory的定义。 | 26 27 28### 结构体 29 30| 名称 | 描述 | 31| -------- | -------- | 32| struct [OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md) | 定义OH_AVCodec的缓冲区描述信息。 | 33 34 35### 类型定义 36 37| 名称 | 描述 | 38| -------- | -------- | 39| typedef enum [OH_AudioChannelSet](#oh_audiochannelset-1) [OH_AudioChannelSet](#oh_audiochannelset) | 音频声道集合。 | 40| typedef enum [OH_AmbAttributeSet](#oh_ambattributeset-1) [OH_AmbAttributeSet](#oh_ambattributeset) | 高保真立体声混响设置。 | 41| typedef enum [OH_AudioChannelLayout](#oh_audiochannellayout-1) [OH_AudioChannelLayout](#oh_audiochannellayout) | 音频声道布局。 | 42| typedef struct [OH_AVBuffer](#oh_avbuffer) [OH_AVBuffer](#oh_avbuffer) | 为媒体内存接口定义native层对象。 | 43| typedef struct [OH_NativeBuffer](#oh_nativebuffer) [OH_NativeBuffer](#oh_nativebuffer) | 为图形内存接口定义native层对象。 | 44| typedef enum [OH_AVCodecBufferFlags](#oh_avcodecbufferflags-1) [OH_AVCodecBufferFlags](#oh_avcodecbufferflags) | 枚举OH_AVCodec缓冲区标记的类别。 | 45| typedef struct [OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md) [OH_AVCodecBufferAttr](#oh_avcodecbufferattr) | 定义OH_AVCodec的缓冲区描述信息。 | 46| typedef enum [OH_AVErrCode](#oh_averrcode-1) [OH_AVErrCode](#oh_averrcode) | 媒体框架错误码。 | 47| typedef struct [OH_AVFormat](#oh_avformat) [OH_AVFormat](#oh_avformat) | 为OH_AVFormat接口定义native层对象。 | 48| typedef enum [OH_AVPixelFormat](#oh_avpixelformat-1) [OH_AVPixelFormat](#oh_avpixelformat) | 视频像素格式的枚举类。 | 49| typedef struct [OH_AVMemory](#oh_avmemory) [OH_AVMemory](#oh_avmemory) | 为音视频内存接口定义native层对象。 | 50 51 52### 枚举 53 54| 名称 | 描述 | 55| -------- | -------- | 56| [OH_AudioChannelSet](#oh_audiochannelset-1) {<br/>CH_SET_FRONT_LEFT = 1ULL << 0U,<br/>CH_SET_FRONT_RIGHT = 1ULL << 1U,<br/>CH_SET_FRONT_CENTER = 1ULL << 2U,<br/>CH_SET_LOW_FREQUENCY = 1ULL << 3U,<br/>CH_SET_BACK_LEFT = 1ULL << 4U,<br/>CH_SET_BACK_RIGHT = 1ULL << 5U,<br/>CH_SET_FRONT_LEFT_OF_CENTER = 1ULL << 6U,<br/>CH_SET_FRONT_RIGHT_OF_CENTER = 1ULL << 7U,<br/>CH_SET_BACK_CENTER = 1ULL << 8U,<br/>CH_SET_SIDE_LEFT = 1ULL << 9U,<br/>CH_SET_SIDE_RIGHT = 1ULL << 10U,<br/>CH_SET_TOP_CENTER = 1ULL << 11U,<br/>CH_SET_TOP_FRONT_LEFT = 1ULL << 12U,<br/>CH_SET_TOP_FRONT_CENTER = 1ULL << 13U,<br/>CH_SET_TOP_FRONT_RIGHT = 1ULL << 14U,<br/>CH_SET_TOP_BACK_LEFT = 1ULL << 15U,<br/>CH_SET_TOP_BACK_CENTER = 1ULL << 16U,<br/>CH_SET_TOP_BACK_RIGHT = 1ULL << 17U,<br/>CH_SET_STEREO_LEFT = 1ULL << 29U,<br/>CH_SET_STEREO_RIGHT = 1ULL << 30U,<br/>CH_SET_WIDE_LEFT = 1ULL << 31U,<br/>CH_SET_WIDE_RIGHT = 1ULL << 32U,<br/>CH_SET_SURROUND_DIRECT_LEFT = 1ULL << 33U,<br/>CH_SET_SURROUND_DIRECT_RIGHT = 1ULL << 34U,<br/>CH_SET_LOW_FREQUENCY_2 = 1ULL << 35U,<br/>CH_SET_TOP_SIDE_LEFT = 1ULL << 36U,<br/>CH_SET_TOP_SIDE_RIGHT = 1ULL << 37U,<br/>CH_SET_BOTTOM_FRONT_CENTER = 1ULL << 38U,<br/>CH_SET_BOTTOM_FRONT_LEFT = 1ULL << 39U,<br/>CH_SET_BOTTOM_FRONT_RIGHT = 1ULL << 40U<br/>} | 音频声道集合。 | 57| [OH_AmbAttributeSet](#oh_ambattributeset-1) {<br/>AMB_ORD_1 = 1ULL << 0U,<br/>AMB_ORD_2 = 2ULL << 0U,<br/>AMB_ORD_3 = 3ULL << 0U,<br/>AMB_COM_ACN = 0ULL << 8U,<br/>AMB_COM_FUMA = 1ULL << 8U,<br/>AMB_NOR_N3D = 0ULL << 12U,<br/>AMB_NOR_SN3D = 1ULL << 12U,<br/>AMB_MODE = 1ULL << 44U<br/>} | 高保真立体声混响设置。 | 58| [OH_AudioChannelLayout](#oh_audiochannellayout-1) {<br/>CH_LAYOUT_UNKNOWN = 0ULL,<br/>CH_LAYOUT_MONO = CH_SET_FRONT_CENTER,<br/>CH_LAYOUT_STEREO = CH_SET_FRONT_LEFT \| CH_SET_FRONT_RIGHT,<br/>CH_LAYOUT_STEREO_DOWNMIX = CH_SET_STEREO_LEFT \| CH_SET_STEREO_RIGHT,<br/>CH_LAYOUT_2POINT1 = CH_LAYOUT_STEREO \| CH_SET_LOW_FREQUENCY,<br/>CH_LAYOUT_3POINT0 = CH_LAYOUT_STEREO \| CH_SET_BACK_CENTER,<br/>CH_LAYOUT_SURROUND = CH_LAYOUT_STEREO \| CH_SET_FRONT_CENTER,<br/>CH_LAYOUT_3POINT1 = CH_LAYOUT_SURROUND \| CH_SET_LOW_FREQUENCY,<br/>CH_LAYOUT_4POINT0 = CH_LAYOUT_SURROUND \| CH_SET_BACK_CENTER,<br/>CH_LAYOUT_QUAD_SIDE = CH_LAYOUT_STEREO \| CH_SET_SIDE_LEFT \| CH_SET_SIDE_RIGHT,<br/>CH_LAYOUT_QUAD = CH_LAYOUT_STEREO \| CH_SET_BACK_LEFT \| CH_SET_BACK_RIGHT,<br/>CH_LAYOUT_2POINT0POINT2 = CH_LAYOUT_STEREO \| CH_SET_TOP_SIDE_LEFT \| CH_SET_TOP_SIDE_RIGHT,<br/>CH_LAYOUT_AMB_ORDER1_ACN_N3D = AMB_MODE \| AMB_ORD_1 \| AMB_COM_ACN \| AMB_NOR_N3D, CH_LAYOUT_AMB_ORDER1_ACN_SN3D = AMB_MODE \| AMB_ORD_1 \| AMB_COM_ACN \| AMB_NOR_SN3D,<br/>CH_LAYOUT_AMB_ORDER1_FUMA = AMB_MODE \| AMB_ORD_1 \| AMB_COM_FUMA,<br/>CH_LAYOUT_4POINT1 = CH_LAYOUT_4POINT0 \| CH_SET_LOW_FREQUENCY,<br/>CH_LAYOUT_5POINT0 = CH_LAYOUT_SURROUND \| CH_SET_SIDE_LEFT \| CH_SET_SIDE_RIGHT,<br/>CH_LAYOUT_5POINT0_BACK = CH_LAYOUT_SURROUND \| CH_SET_BACK_LEFT \| CH_SET_BACK_RIGHT,<br/>CH_LAYOUT_2POINT1POINT2 = CH_LAYOUT_2POINT0POINT2 \| CH_SET_LOW_FREQUENCY,<br/>CH_LAYOUT_3POINT0POINT2 = CH_LAYOUT_2POINT0POINT2 \| CH_SET_FRONT_CENTER,<br/>CH_LAYOUT_5POINT1 = CH_LAYOUT_5POINT0 \| CH_SET_LOW_FREQUENCY,<br/>CH_LAYOUT_5POINT1_BACK = CH_LAYOUT_5POINT0_BACK \| CH_SET_LOW_FREQUENCY,<br/>CH_LAYOUT_6POINT0 = CH_LAYOUT_5POINT0 \| CH_SET_BACK_CENTER,<br/>CH_LAYOUT_3POINT1POINT2 = CH_LAYOUT_3POINT1 \| CH_SET_TOP_FRONT_LEFT \| CH_SET_TOP_FRONT_RIGHT,<br/>CH_LAYOUT_6POINT0_FRONT = CH_LAYOUT_QUAD_SIDE \| CH_SET_FRONT_LEFT_OF_CENTER \| CH_SET_FRONT_RIGHT_OF_CENTER,<br/>CH_LAYOUT_HEXAGONAL = CH_LAYOUT_5POINT0_BACK \| CH_SET_BACK_CENTER,<br/>CH_LAYOUT_6POINT1 = CH_LAYOUT_5POINT1 \| CH_SET_BACK_CENTER,<br/>CH_LAYOUT_6POINT1_BACK = CH_LAYOUT_5POINT1_BACK \| CH_SET_BACK_CENTER,<br/>CH_LAYOUT_6POINT1_FRONT = CH_LAYOUT_6POINT0_FRONT \| CH_SET_LOW_FREQUENCY,<br/>CH_LAYOUT_7POINT0 = CH_LAYOUT_5POINT0 \| CH_SET_BACK_LEFT \| CH_SET_BACK_RIGHT,<br/>CH_LAYOUT_7POINT0_FRONT = CH_LAYOUT_5POINT0 \| CH_SET_FRONT_LEFT_OF_CENTER \| CH_SET_FRONT_RIGHT_OF_CENTER,<br/>CH_LAYOUT_7POINT1 = CH_LAYOUT_5POINT1 \| CH_SET_BACK_LEFT \| CH_SET_BACK_RIGHT,<br/>CH_LAYOUT_OCTAGONAL = CH_LAYOUT_5POINT0 \| CH_SET_BACK_LEFT \| CH_SET_BACK_CENTER \| CH_SET_BACK_RIGHT,<br/>CH_LAYOUT_5POINT1POINT2 = CH_LAYOUT_5POINT1 \| CH_SET_TOP_SIDE_LEFT \| CH_SET_TOP_SIDE_RIGHT,<br/>CH_LAYOUT_7POINT1_WIDE = CH_LAYOUT_5POINT1 \| CH_SET_FRONT_LEFT_OF_CENTER \| CH_SET_FRONT_RIGHT_OF_CENTER,<br/>CH_LAYOUT_7POINT1_WIDE_BACK = CH_LAYOUT_5POINT1_BACK \| CH_SET_FRONT_LEFT_OF_CENTER \| CH_SET_FRONT_RIGHT_OF_CENTER,<br/>CH_LAYOUT_AMB_ORDER2_ACN_N3D = AMB_MODE \| AMB_ORD_2 \| AMB_COM_ACN \| AMB_NOR_N3D,<br/>CH_LAYOUT_AMB_ORDER2_ACN_SN3D = AMB_MODE \| AMB_ORD_2 \| AMB_COM_ACN \| AMB_NOR_SN3D,<br/>CH_LAYOUT_AMB_ORDER2_FUMA = AMB_MODE \| AMB_ORD_2 \| AMB_COM_FUMA,<br/>CH_LAYOUT_5POINT1POINT4,<br/>CH_LAYOUT_7POINT1POINT2 = CH_LAYOUT_7POINT1 \| CH_SET_TOP_SIDE_LEFT \| CH_SET_TOP_SIDE_RIGHT,<br/>CH_LAYOUT_7POINT1POINT4,<br/>CH_LAYOUT_10POINT2,<br/>CH_LAYOUT_9POINT1POINT4 = CH_LAYOUT_7POINT1POINT4 \| CH_SET_WIDE_LEFT \| CH_SET_WIDE_RIGHT,<br/>CH_LAYOUT_9POINT1POINT6 = CH_LAYOUT_9POINT1POINT4 \| CH_SET_TOP_SIDE_LEFT \| CH_SET_TOP_SIDE_RIGHT,<br/>CH_LAYOUT_HEXADECAGONAL,<br/>CH_LAYOUT_AMB_ORDER3_ACN_N3D = AMB_MODE \| AMB_ORD_3 \| AMB_COM_ACN \| AMB_NOR_N3D,<br/>CH_LAYOUT_AMB_ORDER3_ACN_SN3D = AMB_MODE \| AMB_ORD_3 \| AMB_COM_ACN \| AMB_NOR_SN3D,<br/>CH_LAYOUT_AMB_ORDER3_FUMA = AMB_MODE \| AMB_ORD_3 \| AMB_COM_FUMA,<br/>CH_LAYOUT_22POINT2<br/>} | 音频声道布局。 | 59| [OH_AVCodecBufferFlags](#oh_avcodecbufferflags-1) {<br/>AVCODEC_BUFFER_FLAGS_NONE = 0,<br/>AVCODEC_BUFFER_FLAGS_EOS = 1 << 0, AVCODEC_BUFFER_FLAGS_SYNC_FRAME = 1 << 1, AVCODEC_BUFFER_FLAGS_INCOMPLETE_FRAME = 1 << 2,<br/>AVCODEC_BUFFER_FLAGS_CODEC_DATA = 1 << 3, <br/>AVCODEC_BUFFER_FLAGS_DISCARD = 1 << 4, <br/>AVCODEC_BUFFER_FLAGS_DISPOSABLE = 1 << 5<br/>} | 枚举OH_AVCodec缓冲区标记的类别。 | 60| [OH_AVErrCode](#oh_averrcode-1) {<br/>AV_ERR_OK = 0,<br/>AV_ERR_NO_MEMORY = 1,<br/>AV_ERR_OPERATE_NOT_PERMIT = 2,<br/>AV_ERR_INVALID_VAL = 3,<br/>AV_ERR_IO = 4,<br/>AV_ERR_TIMEOUT = 5,<br/>AV_ERR_UNKNOWN = 6,<br/>AV_ERR_SERVICE_DIED = 7,<br/>AV_ERR_INVALID_STATE = 8,<br/>AV_ERR_UNSUPPORT = 9,<br/>AV_ERR_EXTEND_START = 100,<br/>AV_ERR_DRM_BASE = 200,<br/>AV_ERR_DRM_DECRYPT_FAILED = 201,<br/>AV_ERR_VIDEO_BASE = 300,<br/>AV_ERR_VIDEO_UNSUPPORTED_COLOR_SPACE_CONVERSION = 301<br/>} | 媒体框架错误码。 | 61| [OH_AVPixelFormat](#oh_avpixelformat-1) {<br/>AV_PIXEL_FORMAT_YUVI420 = 1,<br/>AV_PIXEL_FORMAT_NV12 = 2,<br/>AV_PIXEL_FORMAT_NV21 = 3,<br/>AV_PIXEL_FORMAT_SURFACE_FORMAT = 4,<br/>AV_PIXEL_FORMAT_RGBA = 5<br/>} | 视频像素格式的枚举类。 | 62 63 64### 函数 65 66| 名称 | 描述 | 67| -------- | -------- | 68| [OH_AVBuffer](#oh_avbuffer) \* [OH_AVBuffer_Create](#oh_avbuffer_create) (int32_t capacity) | 创建OH_AVBuffer实例。 需要注意的是,返回值指向的创建OH_AVBuffer的实例需要调用者主动调用接口释放,请参阅[OH_AVBuffer_Destroy](#oh_avbuffer_destroy)。 | 69| [OH_AVErrCode](#oh_averrcode) [OH_AVBuffer_Destroy](#oh_avbuffer_destroy) ([OH_AVBuffer](#oh_avbuffer) \*buffer) | 释放OH_AVBuffer实例指针的资源。 | 70| [OH_AVErrCode](#oh_averrcode) [OH_AVBuffer_GetBufferAttr](#oh_avbuffer_getbufferattr) ([OH_AVBuffer](#oh_avbuffer) \*buffer, [OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md) \*attr) | 获取数据缓冲区的pts、size、offset、flags高频属性参数。 | 71| [OH_AVErrCode](#oh_averrcode) [OH_AVBuffer_SetBufferAttr](#oh_avbuffer_setbufferattr) ([OH_AVBuffer](#oh_avbuffer) \*buffer, const [OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md) \*attr) | 设置数据缓冲区的pts、size、offset、flags高频属性参数。 | 72| [OH_AVFormat](#oh_avformat) \* [OH_AVBuffer_GetParameter](#oh_avbuffer_getparameter) ([OH_AVBuffer](#oh_avbuffer) \*buffer) | 获取除基础属性外的其他参数,信息在OH_AVFormat中承载。 | 73| [OH_AVErrCode](#oh_averrcode) [OH_AVBuffer_SetParameter](#oh_avbuffer_setparameter) ([OH_AVBuffer](#oh_avbuffer) \*buffer, const [OH_AVFormat](#oh_avformat) \*format) | 设置除基础属性外的其他参数,信息在OH_AVFormat中承载。 | 74| uint8_t \* [OH_AVBuffer_GetAddr](#oh_avbuffer_getaddr) ([OH_AVBuffer](#oh_avbuffer) \*buffer) | 获取数据缓冲区的虚拟地址。 | 75| int32_t [OH_AVBuffer_GetCapacity](#oh_avbuffer_getcapacity) ([OH_AVBuffer](#oh_avbuffer) \*buffer) | 获取数据缓冲区的容量(字节数)。 | 76| [OH_NativeBuffer](#oh_nativebuffer) \* [OH_AVBuffer_GetNativeBuffer](#oh_avbuffer_getnativebuffer) ([OH_AVBuffer](#oh_avbuffer) \*buffer) | 获取OH_NativeBuffer实例的指针。 | 77| struct [OH_AVFormat](#oh_avformat) \* [OH_AVFormat_Create](#oh_avformat_create) (void) | 创建OH_AVFormat实例,用于读写数据。 | 78| struct [OH_AVFormat](#oh_avformat) \* [OH_AVFormat_CreateAudioFormat](#oh_avformat_createaudioformat) (const char \*mimeType, int32_t sampleRate, int32_t channelCount) | 创建音频OH_AVFormat实例指针并预设置指定参数,用于读写数据。 | 79| struct [OH_AVFormat](#oh_avformat) \* [OH_AVFormat_CreateVideoFormat](#oh_avformat_createvideoformat) (const char \*mimeType, int32_t width, int32_t height) | 创建视频OH_AVFormat实例指针并预设置指定参数,用于读写数据。 | 80| void [OH_AVFormat_Destroy](#oh_avformat_destroy) (struct [OH_AVFormat](#oh_avformat) \*format) | 销毁OH_AVFormat实例。 | 81| bool [OH_AVFormat_Copy](#oh_avformat_copy) (struct [OH_AVFormat](#oh_avformat) \*to, struct [OH_AVFormat](#oh_avformat) \*from) | 复制OH_AVFormat实例。 | 82| bool [OH_AVFormat_SetIntValue](#oh_avformat_setintvalue) (struct [OH_AVFormat](#oh_avformat) \*format, const char \*key, int32_t value) | 对OH_AVFormat的[key](_codec_base#媒体数据键值对)赋int类型的值。 | 83| bool [OH_AVFormat_SetLongValue](#oh_avformat_setlongvalue) (struct [OH_AVFormat](#oh_avformat) \*format, const char \*key, int64_t value) | 对OH_AVFormat的[key](_codec_base#媒体数据键值对)赋long类型的值。 | 84| bool [OH_AVFormat_SetFloatValue](#oh_avformat_setfloatvalue) (struct [OH_AVFormat](#oh_avformat) \*format, const char \*key, float value) | 对OH_AVFormat的[key](_codec_base#媒体数据键值对)赋float类型的值。 | 85| bool [OH_AVFormat_SetDoubleValue](#oh_avformat_setdoublevalue) (struct [OH_AVFormat](#oh_avformat) \*format, const char \*key, double value) | 对OH_AVFormat的[key](_codec_base#媒体数据键值对)赋double类型的值 | 86| bool [OH_AVFormat_SetStringValue](#oh_avformat_setstringvalue) (struct [OH_AVFormat](#oh_avformat) \*format, const char \*key, const char \*value) | 对OH_AVFormat的[key](_codec_base#媒体数据键值对)赋string类型的值。 | 87| bool [OH_AVFormat_SetBuffer](#oh_avformat_setbuffer) (struct [OH_AVFormat](#oh_avformat) \*format, const char \*key, const uint8_t \*addr, size_t size) | 将指定长度的数据块写入OH_AVFormat。 | 88| bool [OH_AVFormat_GetIntValue](#oh_avformat_getintvalue) (struct [OH_AVFormat](#oh_avformat) \*format, const char \*key, int32_t \*out) | 从OH_AVFormat的key获取int类型的值 | 89| bool [OH_AVFormat_GetLongValue](#oh_avformat_getlongvalue) (struct [OH_AVFormat](#oh_avformat) \*format, const char \*key, int64_t \*out) | 从OH_AVFormat的key获取long类型的值。 | 90| bool [OH_AVFormat_GetFloatValue](#oh_avformat_getfloatvalue) (struct [OH_AVFormat](#oh_avformat) \*format, const char \*key, float \*out) | 从OH_AVFormat的key获取float类型的值。 | 91| bool [OH_AVFormat_GetDoubleValue](#oh_avformat_getdoublevalue) (struct [OH_AVFormat](#oh_avformat) \*format, const char \*key, double \*out) | 从OH_AVFormat的key获取double类型的值。 | 92| bool [OH_AVFormat_GetStringValue](#oh_avformat_getstringvalue) (struct [OH_AVFormat](#oh_avformat) \*format, const char \*key, const char \*\*out) | 从OH_AVFormat的key获取string类型的值。 | 93| bool [OH_AVFormat_GetBuffer](#oh_avformat_getbuffer) (struct [OH_AVFormat](#oh_avformat) \*format, const char \*key, uint8_t \*\*addr, size_t \*size) | 从OH_AVFormat中读取指定长度的数据块。 | 94| const char \* [OH_AVFormat_DumpInfo](#oh_avformat_dumpinfo) (struct [OH_AVFormat](#oh_avformat) \*format) | 返回OH_AVFormat中包含的key-value组成的字符串。 | 95| [OH_AVMemory](#oh_avmemory) \* [OH_AVMemory_Create](#oh_avmemory_create) (int32_t size) | 创建OH_AVMemory实例的指针。(API11废弃) | 96| uint8_t \* [OH_AVMemory_GetAddr](#oh_avmemory_getaddr) (struct [OH_AVMemory](#oh_avmemory) \*mem) | 获取内存虚拟地址。 (API11废弃)| 97| int32_t [OH_AVMemory_GetSize](#oh_avmemory_getsize) (struct [OH_AVMemory](#oh_avmemory) \*mem) | 获取内存长度。(API11废弃) | 98| [OH_AVErrCode](#oh_averrcode) [OH_AVMemory_Destroy](#oh_avmemory_destroy) (struct [OH_AVMemory](#oh_avmemory) \*mem) | 释放OH_AVMemory实例指针的资源。(API11废弃) | 99 100 101## 类型定义说明 102 103 104### OH_AmbAttributeSet 105 106``` 107typedef enum OH_AmbAttributeSet OH_AmbAttributeSet 108``` 109 110**描述** 111 112高保真立体声混响设置。 113 114用int64整数来表示高保真立体声混响属性。 115 116**系统能力:** SystemCapability.Multimedia.Media.Core 117 118**起始版本:** 11 119 120 121### OH_AudioChannelLayout 122 123``` 124typedef enum OH_AudioChannelLayout OH_AudioChannelLayout 125``` 126 127**描述** 128 129音频声道布局。 130 131用int64整数来表示在录制或播放时扬声器的外观和顺序。 132 133**系统能力:** SystemCapability.Multimedia.Media.Core 134 135**起始版本:** 11 136 137 138### OH_AudioChannelSet 139 140``` 141typedef enum OH_AudioChannelSet OH_AudioChannelSet 142``` 143 144**描述** 145 146音频声道集合。 147 148将每一个声道映射为int64的变量。 149 150**系统能力:** SystemCapability.Multimedia.Media.Core 151 152**起始版本:** 11 153 154 155### OH_AVBuffer 156 157``` 158typedef struct OH_AVBuffer OH_AVBuffer 159``` 160**描述** 161 162为媒体内存接口定义native层对象。 163 164**起始版本:** 11 165 166 167### OH_AVCodecBufferAttr 168 169``` 170typedef struct OH_AVCodecBufferAttr OH_AVCodecBufferAttr 171``` 172 173**描述** 174 175定义OH_AVCodec的缓冲区描述信息。 176 177**系统能力:** SystemCapability.Multimedia.Media.Core 178 179**起始版本:** 9 180 181 182### OH_AVCodecBufferFlags 183 184``` 185typedef enum OH_AVCodecBufferFlags OH_AVCodecBufferFlags 186``` 187 188**描述** 189 190枚举OH_AVCodec缓冲区标记的类别。 191 192**系统能力:** SystemCapability.Multimedia.Media.Core 193 194**起始版本:** 9 195 196 197### OH_AVErrCode 198 199``` 200typedef enum OH_AVErrCode OH_AVErrCode 201``` 202 203**描述** 204 205媒体框架错误码。 206 207**系统能力:** SystemCapability.Multimedia.Media.Core 208 209**起始版本:** 9 210 211 212### OH_AVFormat 213 214``` 215typedef struct OH_AVFormat OH_AVFormat 216``` 217**描述** 218 219为OH_AVFormat接口定义native层对象。 220 221**起始版本:** 9 222 223 224### OH_AVMemory 225 226``` 227typedef struct OH_AVMemory OH_AVMemory 228``` 229**描述** 230 231为音视频内存接口定义native层对象。 232 233**起始版本:** 9 234 235 236### OH_AVPixelFormat 237 238``` 239typedef enum OH_AVPixelFormat OH_AVPixelFormat 240``` 241 242**描述** 243 244视频像素格式的枚举类。 245 246**系统能力:** SystemCapability.Multimedia.Media.Core 247 248**起始版本:** 9 249 250 251### OH_NativeBuffer 252 253``` 254typedef struct OH_NativeBuffer OH_NativeBuffer 255``` 256**描述** 257 258为图形内存接口定义native层对象。 259 260**起始版本:** 11 261 262 263## 枚举类型说明 264 265 266### OH_AmbAttributeSet 267 268``` 269enum OH_AmbAttributeSet 270``` 271 272**描述** 273 274高保真立体声混响设置。 275 276用int64整数来表示高保真立体声混响属性。 277 278**系统能力:** SystemCapability.Multimedia.Media.Core 279 280**起始版本:** 11 281 282| 枚举值 | 描述 | 283| -------- | -------- | 284| AMB_ORD_1 | 一阶高保真立体声混响 | 285| AMB_ORD_2 | 二阶高保真立体声混响 | 286| AMB_ORD_3 | 三阶高保真立体声混响 | 287| AMB_COM_ACN | ACN通道排序的高保真立体声混响 | 288| AMB_COM_FUMA | FUMA通道排序的高保真立体声混响 | 289| AMB_NOR_N3D | N3D归一化的高保真立体声混响 | 290| AMB_NOR_SN3D | SN3D归一化的高保真立体声混响 | 291| AMB_MODE | 高保真立体声混响的声道布局 | 292 293 294### OH_AudioChannelLayout 295 296``` 297enum OH_AudioChannelLayout 298``` 299 300**描述** 301 302音频声道布局。 303 304用int64整数来表示在录制或播放时扬声器的外观和顺序。 305 306**系统能力:** SystemCapability.Multimedia.Media.Core 307 308**起始版本:** 11 309 310| 枚举值 | 描述 | 311| -------- | -------- | 312| CH_LAYOUT_UNKNOWN | 未知声道布局 | 313| CH_LAYOUT_MONO | 单声道布局, 共1个声道 | 314| CH_LAYOUT_STEREO | 立体声布局,共2个声道 | 315| CH_LAYOUT_STEREO_DOWNMIX | 立体声下混布局,共2个声道 | 316| CH_LAYOUT_2POINT1 | 2.1布局,共3个声道 | 317| CH_LAYOUT_3POINT0 | 3.0布局,共3个声道 | 318| CH_LAYOUT_SURROUND | 环绕布局,共3个声道 | 319| CH_LAYOUT_3POINT1 | 3.1布局,共4个声道 | 320| CH_LAYOUT_4POINT0 | 4.0布局,共4个声道 | 321| CH_LAYOUT_QUAD_SIDE | QUAD_SIDE布局,共4个声道 | 322| CH_LAYOUT_QUAD | QUAD布局,共4个声道 | 323| CH_LAYOUT_2POINT0POINT2 | 2.0.2布局,共4个声道 | 324| CH_LAYOUT_AMB_ORDER1_ACN_N3D | ACN_N3D(根据ITU标准)的一阶FOA布局,共4个声道 | 325| CH_LAYOUT_AMB_ORDER1_ACN_SN3D | ACN_SN3D(根据ITU标准)的一阶FOA布局,共4个声道 | 326| CH_LAYOUT_AMB_ORDER1_FUMA | FUMA(根据ITU标准)的一阶FOA布局,共4个声道 | 327| CH_LAYOUT_4POINT1 | 4.1布局,共5个声道 | 328| CH_LAYOUT_5POINT0 | 5.0布局,共5个声道 | 329| CH_LAYOUT_5POINT0_BACK | 5.0-后置布局,共5个声道 | 330| CH_LAYOUT_2POINT1POINT2 | 2.1.2布局,共5个声道 | 331| CH_LAYOUT_3POINT0POINT2 | 3.0.2布局,共5个声道 | 332| CH_LAYOUT_5POINT1 | 5.1布局,共6个声道 | 333| CH_LAYOUT_5POINT1_BACK | 5.1-后置布局,共6个声道 | 334| CH_LAYOUT_6POINT0 | 6.0布局,共6个声道 | 335| CH_LAYOUT_3POINT1POINT2 | 3.1.2布局,共6个声道 | 336| CH_LAYOUT_6POINT0_FRONT | 6.0-Front布局,共6个声道 | 337| CH_LAYOUT_HEXAGONAL | HEXAGONAL布局,共6个声道 | 338| CH_LAYOUT_6POINT1 | 6.1布局,共7个声道 | 339| CH_LAYOUT_6POINT1_BACK | 6.1-后置布局,共7个声道 | 340| CH_LAYOUT_6POINT1_FRONT | 6.1-前置布局,共7个声道 | 341| CH_LAYOUT_7POINT0 | 7.0布局,共7个声道 | 342| CH_LAYOUT_7POINT0_FRONT | 7.0-前置布局,共7个声道 | 343| CH_LAYOUT_7POINT1 | 7.1布局,共8个声道 | 344| CH_LAYOUT_OCTAGONAL | OCTAGONAL布局,共8个声道 | 345| CH_LAYOUT_5POINT1POINT2 | 5.1.2布局,共8个声道 | 346| CH_LAYOUT_7POINT1_WIDE | 7.1-宽布局,共8个声道 | 347| CH_LAYOUT_7POINT1_WIDE_BACK | 7.1-后置宽布局,共8个声道 | 348| CH_LAYOUT_AMB_ORDER2_ACN_N3D | ACN_N3D(根据ITU标准)的二阶HOA布局,共9个声道 | 349| CH_LAYOUT_AMB_ORDER2_ACN_SN3D | ACN_SN3D(根据ITU标准)的二阶HOA布局,共9个声道 | 350| CH_LAYOUT_AMB_ORDER2_FUMA | FUMA(根据ITU标准)的二阶HOA布局,共9个声道 | 351| CH_LAYOUT_5POINT1POINT4 | 5.1.4布局,共10个声道 | 352| CH_LAYOUT_7POINT1POINT2 | 7.1.2布局,共10个声道 | 353| CH_LAYOUT_7POINT1POINT4 | 7.1.4布局,共12个声道 | 354| CH_LAYOUT_10POINT2 | 10.2布局,共12个声道 | 355| CH_LAYOUT_9POINT1POINT4 | 9.1.4布局,共14个声道 | 356| CH_LAYOUT_9POINT1POINT6 | 9.1.6布局,共16个声道 | 357| CH_LAYOUT_HEXADECAGONAL | HEXADECAGONAL布局,共16个声道 | 358| CH_LAYOUT_AMB_ORDER3_ACN_N3D | ACN_N3D(根据ITU标准)的三阶HOA布局,共16个声道 | 359| CH_LAYOUT_AMB_ORDER3_ACN_SN3D | ACN_SN3D(根据ITU标准)的三阶HOA布局,共16个声道 | 360| CH_LAYOUT_AMB_ORDER3_FUMA | FUMA(根据ITU标准)的三阶HOA布局,共16个声道 | 361| CH_LAYOUT_22POINT2 | 22.2布局,共24个声道 | 362 363 364### OH_AudioChannelSet 365 366``` 367enum OH_AudioChannelSet 368``` 369 370**描述** 371 372音频声道集合。 373 374将每一个声道映射为int64的变量。 375 376**系统能力:** SystemCapability.Multimedia.Media.Core 377 378**起始版本:** 11 379 380| 枚举值 | 描述 | 381| -------- | -------- | 382| CH_SET_FRONT_LEFT | 左前声道 | 383| CH_SET_FRONT_RIGHT | 右前声道 | 384| CH_SET_FRONT_CENTER | 中前声道 | 385| CH_SET_LOW_FREQUENCY | 低频声道 | 386| CH_SET_BACK_LEFT | 左后声道 | 387| CH_SET_BACK_RIGHT | 右后声道 | 388| CH_SET_FRONT_LEFT_OF_CENTER | 左前中置声道 | 389| CH_SET_FRONT_RIGHT_OF_CENTER | 右前中置声道 | 390| CH_SET_BACK_CENTER | 后方中置声道 | 391| CH_SET_SIDE_LEFT | 左侧声道 | 392| CH_SET_SIDE_RIGHT | 右侧声道 | 393| CH_SET_TOP_CENTER | 上方中置声道 | 394| CH_SET_TOP_FRONT_LEFT | 上方左前声道 | 395| CH_SET_TOP_FRONT_CENTER | 上方中前声道 | 396| CH_SET_TOP_FRONT_RIGHT | 上方右前声道 | 397| CH_SET_TOP_BACK_LEFT | 上方左后声道 | 398| CH_SET_TOP_BACK_CENTER | 上方中后声道 | 399| CH_SET_TOP_BACK_RIGHT | 上方右后声道 | 400| CH_SET_STEREO_LEFT | 立体声左声道 | 401| CH_SET_STEREO_RIGHT | 立体声右声道 | 402| CH_SET_WIDE_LEFT | 宽左声道 | 403| CH_SET_WIDE_RIGHT | 宽右声道 | 404| CH_SET_SURROUND_DIRECT_LEFT | 左环绕声道 | 405| CH_SET_SURROUND_DIRECT_RIGHT | 右环绕声道 | 406| CH_SET_LOW_FREQUENCY_2 | 低频声道2 | 407| CH_SET_TOP_SIDE_LEFT | 上方左侧声道 | 408| CH_SET_TOP_SIDE_RIGHT | 上方右侧声道 | 409| CH_SET_BOTTOM_FRONT_CENTER | 下方中前声道 | 410| CH_SET_BOTTOM_FRONT_LEFT | 下方左前声道 | 411| CH_SET_BOTTOM_FRONT_RIGHT | 下方右前声道 | 412 413 414### OH_AVCodecBufferFlags 415 416``` 417enum OH_AVCodecBufferFlags 418``` 419 420**描述** 421 422枚举OH_AVCodec缓冲区标记的类别。 423 424**系统能力:** SystemCapability.Multimedia.Media.Core 425 426**起始版本:** 9 427 428| 枚举值 | 描述 | 429| -------- | -------- | 430| AVCODEC_BUFFER_FLAGS_NONE | 表示为普通帧。 | 431| AVCODEC_BUFFER_FLAGS_EOS | 表示缓冲区是流结束帧。 | 432| AVCODEC_BUFFER_FLAGS_SYNC_FRAME | 表示缓冲区包含关键帧。 | 433| AVCODEC_BUFFER_FLAGS_INCOMPLETE_FRAME | 表示缓冲区中的数据只是帧的一部分。 | 434| AVCODEC_BUFFER_FLAGS_CODEC_DATA | 表示缓冲区包含编解码特定数据。 | 435| AVCODEC_BUFFER_FLAGS_DISCARD | 表示缓冲区被解码依赖,解码之后的数据可丢弃。<br/>**起始版本:** 12 | 436| AVCODEC_BUFFER_FLAGS_DISPOSABLE | 表示缓冲区不被参考可直接丢弃。<br/>**起始版本:** 12 | 437 438 439### OH_AVErrCode 440 441``` 442enum OH_AVErrCode 443``` 444 445**描述** 446 447媒体框架错误码。 448 449**系统能力:** SystemCapability.Multimedia.Media.Core 450 451**起始版本:** 9 452 453| 枚举值 | 描述 | 454| -------- | -------- | 455| AV_ERR_OK | 操作成功。 | 456| AV_ERR_NO_MEMORY | 无内存。 | 457| AV_ERR_OPERATE_NOT_PERMIT | 操作不允许。 | 458| AV_ERR_INVALID_VAL | 无效值。 | 459| AV_ERR_IO | IO错误。 | 460| AV_ERR_TIMEOUT | 超时错误。 | 461| AV_ERR_UNKNOWN | 未知错误。 | 462| AV_ERR_SERVICE_DIED | 服务死亡。 | 463| AV_ERR_INVALID_STATE | 当前状态不支持此操作。 | 464| AV_ERR_UNSUPPORT | 未支持的功能。 | 465| AV_ERR_EXTEND_START | 扩展错误码初始值。 | 466| AV_ERR_DRM_BASE | DRM起始错误码。<br/>**起始版本:** 12 | 467| AV_ERR_DRM_DECRYPT_FAILED | DRM解密失败。<br/>**起始版本:** 12 | 468| AV_ERR_VIDEO_BASE | 视频起始错误码。<br/>**起始版本:** 12 | 469| AV_ERR_VIDEO_UNSUPPORTED_COLOR_SPACE_CONVERSION | 视频不支持色彩空间转换。<br/>**起始版本:** 12 | 470 471### OH_AVPixelFormat 472 473``` 474enum OH_AVPixelFormat 475``` 476 477**描述** 478 479视频像素格式的枚举类。 480 481**系统能力:** SystemCapability.Multimedia.Media.Core 482 483**起始版本:** 9 484 485| 枚举值 | 描述 | 486| -------- | -------- | 487| AV_PIXEL_FORMAT_YUVI420 | yuv 420 planar。 | 488| AV_PIXEL_FORMAT_NV12 | NV12. yuv 420 semiplanar。 | 489| AV_PIXEL_FORMAT_NV21 | NV21. yuv 420 semiplanar。 | 490| AV_PIXEL_FORMAT_SURFACE_FORMAT | 像素格式从surface获取。 | 491| AV_PIXEL_FORMAT_RGBA | RGBA8888。 | 492 493 494## 函数说明 495 496 497### OH_AVBuffer_Create() 498 499``` 500OH_AVBuffer* OH_AVBuffer_Create (int32_t capacity) 501``` 502 503**描述** 504 505创建OH_AVBuffer实例。 需要注意的是,返回值指向的创建OH_AVBuffer的实例需要调用者主动调用接口释放,请参阅[OH_AVBuffer_Destroy](#oh_avbuffer_destroy)。 506 507**系统能力:** SystemCapability.Multimedia.Media.Core 508 509**起始版本:** 11 510 511**参数:** 512 513| 名称 | 描述 | 514| -------- | -------- | 515| capacity | 创建内存的大小,单位字节。 | 516 517**返回:** 518 519如果创建成功,则返回OH_AVBuffer实例的指针,如果失败,则返回NULL。 520 521可能失败的原因: 522 5231. capacity <=0; 5242. 出现内部错误,系统没有资源等。 525 526 527### OH_AVBuffer_Destroy() 528 529``` 530OH_AVErrCode OH_AVBuffer_Destroy (OH_AVBuffer *buffer) 531``` 532 533**描述** 534 535释放OH_AVBuffer实例指针的资源,同一个buffer不允许重复销毁。 536 537**系统能力:** SystemCapability.Multimedia.Media.Core 538 539**起始版本:** 11 540 541**参数:** 542 543| 名称 | 描述 | 544| -------- | -------- | 545| buffer | 指向OH_AVBuffer实例的指针。 | 546 547**返回:** 548 549返回函数结果: 550 551AV_ERR_OK:操作成功。 552 553AV_ERR_INVALID_VAL:输入的buffer为空指针或者buffer结构校验失败。 554 555AV_ERR_OPERATE_NOT_PERMIT:输入的buffer不是用户创建的。 556 557 558### OH_AVBuffer_GetAddr() 559 560``` 561uint8_t* OH_AVBuffer_GetAddr (OH_AVBuffer *buffer) 562``` 563 564**描述** 565 566获取数据缓冲区的虚拟地址。 567 568不同场景下,对是否可以获取虚拟地址的支持情况不同,请见表格: 569 570**编码:** 571| 模式 | 填充数据的方式 | 是否可以获取虚拟地址 | 572| --------------- | -------- | -------- | 573| Surface模式 | OnNeedInputBuffer输入 | × | 574| Surface模式 | OnNewOutputBuffer输出 | √ | 575| Buffer模式 | OnNeedInputBuffer输入 | √ | 576| Buffer模式 | OnNewOutputBuffer输出 | √ | 577 578**解码:** 579| 模式 | 填充数据的方式 | 是否可以获取虚拟地址 | 580| --------------- | -------- | -------- | 581| Surface模式 | OnNeedInputBuffer输入 | √ | 582| Surface模式 | OnNewOutputBuffer输出 | × | 583| Buffer模式 | OnNeedInputBuffer输入 | √ | 584| Buffer模式 | OnNewOutputBuffer输出 | √ | 585 586**系统能力:** SystemCapability.Multimedia.Media.Core 587 588**起始版本:** 11 589 590**参数:** 591 592| 名称 | 描述 | 593| -------- | -------- | 594| buffer | 指向OH_AVBuffer实例的指针。 | 595 596**返回:** 597 598如果成功,则返回数据缓冲区的虚拟地址,如果失败,则返回NULL。 599 600可能失败的原因: 601 6021. 输入的buffer为空指针; 6032. OH_AVBuffer结构校验失败; 6043. 出现内部错误。 605 606 607### OH_AVBuffer_GetBufferAttr() 608 609``` 610OH_AVErrCode OH_AVBuffer_GetBufferAttr (OH_AVBuffer *buffer, OH_AVCodecBufferAttr *attr) 611``` 612 613**描述** 614 615获取数据缓冲区的pts、size、offset、flags高频属性参数。 616 617**系统能力:** SystemCapability.Multimedia.Media.Core 618 619**起始版本:** 11 620 621**参数:** 622 623| 名称 | 描述 | 624| -------- | -------- | 625| buffer | 指向OH_AVBuffer实例的指针。 | 626| attr | 指向[OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md)实例的指针。 | 627 628**返回:** 629 630返回函数结果: 631 632AV_ERR_OK:操作成功。 633 634AV_ERR_INVALID_VAL: 635 636 可能的原因: 637 1. 输入的buffer或attr为空指针; 638 2. buffer结构校验失败。 639 640 641### OH_AVBuffer_GetCapacity() 642 643``` 644int32_t OH_AVBuffer_GetCapacity (OH_AVBuffer *buffer) 645``` 646 647**描述** 648 649获取数据缓冲区的容量(字节数)。 650 651**系统能力:** SystemCapability.Multimedia.Media.Core 652 653**起始版本:** 11 654 655**参数:** 656 657| 名称 | 描述 | 658| -------- | -------- | 659| buffer | 指向OH_AVBuffer实例的指针。 | 660 661**返回:** 662 663如果成功,则返回数据缓冲区的容量,如果失败,则返回-1。 664 665可能失败的原因: 666 6671. 输入的buffer为空指针; 6682. OH_AVBuffer结构校验失败; 6693. 出现内部错误。 670 671 672### OH_AVBuffer_GetNativeBuffer() 673 674``` 675OH_NativeBuffer* OH_AVBuffer_GetNativeBuffer (OH_AVBuffer *buffer) 676``` 677 678**描述** 679 680获取OH_NativeBuffer实例的指针。 需要注意的是,返回值指向的创建OH_NativeBuffer的实例需要调用者主动调用接口释放,请参阅[OH_NativeBuffer_Unreference](../apis-arkgraphics2d/_o_h___native_buffer.md#oh_nativebuffer_unreference)。 681 682**系统能力:** SystemCapability.Multimedia.Media.Core 683 684**起始版本:** 11 685 686**参数:** 687 688| 名称 | 描述 | 689| -------- | -------- | 690| buffer | 指向OH_AVBuffer实例的指针。 | 691 692**返回:** 693 694如果成功,则返回OH_NativeBuffer实例的指针,如果失败,则返回NULL。 695 696可能失败的原因: 697 6981. 输入的buffer为空指针; 6992. OH_AVBuffer结构校验失败; 7003. 出现内部错误。 701 702 703### OH_AVBuffer_GetParameter() 704 705``` 706OH_AVFormat* OH_AVBuffer_GetParameter (OH_AVBuffer *buffer) 707``` 708 709**描述** 710 711获取除基础属性外的其他参数,信息在OH_AVFormat中承载。 需要注意的是,返回值指向的创建OH_AVFormat的实例需要调用者主动释放,请参阅[OH_AVFormat_Destroy](#oh_avformat_destroy)。 712 713**系统能力:** SystemCapability.Multimedia.Media.Core 714 715**起始版本:** 11 716 717**参数:** 718 719| 名称 | 描述 | 720| -------- | -------- | 721| buffer | 指向OH_AVBuffer实例的指针。 | 722 723**返回:** 724 725返回函数结果: 726 727AV_ERR_OK:操作成功。 728 729AV_ERR_INVALID_VAL: 730 731 可能的原因: 732 1. 输入的buffer为空指针; 733 2. 输入buffer的meta为空指针; 734 3. buffer结构校验失败。 735 736 737### OH_AVBuffer_SetBufferAttr() 738 739``` 740OH_AVErrCode OH_AVBuffer_SetBufferAttr (OH_AVBuffer *buffer, const OH_AVCodecBufferAttr *attr) 741``` 742 743**描述** 744 745设置数据缓冲区的pts、size、offset、flags高频属性参数。 746 747**系统能力:** SystemCapability.Multimedia.Media.Core 748 749**起始版本:** 11 750 751**参数:** 752 753| 名称 | 描述 | 754| -------- | -------- | 755| buffer | 指向OH_AVBuffer实例的指针。 | 756| attr | 指向[OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md)实例的指针。 | 757 758**返回:** 759 760返回函数结果: 761 762AV_ERR_OK:操作成功。 763 764AV_ERR_INVALID_VAL: 765 766 可能的原因: 767 1. 输入的buffer或attr为空指针; 768 2. buffer结构校验失败; 769 3. 输入buffer中内存的size或offset是无效值。 770 771 772### OH_AVBuffer_SetParameter() 773 774``` 775OH_AVErrCode OH_AVBuffer_SetParameter (OH_AVBuffer *buffer, const OH_AVFormat *format) 776``` 777 778**描述** 779 780设置除基础属性外的其他参数,信息在OH_AVFormat中承载。 781 782**系统能力:** SystemCapability.Multimedia.Media.Core 783 784**起始版本:** 11 785 786**参数:** 787 788| 名称 | 描述 | 789| -------- | -------- | 790| buffer | 指向OH_AVBuffer实例的指针。 | 791| format | 指向OH_AVFormat实例的指针。 | 792 793**返回:** 794 795返回函数结果: 796 797AV_ERR_OK:操作成功。 798 799AV_ERR_INVALID_VAL: 800 801 可能的原因: 802 1. 输入的buffer或format为空指针; 803 2. 输入buffer的meta为空指针; 804 3. buffer结构校验失败。 805 806 807### OH_AVFormat_Copy() 808 809``` 810bool OH_AVFormat_Copy (struct OH_AVFormat *to, struct OH_AVFormat *from) 811``` 812 813**描述** 814 815复制OH_AVFormat实例。 816 817**系统能力:** SystemCapability.Multimedia.Media.Core 818 819**起始版本:** 9 820 821**参数:** 822 823| 名称 | 描述 | 824| -------- | -------- | 825| to | OH_AVFormat实例,用于接收数据。 | 826| from | 指向复制数据的OH_AVFormat实例的指针。 | 827 828**返回:** 829 830返回值为TRUE表示成功,返回值为FALSE表示失败。 831 832可能的失败原因: 833 8341. 输入参数为空指针; 8352. 输入的OH_AVFormat参数结构校验失败。 836 837 838### OH_AVFormat_Create() 839 840``` 841struct OH_AVFormat* OH_AVFormat_Create (void) 842``` 843 844**描述** 845 846创建OH_AVFormat实例,用于读写数据。 847 848**系统能力:** SystemCapability.Multimedia.Media.Core 849 850**起始版本:** 9 851 852**返回:** 853 854返回指向OH_AVFormat实例的指针。系统资源不足时返回NULL。 855 856 857### OH_AVFormat_CreateAudioFormat() 858 859``` 860struct OH_AVFormat* OH_AVFormat_CreateAudioFormat (const char *mimeType, int32_t sampleRate, int32_t channelCount) 861``` 862 863**描述** 864 865创建音频OH_AVFormat实例指针并预设置指定参数,用于读写数据。 866 867**系统能力:** SystemCapability.Multimedia.Media.Core 868 869**起始版本:** 10 870 871**参数:** 872 873| 名称 | 描述 | 874| -------- | -------- | 875| mimeType | MIME类型描述字符串,请参阅[AVCODEC_MIMETYPE](_codec_base.md#变量)。 | 876| sampleRate | 采样率,单位Hz。 | 877| channelCount | 声道个数,如1为单声道,2为双声道。 | 878 879**返回:** 880 881返回指向OH_AVFormat实例的指针。传入的mimeType为NULL或系统资源不足时返回NULL。 882 883 884### OH_AVFormat_CreateVideoFormat() 885 886``` 887struct OH_AVFormat* OH_AVFormat_CreateVideoFormat (const char *mimeType, int32_t width, int32_t height) 888``` 889 890**描述** 891 892创建视频OH_AVFormat实例指针并预设置指定参数,用于读写数据。 893 894**系统能力:** SystemCapability.Multimedia.Media.Core 895 896**起始版本:** 10 897 898**参数:** 899 900| 名称 | 描述 | 901| -------- | -------- | 902| mimeType | MIME类型描述字符串,请参阅[AVCODEC_MIMETYPE](_codec_base.md#变量)。 | 903| width | 亮度的宽度,单位为pixel。 | 904| height | 亮度的高度,单位为pixel。 | 905 906**返回:** 907 908返回指向OH_AVFormat实例的指针。传入的mimeType为NULL或系统资源不足时返回NULL。 909 910 911### OH_AVFormat_Destroy() 912 913``` 914void OH_AVFormat_Destroy (struct OH_AVFormat *format) 915``` 916 917**描述** 918 919销毁OH_AVFormat实例,不允许重复销毁。 920 921**系统能力:** SystemCapability.Multimedia.Media.Core 922 923**起始版本:** 9 924 925**参数:** 926 927| 名称 | 描述 | 928| -------- | -------- | 929| format | 指向OH_AVFormat实例的指针。 | 930 931**返回:** 932 933无返回值。 934 935### OH_AVFormat_DumpInfo() 936 937``` 938const char* OH_AVFormat_DumpInfo (struct OH_AVFormat *format) 939``` 940 941**描述** 942 943返回OH_AVFormat中包含的key-value组成的字符串。最大可返回1024字节的字符串,销毁format时释放字符串指针。 944 945**系统能力:** SystemCapability.Multimedia.Media.Core 946 947**起始版本:** 9 948 949**参数:** 950 951| 名称 | 描述 | 952| -------- | -------- | 953| format | 指向OH_AVFormat实例的指针。 | 954 955**返回:** 956 957返回一个由key-value组成的字符串。传入的format为NULL或系统资源不足时返回NULL。 958 959 960### OH_AVFormat_GetBuffer() 961 962``` 963bool OH_AVFormat_GetBuffer (struct OH_AVFormat *format, const char *key, uint8_t ** addr, size_t *size) 964``` 965 966**描述** 967 968从OH_AVFormat中读取指定长度的数据块。 969 970**系统能力:** SystemCapability.Multimedia.Media.Core 971 972**起始版本:** 9 973 974**参数:** 975 976| 名称 | 描述 | 977| -------- | -------- | 978| format | 指向OH_AVFormat实例的指针。 | 979| key | 要读取数据的键。 | 980| addr | 生命周期与format相同,与format一同销毁。 如果调用者需要长时间保持它,必须进行内存拷贝。 | 981| size | 读到数据的长度。 | 982 983**返回:** 984 985返回值为TRUE表示成功,返回值为FALSE表示失败。 986 987可能的失败原因: 988 9891. 输入format为空指针; 9902. 输入format参数结构校验失败; 9913. 输入key为空指针; 9924. 输入addr为空指针; 9935. size为空指针; 9946. 获取的key不存在或者未设置。 995 996 997### OH_AVFormat_GetDoubleValue() 998 999``` 1000bool OH_AVFormat_GetDoubleValue (struct OH_AVFormat *format, const char *key, double *out) 1001``` 1002 1003**描述** 1004 1005从OH_AVFormat的key获取double类型的值。 1006 1007**系统能力:** SystemCapability.Multimedia.Media.Core 1008 1009**起始版本:** 9 1010 1011**参数:** 1012 1013| 名称 | 描述 | 1014| -------- | -------- | 1015| format | 指向OH_AVFormat实例的指针。 | 1016| key | 读取数据的键。 | 1017| out | 读取数据的值。 | 1018 1019**返回:** 1020 1021返回值为TRUE表示成功,返回值为FALSE表示失败。 1022 1023可能的失败原因: 1024 10251. 输入format为空指针; 10262. 输入format参数结构校验失败; 10273. 输入key为空指针; 10284. 输入out为空指针; 10295. 获取的key不存在或者未设置。 1030 1031 1032### OH_AVFormat_GetFloatValue() 1033 1034``` 1035bool OH_AVFormat_GetFloatValue (struct OH_AVFormat *format, const char *key, float *out) 1036``` 1037 1038**描述** 1039 1040从OH_AVFormat的key获取float类型的值。 1041 1042**系统能力:** SystemCapability.Multimedia.Media.Core 1043 1044**起始版本:** 9 1045 1046**参数:** 1047 1048| 名称 | 描述 | 1049| -------- | -------- | 1050| format | 指向OH_AVFormat实例的指针。 | 1051| key | 读取数据的键。 | 1052| out | 读取数据的值。 | 1053 1054**返回:** 1055 1056返回值为TRUE表示成功,返回值为FALSE表示失败。 1057 1058可能的失败原因: 1059 10601. 输入format为空指针; 10612. 输入format参数结构校验失败; 10623. 输入key为空指针; 10634. 输入out为空指针; 10645. 获取的key不存在或者未设置。 1065 1066 1067### OH_AVFormat_GetIntValue() 1068 1069``` 1070bool OH_AVFormat_GetIntValue (struct OH_AVFormat *format, const char *key, int32_t *out) 1071``` 1072 1073**描述** 1074 1075从OH_AVFormat的key获取int类型的值。 1076 1077**系统能力:** SystemCapability.Multimedia.Media.Core 1078 1079**起始版本:** 9 1080 1081**参数:** 1082 1083| 名称 | 描述 | 1084| -------- | -------- | 1085| format | 指向OH_AVFormat实例的指针。 | 1086| key | 读取数据的键。 | 1087| out | 读取数据的值。 | 1088 1089**返回:** 1090 1091返回值为TRUE表示成功,返回值为FALSE表示失败。 1092 1093可能的失败原因: 1094 10951. 输入format为空指针; 10962. 输入format参数结构校验失败; 10973. 输入key为空指针; 10984. 输入out为空指针; 10995. 获取的key不存在或者未设置。 1100 1101 1102### OH_AVFormat_GetLongValue() 1103 1104``` 1105bool OH_AVFormat_GetLongValue (struct OH_AVFormat *format, const char *key, int64_t *out) 1106``` 1107 1108**描述** 1109 1110从OH_AVFormat的key获取long类型的值。 1111 1112**系统能力:** SystemCapability.Multimedia.Media.Core 1113 1114**起始版本:** 9 1115 1116**参数:** 1117 1118| 名称 | 描述 | 1119| -------- | -------- | 1120| format | 指向OH_AVFormat实例的指针。 | 1121| key | 读取数据的键。 | 1122| out | 读取数据的值。 | 1123 1124**返回:** 1125 1126返回值为TRUE表示成功,返回值为FALSE表示失败。 1127 1128可能的失败原因: 1129 11301. 输入format为空指针; 11312. 输入format参数结构校验失败; 11323. 输入key为空指针; 11334. 输入out为空指针; 11345. 获取的key不存在或者未设置。 1135 1136 1137### OH_AVFormat_GetStringValue() 1138 1139``` 1140bool OH_AVFormat_GetStringValue (struct OH_AVFormat *format, const char *key, const char ** out) 1141``` 1142 1143**描述** 1144 1145从OH_AVFormat的key获取string类型的值。 1146 1147**系统能力:** SystemCapability.Multimedia.Media.Core 1148 1149**起始版本:** 9 1150 1151**参数:** 1152 1153| 名称 | 描述 | 1154| -------- | -------- | 1155| format | 指向OH_AVFormat实例的指针。 | 1156| key | 读取数据的键。 | 1157| out | 读取string指针,out数据的生命周期与format内string对应,out最大输出字符串长度为256字节。 如果调用者需要长时间保持它,必须进行拷贝内存。 | 1158 1159**返回:** 1160 1161返回值为TRUE表示成功,返回值为FALSE表示失败。 1162 1163可能的失败原因: 1164 11651. 输入format为空指针; 11662. 输入format参数结构校验失败; 11673. 输入key为空指针; 11684. 输入out为空指针; 11695. malloc出的out字符串资源不足; 11706. 获取的key不存在或者未设置。 1171 1172 1173### OH_AVFormat_SetBuffer() 1174 1175``` 1176bool OH_AVFormat_SetBuffer (struct OH_AVFormat *format, const char *key, const uint8_t *addr, size_t size) 1177``` 1178 1179**描述** 1180 1181将指定长度的数据块写入OH_AVFormat。该接口仅能设置buffer类型的参数,参数类型定义详见[CodecBase](_codec_base.md)。 1182 1183**系统能力:** SystemCapability.Multimedia.Media.Core 1184 1185**起始版本:** 9 1186 1187**参数:** 1188 1189| 名称 | 描述 | 1190| -------- | -------- | 1191| format | 指向OH_AVFormat实例的指针。 | 1192| key | 写入数据的键。 | 1193| addr | 写入数据的地址,生命周期由开发者管理。 | 1194| size | 写入数据的长度,范围为(0, 1)MB。 | 1195 1196**返回:** 1197 1198返回值为TRUE表示成功,返回值为FALSE表示失败。 1199 1200可能的失败原因: 1201 12021. 输入format为空指针; 12032. 输入format参数结构校验失败; 12043. 输入key为空指针; 12054. 输入addr为空指针; 12065. size为0或超过上限,上限为1MB; 12076. 设置的key对应的value类型错误。 1208 1209 1210### OH_AVFormat_SetDoubleValue() 1211 1212``` 1213bool OH_AVFormat_SetDoubleValue (struct OH_AVFormat *format, const char *key, double value) 1214``` 1215 1216**描述** 1217 1218对OH_AVFormat的[key](_codec_base#媒体数据键值对)赋double类型的值。该接口仅能设置double类型的参数,参数类型定义详见[CodecBase](_codec_base.md)。 1219 1220**系统能力:** SystemCapability.Multimedia.Media.Core 1221 1222**起始版本:** 9 1223 1224**参数:** 1225 1226| 名称 | 描述 | 1227| -------- | -------- | 1228| format | 指向OH_AVFormat实例的指针。 | 1229| key | 写入数据的键。 | 1230| value | 写入数据的值。 | 1231 1232**返回:** 1233 1234返回值为TRUE表示成功,返回值为FALSE表示失败。 1235 1236可能的失败原因: 1237 12381. 输入format为空指针; 12392. 输入format参数结构校验失败; 12403. 输入key为空指针; 12414. 设置的key对应的value类型错误。 1242 1243 1244### OH_AVFormat_SetFloatValue() 1245 1246``` 1247bool OH_AVFormat_SetFloatValue (struct OH_AVFormat *format, const char *key, float value) 1248``` 1249 1250**描述** 1251 1252对OH_AVFormat的[key](_codec_base#媒体数据键值对)赋float类型的值。该接口仅能设置float类型的参数,参数类型定义详见[CodecBase](_codec_base.md)。 1253 1254**系统能力:** SystemCapability.Multimedia.Media.Core 1255 1256**起始版本:** 9 1257 1258**参数:** 1259 1260| 名称 | 描述 | 1261| -------- | -------- | 1262| format | 指向OH_AVFormat实例的指针。 | 1263| key | 写入数据的键。 | 1264| value | 写入数据的值。 | 1265 1266**返回:** 1267 1268返回值为TRUE表示成功,返回值为FALSE表示失败。 1269 1270可能的失败原因: 1271 12721. 输入format为空指针; 12732. 输入format参数结构校验失败; 12743. 输入key为空指针; 12754. 设置的key对应的value类型错误。 1276 1277### OH_AVFormat_SetIntValue() 1278 1279``` 1280bool OH_AVFormat_SetIntValue (struct OH_AVFormat *format, const char *key, int32_t value) 1281``` 1282 1283**描述** 1284 1285对OH_AVFormat的[key](_codec_base#媒体数据键值对)赋int类型的值。该接口仅能设置int类型的参数,参数类型定义详见[CodecBase](_codec_base.md)。 1286 1287**系统能力:** SystemCapability.Multimedia.Media.Core 1288 1289**起始版本:** 9 1290 1291**参数:** 1292 1293| 名称 | 描述 | 1294| -------- | -------- | 1295| format | 指向OH_AVFormat实例的指针。 | 1296| key | 写入数据的键。 | 1297| value | 写入数据的值。 | 1298 1299**返回:** 1300 1301返回值为TRUE表示成功,返回值为FALSE表示失败。 1302 1303可能的失败原因: 1304 13051. 输入format为空指针; 13062. 输入format参数结构校验失败; 13073. 输入key为空指针; 13084. 设置的key对应的value类型错误。 1309 1310 1311### OH_AVFormat_SetLongValue() 1312 1313``` 1314bool OH_AVFormat_SetLongValue (struct OH_AVFormat *format, const char *key, int64_t value) 1315``` 1316 1317**描述** 1318 1319对OH_AVFormat的[key](_codec_base#媒体数据键值对)赋long类型的值。该接口仅能设置long类型的参数,参数类型定义详见[CodecBase](_codec_base.md)。 1320 1321**系统能力:** SystemCapability.Multimedia.Media.Core 1322 1323**起始版本:** 9 1324 1325**参数:** 1326 1327| 名称 | 描述 | 1328| -------- | -------- | 1329| format | 指向OH_AVFormat实例的指针。 | 1330| key | 写入数据的键。 | 1331| value | 写入数据的值。 | 1332 1333**返回:** 1334 1335返回值为TRUE表示成功,返回值为FALSE表示失败。 1336 1337可能的失败原因: 1338 13391. 输入format为空指针; 13402. 输入format参数结构校验失败; 13413. 输入key为空指针; 13424. 设置的key对应的value类型错误。 1343 1344 1345### OH_AVFormat_SetStringValue() 1346 1347``` 1348bool OH_AVFormat_SetStringValue (struct OH_AVFormat *format, const char *key, const char *value) 1349``` 1350 1351**描述** 1352 1353对OH_AVFormat的[key](_codec_base#媒体数据键值对)赋string类型的值。该接口仅能设置string类型的参数,参数类型定义详见[CodecBase](_codec_base.md)。 1354 1355**系统能力:** SystemCapability.Multimedia.Media.Core 1356 1357**起始版本:** 9 1358 1359**参数:** 1360 1361| 名称 | 描述 | 1362| -------- | -------- | 1363| format | 指向OH_AVFormat实例的指针。 | 1364| key | 写入数据的键。 | 1365| value | 写入字符串数据(长度超出256字节系统做截断处理)。 | 1366 1367**返回:** 1368 1369返回值为TRUE表示成功,返回值为FALSE表示失败。 1370 1371可能的失败原因: 1372 13731. 输入format为空指针; 13742. 输入format参数结构校验失败; 13753. 输入key为空指针; 13764. 输入value为空指针; 13775. 设置的key对应的value类型错误。 1378 1379 1380### OH_AVMemory_Create() 1381 1382``` 1383OH_AVMemory* OH_AVMemory_Create (int32_t size) 1384``` 1385 1386**描述** 1387 1388创建OH_AVMemory实例的指针。 1389 1390**系统能力:** SystemCapability.Multimedia.Media.Core 1391 1392**起始版本:** 10 1393 1394**废弃版本:** 11 1395 1396**替代接口:**[OH_AVBuffer_Create](#oh_avbuffer_create) 1397 1398**参数:** 1399 1400| 名称 | 描述 | 1401| -------- | -------- | 1402| size | 创建内存的大小,单位字节。 | 1403 1404**返回:** 1405 1406如果创建成功,返回OH_AVMemory实例的指针,如果失败,返回NULL。 使用结束后需要通过OH_AVMemory_Destroy释放内存。 1407 1408 1409### OH_AVMemory_Destroy() 1410 1411``` 1412OH_AVErrCode OH_AVMemory_Destroy (struct OH_AVMemory *mem) 1413``` 1414 1415**描述** 1416 1417释放OH_AVMemory实例指针的资源。 1418 1419**系统能力:** SystemCapability.Multimedia.Media.Core 1420 1421**起始版本:** 10 1422 1423**废弃版本:** 11 1424 1425**替代接口:**[OH_AVBuffer_Destroy](#oh_avbuffer_destroy) 1426 1427**参数:** 1428 1429| 名称 | 描述 | 1430| -------- | -------- | 1431| mem | 指向OH_AVMemory实例的指针。 | 1432 1433**返回:** 1434 1435如果释放成功返回AV_ERR_OK,如果失败返回具体错误码, 参考[OH_AVErrCode](#oh_averrcode-1)。 1436 1437 1438### OH_AVMemory_GetAddr() 1439 1440``` 1441uint8_t* OH_AVMemory_GetAddr (struct OH_AVMemory *mem) 1442``` 1443 1444**描述** 1445 1446获取内存虚拟地址。 1447 1448**系统能力:** SystemCapability.Multimedia.Media.Core 1449 1450**起始版本:** 9 1451 1452**废弃版本:** 11 1453 1454**替代接口:**[OH_AVBuffer_GetAddr](#oh_avbuffer_getaddr) 1455 1456**参数:** 1457 1458| 名称 | 描述 | 1459| -------- | -------- | 1460| mem | 指向OH_AVMemory实例的指针。 | 1461 1462**返回:** 1463 1464如果内存有效,返回内存的虚拟地址;如果内存无效,返回NULL。 1465 1466可能的失败原因: 1467 14681. 输入mem为空指针; 14692. 输入mem参数结构校验失败; 14703. 输入mem中内存为空指针。 1471 1472 1473### OH_AVMemory_GetSize() 1474 1475``` 1476int32_t OH_AVMemory_GetSize (struct OH_AVMemory *mem) 1477``` 1478 1479**描述** 1480 1481获取内存长度。 1482 1483**系统能力:** SystemCapability.Multimedia.Media.Core 1484 1485**起始版本:** 9 1486 1487**废弃版本:** 11 1488 1489**替代接口:**[OH_AVBuffer_GetCapacity](#oh_avbuffer_getcapacity) 1490 1491**参数:** 1492 1493| 名称 | 描述 | 1494| -------- | -------- | 1495| mem | 指向OH_AVMemory实例的指针。 | 1496 1497**返回:** 1498 1499如果内存有效,返回内存长度;如果内存无效,返回-1。 1500 1501可能的失败原因: 1502 15031. 输入mem为空指针; 15042. 输入mem参数结构校验失败; 15053. 输入mem中内存为空指针。 1506