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