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/>AV_ERR_IO_CANNOT_FIND_HOST = 5411001,<br/>AV_ERR_IO_CONNECTION_TIMEOUT = 5411002,<br/>AV_ERR_IO_NETWORK_ABNORMAL = 5411003,<br/>AV_ERR_IO_NETWORK_UNAVAILABLE = 5411004,<br/>AV_ERR_IO_NO_PERMISSION = 5411005,<br/>AV_ERR_IO_NETWORK_ACCESS_DENIED = 5411006,<br/>AV_ERR_IO_RESOURCE_NOT_FOUND = 5411007,<br/>AV_ERR_IO_SSL_CLIENT_CERT_NEEDED = 5411008,<br/>AV_ERR_IO_SSL_CONNECT_FAIL = 5411009,<br/>AV_ERR_IO_SSL_SERVER_CERT_UNTRUSTED = 5411010,<br/>AV_ERR_IO_UNSUPPORTED_REQUEST = 5411011,<br/>AV_ERR_STREAM_CHANGED = 5410005,<br/>AV_ERR_TRY_AGAIN_LATER = 5410006<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/>AV_PIXEL_FORMAT_RGBA1010102 = 6<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_SetIntBuffer](#oh_avformat_setintbuffer) (struct [OH_AVFormat](#oh_avformat) \*format, const char \*key, const int32_t \*addr, size_t size) | 将指定长度int32_t类型的数据块写入OH_AVFormat。 | 92| bool [OH_AVFormat_GetIntValue](#oh_avformat_getintvalue) (struct [OH_AVFormat](#oh_avformat) \*format, const char \*key, int32_t \*out) | 从OH_AVFormat的key获取int类型的值。 | 93| bool [OH_AVFormat_GetLongValue](#oh_avformat_getlongvalue) (struct [OH_AVFormat](#oh_avformat) \*format, const char \*key, int64_t \*out) | 从OH_AVFormat的key获取long类型的值。 | 94| bool [OH_AVFormat_GetFloatValue](#oh_avformat_getfloatvalue) (struct [OH_AVFormat](#oh_avformat) \*format, const char \*key, float \*out) | 从OH_AVFormat的key获取float类型的值。 | 95| bool [OH_AVFormat_GetDoubleValue](#oh_avformat_getdoublevalue) (struct [OH_AVFormat](#oh_avformat) \*format, const char \*key, double \*out) | 从OH_AVFormat的key获取double类型的值。 | 96| bool [OH_AVFormat_GetStringValue](#oh_avformat_getstringvalue) (struct [OH_AVFormat](#oh_avformat) \*format, const char \*key, const char \*\*out) | 从OH_AVFormat的key获取string类型的值。 | 97| bool [OH_AVFormat_GetBuffer](#oh_avformat_getbuffer) (struct [OH_AVFormat](#oh_avformat) \*format, const char \*key, uint8_t \*\*addr, size_t \*size) | 从OH_AVFormat中读取指定长度的数据块。 | 98| bool [OH_AVFormat_GetIntBuffer](#oh_avformat_getintbuffer) (struct [OH_AVFormat](#oh_avformat) \*format, const char \*key, int32_t \*\*addr, size_t \*size) | 从OH_AVFormat中读取一个int32_t数据的数组。 | 99| const char \* [OH_AVFormat_DumpInfo](#oh_avformat_dumpinfo) (struct [OH_AVFormat](#oh_avformat) \*format) | 返回OH_AVFormat中包含的key-value组成的字符串。 | 100| [OH_AVMemory](#oh_avmemory) \* [OH_AVMemory_Create](#oh_avmemory_create) (int32_t size) | 创建OH_AVMemory实例的指针。(API11废弃) | 101| uint8_t \* [OH_AVMemory_GetAddr](#oh_avmemory_getaddr) (struct [OH_AVMemory](#oh_avmemory) \*mem) | 获取内存虚拟地址。 (API11废弃)| 102| int32_t [OH_AVMemory_GetSize](#oh_avmemory_getsize) (struct [OH_AVMemory](#oh_avmemory) \*mem) | 获取内存长度。(API11废弃) | 103| [OH_AVErrCode](#oh_averrcode) [OH_AVMemory_Destroy](#oh_avmemory_destroy) (struct [OH_AVMemory](#oh_avmemory) \*mem) | 释放OH_AVMemory实例指针的资源。(API11废弃) | 104 105 106## 类型定义说明 107 108 109### OH_AmbAttributeSet 110 111``` 112typedef enum OH_AmbAttributeSet OH_AmbAttributeSet 113``` 114 115**描述** 116 117高保真立体声混响设置。 118 119用int64_t整数来表示高保真立体声混响属性。 120 121**系统能力:** SystemCapability.Multimedia.Media.Core 122 123**起始版本:** 11 124 125 126### OH_AudioChannelLayout 127 128``` 129typedef enum OH_AudioChannelLayout OH_AudioChannelLayout 130``` 131 132**描述** 133 134音频声道布局。 135 136用int64_t整数来表示在录制或播放时扬声器的外观和顺序。 137 138**系统能力:** SystemCapability.Multimedia.Media.Core 139 140**起始版本:** 11 141 142 143### OH_AudioChannelSet 144 145``` 146typedef enum OH_AudioChannelSet OH_AudioChannelSet 147``` 148 149**描述** 150 151音频声道集合。 152 153将每一个声道映射为int64_t的变量。 154 155**系统能力:** SystemCapability.Multimedia.Media.Core 156 157**起始版本:** 11 158 159 160### OH_AVBuffer 161 162``` 163typedef struct OH_AVBuffer OH_AVBuffer 164``` 165**描述** 166 167为媒体内存接口定义native层对象。 168 169**起始版本:** 11 170 171 172### OH_AVCodecBufferAttr 173 174``` 175typedef struct OH_AVCodecBufferAttr OH_AVCodecBufferAttr 176``` 177 178**描述** 179 180定义OH_AVCodec的缓冲区描述信息。 181 182**系统能力:** SystemCapability.Multimedia.Media.Core 183 184**起始版本:** 9 185 186 187### OH_AVCodecBufferFlags 188 189``` 190typedef enum OH_AVCodecBufferFlags OH_AVCodecBufferFlags 191``` 192 193**描述** 194 195枚举OH_AVCodec缓冲区标记的类别。 196 197**系统能力:** SystemCapability.Multimedia.Media.Core 198 199**起始版本:** 9 200 201 202### OH_AVErrCode 203 204``` 205typedef enum OH_AVErrCode OH_AVErrCode 206``` 207 208**描述** 209 210媒体系统错误码。 211 212**系统能力:** SystemCapability.Multimedia.Media.Core 213 214**起始版本:** 9 215 216 217### OH_AVFormat 218 219``` 220typedef struct OH_AVFormat OH_AVFormat 221``` 222**描述** 223 224为OH_AVFormat接口定义native层对象。 225 226**起始版本:** 9 227 228 229### OH_AVMemory 230 231``` 232typedef struct OH_AVMemory OH_AVMemory 233``` 234**描述** 235 236为音视频内存接口定义native层对象。 237 238**起始版本:** 9 239 240 241### OH_AVPixelFormat 242 243``` 244typedef enum OH_AVPixelFormat OH_AVPixelFormat 245``` 246 247**描述** 248 249视频像素格式的枚举类。 250 251**系统能力:** SystemCapability.Multimedia.Media.Core 252 253**起始版本:** 9 254 255 256### OH_NativeBuffer 257 258``` 259typedef struct OH_NativeBuffer OH_NativeBuffer 260``` 261**描述** 262 263为图形内存接口定义native层对象。 264 265**起始版本:** 11 266 267 268### OH_Core_HdrType 269 270``` 271typedef enum OH_Core_HdrType OH_Core_HdrType 272``` 273 274**描述** 275 276HDR类型枚举。 277 278**系统能力:** SystemCapability.Multimedia.Media.Core 279 280**起始版本:** 18 281 282 283## 枚举类型说明 284 285 286### OH_AmbAttributeSet 287 288``` 289enum OH_AmbAttributeSet 290``` 291 292**描述** 293 294高保真立体声混响设置。 295 296用int64_t整数来表示高保真立体声混响属性。 297 298**系统能力:** SystemCapability.Multimedia.Media.Core 299 300**起始版本:** 11 301 302| 枚举值 | 描述 | 303| -------- | -------- | 304| AMB_ORD_1 | 一阶高保真立体声混响 | 305| AMB_ORD_2 | 二阶高保真立体声混响 | 306| AMB_ORD_3 | 三阶高保真立体声混响 | 307| AMB_COM_ACN | ACN通道排序的高保真立体声混响 | 308| AMB_COM_FUMA | FUMA通道排序的高保真立体声混响 | 309| AMB_NOR_N3D | N3D归一化的高保真立体声混响 | 310| AMB_NOR_SN3D | SN3D归一化的高保真立体声混响 | 311| AMB_MODE | 高保真立体声混响的声道布局 | 312 313 314### OH_AudioChannelLayout 315 316``` 317enum OH_AudioChannelLayout 318``` 319 320**描述** 321 322音频声道布局。 323 324用int64_t整数来表示在录制或播放时扬声器的外观和顺序。 325 326**系统能力:** SystemCapability.Multimedia.Media.Core 327 328**起始版本:** 11 329 330| 枚举值 | 描述 | 331| -------- | -------- | 332| CH_LAYOUT_UNKNOWN | 未知声道布局 | 333| CH_LAYOUT_MONO | 单声道布局, 共1个声道 | 334| CH_LAYOUT_STEREO | 立体声布局,共2个声道 | 335| CH_LAYOUT_STEREO_DOWNMIX | 立体声下混布局,共2个声道 | 336| CH_LAYOUT_2POINT1 | 2.1布局,共3个声道 | 337| CH_LAYOUT_3POINT0 | 3.0布局,共3个声道 | 338| CH_LAYOUT_SURROUND | 环绕布局,共3个声道 | 339| CH_LAYOUT_3POINT1 | 3.1布局,共4个声道 | 340| CH_LAYOUT_4POINT0 | 4.0布局,共4个声道 | 341| CH_LAYOUT_QUAD_SIDE | QUAD_SIDE布局,共4个声道 | 342| CH_LAYOUT_QUAD | QUAD布局,共4个声道 | 343| CH_LAYOUT_2POINT0POINT2 | 2.0.2布局,共4个声道 | 344| CH_LAYOUT_AMB_ORDER1_ACN_N3D | ACN_N3D(根据ITU标准)的一阶FOA布局,共4个声道 | 345| CH_LAYOUT_AMB_ORDER1_ACN_SN3D | ACN_SN3D(根据ITU标准)的一阶FOA布局,共4个声道 | 346| CH_LAYOUT_AMB_ORDER1_FUMA | FUMA(根据ITU标准)的一阶FOA布局,共4个声道 | 347| CH_LAYOUT_4POINT1 | 4.1布局,共5个声道 | 348| CH_LAYOUT_5POINT0 | 5.0布局,共5个声道 | 349| CH_LAYOUT_5POINT0_BACK | 5.0-后置布局,共5个声道 | 350| CH_LAYOUT_2POINT1POINT2 | 2.1.2布局,共5个声道 | 351| CH_LAYOUT_3POINT0POINT2 | 3.0.2布局,共5个声道 | 352| CH_LAYOUT_5POINT1 | 5.1布局,共6个声道 | 353| CH_LAYOUT_5POINT1_BACK | 5.1-后置布局,共6个声道 | 354| CH_LAYOUT_6POINT0 | 6.0布局,共6个声道 | 355| CH_LAYOUT_3POINT1POINT2 | 3.1.2布局,共6个声道 | 356| CH_LAYOUT_6POINT0_FRONT | 6.0-Front布局,共6个声道 | 357| CH_LAYOUT_HEXAGONAL | HEXAGONAL布局,共6个声道 | 358| CH_LAYOUT_6POINT1 | 6.1布局,共7个声道 | 359| CH_LAYOUT_6POINT1_BACK | 6.1-后置布局,共7个声道 | 360| CH_LAYOUT_6POINT1_FRONT | 6.1-前置布局,共7个声道 | 361| CH_LAYOUT_7POINT0 | 7.0布局,共7个声道 | 362| CH_LAYOUT_7POINT0_FRONT | 7.0-前置布局,共7个声道 | 363| CH_LAYOUT_7POINT1 | 7.1布局,共8个声道 | 364| CH_LAYOUT_OCTAGONAL | OCTAGONAL布局,共8个声道 | 365| CH_LAYOUT_5POINT1POINT2 | 5.1.2布局,共8个声道 | 366| CH_LAYOUT_7POINT1_WIDE | 7.1-宽布局,共8个声道 | 367| CH_LAYOUT_7POINT1_WIDE_BACK | 7.1-后置宽布局,共8个声道 | 368| CH_LAYOUT_AMB_ORDER2_ACN_N3D | ACN_N3D(根据ITU标准)的二阶HOA布局,共9个声道 | 369| CH_LAYOUT_AMB_ORDER2_ACN_SN3D | ACN_SN3D(根据ITU标准)的二阶HOA布局,共9个声道 | 370| CH_LAYOUT_AMB_ORDER2_FUMA | FUMA(根据ITU标准)的二阶HOA布局,共9个声道 | 371| CH_LAYOUT_5POINT1POINT4 | 5.1.4布局,共10个声道 | 372| CH_LAYOUT_7POINT1POINT2 | 7.1.2布局,共10个声道 | 373| CH_LAYOUT_7POINT1POINT4 | 7.1.4布局,共12个声道 | 374| CH_LAYOUT_10POINT2 | 10.2布局,共12个声道 | 375| CH_LAYOUT_9POINT1POINT4 | 9.1.4布局,共14个声道 | 376| CH_LAYOUT_9POINT1POINT6 | 9.1.6布局,共16个声道 | 377| CH_LAYOUT_HEXADECAGONAL | HEXADECAGONAL布局,共16个声道 | 378| CH_LAYOUT_AMB_ORDER3_ACN_N3D | ACN_N3D(根据ITU标准)的三阶HOA布局,共16个声道 | 379| CH_LAYOUT_AMB_ORDER3_ACN_SN3D | ACN_SN3D(根据ITU标准)的三阶HOA布局,共16个声道 | 380| CH_LAYOUT_AMB_ORDER3_FUMA | FUMA(根据ITU标准)的三阶HOA布局,共16个声道 | 381| CH_LAYOUT_22POINT2 | 22.2布局,共24个声道 | 382 383 384### OH_AudioChannelSet 385 386``` 387enum OH_AudioChannelSet 388``` 389 390**描述** 391 392音频声道集合。 393 394将每一个声道映射为int64_t的变量。 395 396**系统能力:** SystemCapability.Multimedia.Media.Core 397 398**起始版本:** 11 399 400| 枚举值 | 描述 | 401| -------- | -------- | 402| CH_SET_FRONT_LEFT | 左前声道 | 403| CH_SET_FRONT_RIGHT | 右前声道 | 404| CH_SET_FRONT_CENTER | 中前声道 | 405| CH_SET_LOW_FREQUENCY | 低频声道 | 406| CH_SET_BACK_LEFT | 左后声道 | 407| CH_SET_BACK_RIGHT | 右后声道 | 408| CH_SET_FRONT_LEFT_OF_CENTER | 左前中置声道 | 409| CH_SET_FRONT_RIGHT_OF_CENTER | 右前中置声道 | 410| CH_SET_BACK_CENTER | 后方中置声道 | 411| CH_SET_SIDE_LEFT | 左侧声道 | 412| CH_SET_SIDE_RIGHT | 右侧声道 | 413| CH_SET_TOP_CENTER | 上方中置声道 | 414| CH_SET_TOP_FRONT_LEFT | 上方左前声道 | 415| CH_SET_TOP_FRONT_CENTER | 上方中前声道 | 416| CH_SET_TOP_FRONT_RIGHT | 上方右前声道 | 417| CH_SET_TOP_BACK_LEFT | 上方左后声道 | 418| CH_SET_TOP_BACK_CENTER | 上方中后声道 | 419| CH_SET_TOP_BACK_RIGHT | 上方右后声道 | 420| CH_SET_STEREO_LEFT | 立体声左声道 | 421| CH_SET_STEREO_RIGHT | 立体声右声道 | 422| CH_SET_WIDE_LEFT | 宽左声道 | 423| CH_SET_WIDE_RIGHT | 宽右声道 | 424| CH_SET_SURROUND_DIRECT_LEFT | 左环绕声道 | 425| CH_SET_SURROUND_DIRECT_RIGHT | 右环绕声道 | 426| CH_SET_LOW_FREQUENCY_2 | 低频声道2 | 427| CH_SET_TOP_SIDE_LEFT | 上方左侧声道 | 428| CH_SET_TOP_SIDE_RIGHT | 上方右侧声道 | 429| CH_SET_BOTTOM_FRONT_CENTER | 下方中前声道 | 430| CH_SET_BOTTOM_FRONT_LEFT | 下方左前声道 | 431| CH_SET_BOTTOM_FRONT_RIGHT | 下方右前声道 | 432 433 434### OH_AVCodecBufferFlags 435 436``` 437enum OH_AVCodecBufferFlags 438``` 439 440**描述** 441 442枚举OH_AVCodec缓冲区标记的类别。 443 444**系统能力:** SystemCapability.Multimedia.Media.Core 445 446**起始版本:** 9 447 448| 枚举值 | 描述 | 449| -------- | -------- | 450| AVCODEC_BUFFER_FLAGS_NONE | 表示为普通帧。 | 451| AVCODEC_BUFFER_FLAGS_EOS | 表示缓冲区是流结束帧。 | 452| AVCODEC_BUFFER_FLAGS_SYNC_FRAME | 表示缓冲区包含关键帧。 | 453| AVCODEC_BUFFER_FLAGS_INCOMPLETE_FRAME | 表示缓冲区中的数据只是帧的一部分。 | 454| AVCODEC_BUFFER_FLAGS_CODEC_DATA | 表示缓冲区包含编解码特定数据。 | 455| AVCODEC_BUFFER_FLAGS_DISCARD | 表示缓冲区被解码依赖,解码之后的数据可丢弃。<br/>**起始版本:** 12 | 456| AVCODEC_BUFFER_FLAGS_DISPOSABLE | 表示缓冲区不被参考可直接丢弃。<br/>**起始版本:** 12 | 457 458 459### OH_AVErrCode 460 461``` 462enum OH_AVErrCode 463``` 464 465**描述** 466 467媒体系统错误码。 468 469**系统能力:** SystemCapability.Multimedia.Media.Core 470 471**起始版本:** 9 472 473| 枚举值 | 描述 | 474| -------- | -------- | 475| AV_ERR_OK | 操作成功。 | 476| AV_ERR_NO_MEMORY | 无内存。 | 477| AV_ERR_OPERATE_NOT_PERMIT | 操作不允许。 | 478| AV_ERR_INVALID_VAL | 无效值。 | 479| AV_ERR_IO | IO错误。 | 480| AV_ERR_TIMEOUT | 超时错误。 | 481| AV_ERR_UNKNOWN | 未知错误。 | 482| AV_ERR_SERVICE_DIED | 服务死亡。 | 483| AV_ERR_INVALID_STATE | 当前状态不支持此操作。 | 484| AV_ERR_UNSUPPORT | 未支持的功能。 | 485| AV_ERR_UNSUPPORTED_FORMAT | 不支持的格式。<br/>**起始版本:** 18 | 486| AV_ERR_EXTEND_START | 扩展错误码初始值。 | 487| AV_ERR_DRM_BASE | DRM起始错误码。<br/>**起始版本:** 12 | 488| AV_ERR_DRM_DECRYPT_FAILED | DRM解密失败。<br/>**起始版本:** 12 | 489| AV_ERR_VIDEO_BASE | 视频起始错误码。<br/>**起始版本:** 12 | 490| AV_ERR_VIDEO_UNSUPPORTED_COLOR_SPACE_CONVERSION | 视频不支持色彩空间转换。<br/>**起始版本:** 12 | 491| AV_ERR_IO_CANNOT_FIND_HOST | 无法找到主机,可能服务器地址错误。<br/>**起始版本:** 14 | 492| AV_ERR_IO_CONNECTION_TIMEOUT | 网络连接超时。<br/>**起始版本:** 14 | 493| AV_ERR_IO_NETWORK_ABNORMAL | 网络异常导致连接失败。<br/>**起始版本:** 14 | 494| AV_ERR_IO_NETWORK_UNAVAILABLE | 网络不可用导致连接失败。<br/>**起始版本:** 14 | 495| AV_ERR_IO_NO_PERMISSION | 无网络访问权限。<br/>**起始版本:** 14 | 496| AV_ERR_IO_NETWORK_ACCESS_DENIED | 客户端请求参数错误或超出处理能力。<br/>**起始版本:** 14 | 497| AV_ERR_IO_RESOURCE_NOT_FOUND | 无法找到可用网络资源。<br/>**起始版本:** 14 | 498| AV_ERR_IO_SSL_CLIENT_CERT_NEEDED | 由于未携带客户端证书、证书无效或过期导致服务器验证失败。<br/>**起始版本:** 14 | 499| AV_ERR_IO_SSL_CONNECT_FAIL | 由于未携带服务器证书、证书无效或过期导致客户端验证失败。<br/>**起始版本:** 14 | 500| AV_ERR_IO_SSL_SERVER_CERT_UNTRUSTED | SSL服务器证书不受信任。<br/>**起始版本:** 14 | 501| AV_ERR_IO_UNSUPPORTED_REQUEST | 网络协议不支持该请求。<br/>**起始版本:** 14 | 502| AV_ERR_STREAM_CHANGED | 同步模式下流格式发生变更。可以通过调用接口[OH_VideoEncoder_GetOutputDescription](_video_encoder.md#oh_videoencoder_getoutputdescription)(视频编码)、[OH_VideoDecoder_GetOutputDescription](_video_decoder.md#oh_videodecoder_getoutputdescription)(视频解码)、[OH_AudioCodec_GetOutputDescription](_audio_codec.md#oh_audiocodec_getoutputdescription)(音频编解码)来获取更新后流的配置信息。<br/>**起始版本:** 20 | 503| AV_ERR_TRY_AGAIN_LATER | 同步模式下临时缓冲区查询失败,建议等待短暂间隔后重试操作。<br/>**起始版本:** 20 | 504 505### OH_AVPixelFormat 506 507``` 508enum OH_AVPixelFormat 509``` 510 511**描述** 512 513视频像素格式的枚举类。 514 515**系统能力:** SystemCapability.Multimedia.Media.Core 516 517**起始版本:** 9 518 519| 枚举值 | 描述 | 520| -------- | -------- | 521| AV_PIXEL_FORMAT_YUVI420 | yuv 420 planar。 | 522| AV_PIXEL_FORMAT_NV12 | NV12. yuv 420 semiplanar。 | 523| AV_PIXEL_FORMAT_NV21 | NV21. yvu 420 semiplanar。 | 524| AV_PIXEL_FORMAT_SURFACE_FORMAT | 像素格式从surface获取。只作用于Surface模式,Buffer模式不生效。 | 525| AV_PIXEL_FORMAT_RGBA | RGBA8888。 | 526| AV_PIXEL_FORMAT_RGBA1010102 | RGBA1010102。<br/>**起始版本:** 20 | 527 528 529### OH_Core_HdrType 530 531``` 532enum OH_Core_HdrType 533``` 534 535**描述** 536 537HDR类型枚举。 538 539**系统能力:** SystemCapability.Multimedia.Media.Core 540 541**起始版本:** 18 542 543| 枚举值 | 描述 | 544| -------- | -------- | 545| OH_CORE_HDR_TYPE_NONE | 此选项用于标记非HDR类型。 | 546| OH_CORE_HDR_TYPE_VIVID | 此选项用于标记HDR Vivid类型。 | 547 548 549## 函数说明 550 551 552### OH_AVBuffer_Create() 553 554``` 555OH_AVBuffer* OH_AVBuffer_Create (int32_t capacity) 556``` 557 558**描述** 559 560创建OH_AVBuffer实例。 需要注意的是,返回值指向的创建OH_AVBuffer的实例需要开发者主动调用接口释放,请参阅[OH_AVBuffer_Destroy](#oh_avbuffer_destroy)。 561 562**系统能力:** SystemCapability.Multimedia.Media.Core 563 564**起始版本:** 11 565 566**参数:** 567 568| 名称 | 描述 | 569| -------- | -------- | 570| capacity | 创建内存的大小,单位字节。 | 571 572**返回:** 573 574如果创建成功,则返回OH_AVBuffer实例的指针,如果失败,则返回NULL。 575 576可能失败的原因: 577 5781. capacity <=0; 5792. 出现内部错误,系统没有资源等。 580 581 582### OH_AVBuffer_Destroy() 583 584``` 585OH_AVErrCode OH_AVBuffer_Destroy (OH_AVBuffer *buffer) 586``` 587 588**描述** 589 590释放OH_AVBuffer实例指针的资源,同一个buffer不允许重复销毁。 591 592**系统能力:** SystemCapability.Multimedia.Media.Core 593 594**起始版本:** 11 595 596**参数:** 597 598| 名称 | 描述 | 599| -------- | -------- | 600| buffer | 指向OH_AVBuffer实例的指针。 | 601 602**返回:** 603 604返回函数结果: 605 606AV_ERR_OK:操作成功。 607 608AV_ERR_INVALID_VAL:输入的buffer为空指针或者buffer结构校验失败。 609 610AV_ERR_OPERATE_NOT_PERMIT:输入的buffer不是用户创建的。 611 612 613### OH_AVBuffer_GetAddr() 614 615``` 616uint8_t* OH_AVBuffer_GetAddr (OH_AVBuffer *buffer) 617``` 618 619**描述** 620 621获取数据缓冲区的虚拟地址。 622 623不同场景下,对是否可以获取虚拟地址的支持情况不同,请见表格: 624 625**编码:** 626| 模式 | 填充数据的方式 | 是否可以获取虚拟地址 | 627| --------------- | -------- | -------- | 628| Surface模式 | OnNeedInputBuffer输入 | × | 629| Surface模式 | OnNewOutputBuffer输出 | √ | 630| Buffer模式 | OnNeedInputBuffer输入 | √ | 631| Buffer模式 | OnNewOutputBuffer输出 | √ | 632 633**解码:** 634| 模式 | 填充数据的方式 | 是否可以获取虚拟地址 | 635| --------------- | -------- | -------- | 636| Surface模式 | OnNeedInputBuffer输入 | √ | 637| Surface模式 | OnNewOutputBuffer输出 | × | 638| Buffer模式 | OnNeedInputBuffer输入 | √ | 639| Buffer模式 | OnNewOutputBuffer输出 | √ | 640 641**系统能力:** SystemCapability.Multimedia.Media.Core 642 643**起始版本:** 11 644 645**参数:** 646 647| 名称 | 描述 | 648| -------- | -------- | 649| buffer | 指向OH_AVBuffer实例的指针。 | 650 651**返回:** 652 653如果成功,则返回数据缓冲区的虚拟地址,如果失败,则返回NULL。 654 655可能失败的原因: 656 6571. 输入的buffer为空指针; 6582. OH_AVBuffer结构校验失败; 6593. 出现内部错误。 660 661 662### OH_AVBuffer_GetBufferAttr() 663 664``` 665OH_AVErrCode OH_AVBuffer_GetBufferAttr (OH_AVBuffer *buffer, OH_AVCodecBufferAttr *attr) 666``` 667 668**描述** 669 670获取数据缓冲区的pts、size、offset、flags高频属性参数。 671 672**系统能力:** SystemCapability.Multimedia.Media.Core 673 674**起始版本:** 11 675 676**参数:** 677 678| 名称 | 描述 | 679| -------- | -------- | 680| buffer | 指向OH_AVBuffer实例的指针。 | 681| attr | 指向[OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md)实例的指针。 | 682 683**返回:** 684 685返回函数结果: 686 687AV_ERR_OK:操作成功。 688 689AV_ERR_INVALID_VAL: 690 691 可能的原因: 692 1. 输入的buffer或attr为空指针; 693 2. buffer结构校验失败。 694 695 696### OH_AVBuffer_GetCapacity() 697 698``` 699int32_t OH_AVBuffer_GetCapacity (OH_AVBuffer *buffer) 700``` 701 702**描述** 703 704获取数据缓冲区的容量(字节数)。 705 706**系统能力:** SystemCapability.Multimedia.Media.Core 707 708**起始版本:** 11 709 710**参数:** 711 712| 名称 | 描述 | 713| -------- | -------- | 714| buffer | 指向OH_AVBuffer实例的指针。 | 715 716**返回:** 717 718如果成功,则返回数据缓冲区的容量,如果失败,则返回-1。 719 720可能失败的原因: 721 7221. 输入的buffer为空指针; 7232. OH_AVBuffer结构校验失败; 7243. 出现内部错误。 725 726 727### OH_AVBuffer_GetNativeBuffer() 728 729``` 730OH_NativeBuffer* OH_AVBuffer_GetNativeBuffer (OH_AVBuffer *buffer) 731``` 732 733**描述** 734 735获取OH_NativeBuffer实例的指针。 需要注意的是,返回值指向的创建OH_NativeBuffer的实例需要开发者主动调用接口释放,请参阅[OH_NativeBuffer_Unreference](../apis-arkgraphics2d/capi-native-buffer-h.md#oh_nativebuffer_unreference)。 736 737**系统能力:** SystemCapability.Multimedia.Media.Core 738 739**起始版本:** 11 740 741**参数:** 742 743| 名称 | 描述 | 744| -------- | -------- | 745| buffer | 指向OH_AVBuffer实例的指针。 | 746 747**返回:** 748 749如果成功,则返回OH_NativeBuffer实例的指针,如果失败,则返回NULL。 750 751可能失败的原因: 752 7531. 输入的buffer为空指针; 7542. OH_AVBuffer结构校验失败; 7553. 出现内部错误。 756 757 758### OH_AVBuffer_GetParameter() 759 760``` 761OH_AVFormat* OH_AVBuffer_GetParameter (OH_AVBuffer *buffer) 762``` 763 764**描述** 765 766获取除基础属性外的其他参数,信息在OH_AVFormat中承载。 需要注意的是,返回值指向的创建OH_AVFormat的实例需要开发者主动释放,请参阅[OH_AVFormat_Destroy](#oh_avformat_destroy)。 767 768**系统能力:** SystemCapability.Multimedia.Media.Core 769 770**起始版本:** 11 771 772**参数:** 773 774| 名称 | 描述 | 775| -------- | -------- | 776| buffer | 指向OH_AVBuffer实例的指针。 | 777 778**返回:** 779 780如果成功,则返回OH_AVFormat实例的指针,如果失败,则返回NULL。 781 782可能失败的原因: 783 7841. 输入的buffer为空指针; 7852. 输入buffer的meta为空指针; 7863. buffer结构校验失败。 787 788 789### OH_AVBuffer_SetBufferAttr() 790 791``` 792OH_AVErrCode OH_AVBuffer_SetBufferAttr (OH_AVBuffer *buffer, const OH_AVCodecBufferAttr *attr) 793``` 794 795**描述** 796 797设置数据缓冲区的pts、size、offset、flags高频属性参数。 798 799**系统能力:** SystemCapability.Multimedia.Media.Core 800 801**起始版本:** 11 802 803**参数:** 804 805| 名称 | 描述 | 806| -------- | -------- | 807| buffer | 指向OH_AVBuffer实例的指针。 | 808| attr | 指向[OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md)实例的指针。 | 809 810**返回:** 811 812返回函数结果: 813 814AV_ERR_OK:操作成功。 815 816AV_ERR_INVALID_VAL: 817 818 可能的原因: 819 1. 输入的buffer或attr为空指针; 820 2. buffer结构校验失败; 821 3. 输入buffer中内存的size或offset是无效值。 822 823 824### OH_AVBuffer_SetParameter() 825 826``` 827OH_AVErrCode OH_AVBuffer_SetParameter (OH_AVBuffer *buffer, const OH_AVFormat *format) 828``` 829 830**描述** 831 832设置除基础属性外的其他参数,信息在OH_AVFormat中承载。 833 834**系统能力:** SystemCapability.Multimedia.Media.Core 835 836**起始版本:** 11 837 838**参数:** 839 840| 名称 | 描述 | 841| -------- | -------- | 842| buffer | 指向OH_AVBuffer实例的指针。 | 843| format | 指向OH_AVFormat实例的指针。 | 844 845**返回:** 846 847返回函数结果: 848 849AV_ERR_OK:操作成功。 850 851AV_ERR_INVALID_VAL: 852 853 可能的原因: 854 1. 输入的buffer或format为空指针; 855 2. 输入buffer的meta为空指针; 856 3. buffer结构校验失败。 857 858 859### OH_AVFormat_Copy() 860 861``` 862bool OH_AVFormat_Copy (struct OH_AVFormat *to, struct OH_AVFormat *from) 863``` 864 865**描述** 866 867复制OH_AVFormat实例。 868 869**系统能力:** SystemCapability.Multimedia.Media.Core 870 871**起始版本:** 9 872 873**参数:** 874 875| 名称 | 描述 | 876| -------- | -------- | 877| to | OH_AVFormat实例,用于接收数据。 | 878| from | 指向复制数据的OH_AVFormat实例的指针。 | 879 880**返回:** 881 882返回值为TRUE表示成功,返回值为FALSE表示失败。 883 884可能的失败原因: 885 8861. 输入参数为空指针; 8872. 输入的OH_AVFormat参数结构校验失败。 888 889 890### OH_AVFormat_Create() 891 892``` 893struct OH_AVFormat* OH_AVFormat_Create (void) 894``` 895 896**描述** 897 898创建OH_AVFormat实例,用于读写数据。 899 900**系统能力:** SystemCapability.Multimedia.Media.Core 901 902**起始版本:** 9 903 904**返回:** 905 906返回指向OH_AVFormat实例的指针。系统资源不足时返回NULL。 907 908 909### OH_AVFormat_CreateAudioFormat() 910 911``` 912struct OH_AVFormat* OH_AVFormat_CreateAudioFormat (const char *mimeType, int32_t sampleRate, int32_t channelCount) 913``` 914 915**描述** 916 917创建音频OH_AVFormat实例指针并预设置指定参数,用于读写数据。 918 919**系统能力:** SystemCapability.Multimedia.Media.Core 920 921**起始版本:** 10 922 923**参数:** 924 925| 名称 | 描述 | 926| -------- | -------- | 927| mimeType | MIME类型描述字符串,请参阅[AVCODEC_MIMETYPE](_codec_base.md#变量)。 | 928| sampleRate | 采样率,单位Hz。 | 929| channelCount | 声道个数,如1为单声道,2为双声道。 | 930 931**返回:** 932 933返回指向OH_AVFormat实例的指针。传入的mimeType为NULL或系统资源不足时返回NULL。 934 935 936### OH_AVFormat_CreateVideoFormat() 937 938``` 939struct OH_AVFormat* OH_AVFormat_CreateVideoFormat (const char *mimeType, int32_t width, int32_t height) 940``` 941 942**描述** 943 944创建视频OH_AVFormat实例指针并预设置指定参数,用于读写数据。 945 946**系统能力:** SystemCapability.Multimedia.Media.Core 947 948**起始版本:** 10 949 950**参数:** 951 952| 名称 | 描述 | 953| -------- | -------- | 954| mimeType | MIME类型描述字符串,请参阅[AVCODEC_MIMETYPE](_codec_base.md#变量)。 | 955| width | 图像的宽度,单位为pixel。 | 956| height | 图像的高度,单位为pixel。 | 957 958**返回:** 959 960返回指向OH_AVFormat实例的指针。传入的mimeType为NULL或系统资源不足时返回NULL。 961 962 963### OH_AVFormat_Destroy() 964 965``` 966void OH_AVFormat_Destroy (struct OH_AVFormat *format) 967``` 968 969**描述** 970 971销毁OH_AVFormat实例,不允许重复销毁。 972 973**系统能力:** SystemCapability.Multimedia.Media.Core 974 975**起始版本:** 9 976 977**参数:** 978 979| 名称 | 描述 | 980| -------- | -------- | 981| format | 指向OH_AVFormat实例的指针。 | 982 983**返回:** 984 985无返回值。 986 987### OH_AVFormat_DumpInfo() 988 989``` 990const char* OH_AVFormat_DumpInfo (struct OH_AVFormat *format) 991``` 992 993**描述** 994 995返回OH_AVFormat中包含的key-value组成的字符串。最大可返回1024字节的字符串,销毁format时释放字符串指针。 996 997**系统能力:** SystemCapability.Multimedia.Media.Core 998 999**起始版本:** 9 1000 1001**参数:** 1002 1003| 名称 | 描述 | 1004| -------- | -------- | 1005| format | 指向OH_AVFormat实例的指针。 | 1006 1007**返回:** 1008 1009返回一个由key-value组成的字符串。传入的format为NULL或系统资源不足时返回NULL。 1010 1011 1012### OH_AVFormat_GetBuffer() 1013 1014``` 1015bool OH_AVFormat_GetBuffer (struct OH_AVFormat *format, const char *key, uint8_t ** addr, size_t *size) 1016``` 1017 1018**描述** 1019 1020从OH_AVFormat中读取指定长度的数据块。 1021 1022**系统能力:** SystemCapability.Multimedia.Media.Core 1023 1024**起始版本:** 9 1025 1026**参数:** 1027 1028| 名称 | 描述 | 1029| -------- | -------- | 1030| format | 指向OH_AVFormat实例的指针。 | 1031| key | 要读取数据的键。 | 1032| addr | 生命周期与format相同,与format一同销毁。 如果开发者需要长时间保持它,必须进行内存拷贝。 | 1033| size | 读到数据的长度。 | 1034 1035**返回:** 1036 1037返回值为TRUE表示成功,返回值为FALSE表示失败。 1038 1039可能的失败原因: 1040 10411. 输入format为空指针; 10422. 输入format参数结构校验失败; 10433. 输入key为空指针; 10444. 输入addr为空指针; 10455. size为空指针; 10466. 获取的key不存在或者未设置。 1047 1048### OH_AVFormat_GetIntBuffer() 1049 1050``` 1051bool OH_AVFormat_GetIntBuffer(struct OH_AVFormat *format, const char *key, int32_t **addr, size_t *size) 1052``` 1053 1054**描述** 1055 1056从OH_AVFormat中读取一个int32_t数据的数组。 1057需要注意的是,获取的buffer生命周期与OH_AVFormat对象绑定,当format销毁时自动失效。如果开发者需要长时间保持绑定,应用程序必须将数据显式复制到新分配的内存。 1058 1059**系统能力:** SystemCapability.Multimedia.Media.Core 1060 1061**起始版本:** 20 1062 1063**参数:** 1064 1065| 名称 | 描述 | 1066| -------- | -------- | 1067| format | 指向OH_AVFormat实例的指针。 | 1068| key | 要读取数据的键。 | 1069| addr | 保存数据内存的指针。 | 1070| size | 读到数据的元素个数。 | 1071 1072**返回:** 1073 1074返回值为TRUE表示成功,返回值为FALSE表示失败。 1075 1076可能的失败原因: 1077 10781. 输入format为空指针。 10792. 输入format参数结构校验失败。 10803. 输入key为空指针。 10814. 输入addr为空指针。 10825. 输入size为空指针。 1083 1084### OH_AVFormat_GetDoubleValue() 1085 1086``` 1087bool OH_AVFormat_GetDoubleValue (struct OH_AVFormat *format, const char *key, double *out) 1088``` 1089 1090**描述** 1091 1092从OH_AVFormat的[key](_codec_base.md#媒体数据键值对)获取double类型的值。 1093 1094**系统能力:** SystemCapability.Multimedia.Media.Core 1095 1096**起始版本:** 9 1097 1098**参数:** 1099 1100| 名称 | 描述 | 1101| -------- | -------- | 1102| format | 指向OH_AVFormat实例的指针。 | 1103| key | 读取数据的键。 | 1104| out | 读取数据的值。 | 1105 1106**返回:** 1107 1108返回值为TRUE表示成功,返回值为FALSE表示失败。 1109 1110可能的失败原因: 1111 11121. 输入format为空指针; 11132. 输入format参数结构校验失败; 11143. 输入key为空指针; 11154. 输入out为空指针; 11165. 获取的key不存在或者未设置。 1117 1118 1119### OH_AVFormat_GetFloatValue() 1120 1121``` 1122bool OH_AVFormat_GetFloatValue (struct OH_AVFormat *format, const char *key, float *out) 1123``` 1124 1125**描述** 1126 1127从OH_AVFormat的[key](_codec_base.md#媒体数据键值对)获取float类型的值。 1128 1129**系统能力:** SystemCapability.Multimedia.Media.Core 1130 1131**起始版本:** 9 1132 1133**参数:** 1134 1135| 名称 | 描述 | 1136| -------- | -------- | 1137| format | 指向OH_AVFormat实例的指针。 | 1138| key | 读取数据的键。 | 1139| out | 读取数据的值。 | 1140 1141**返回:** 1142 1143返回值为TRUE表示成功,返回值为FALSE表示失败。 1144 1145可能的失败原因: 1146 11471. 输入format为空指针; 11482. 输入format参数结构校验失败; 11493. 输入key为空指针; 11504. 输入out为空指针; 11515. 获取的key不存在或者未设置。 1152 1153 1154### OH_AVFormat_GetIntValue() 1155 1156``` 1157bool OH_AVFormat_GetIntValue (struct OH_AVFormat *format, const char *key, int32_t *out) 1158``` 1159 1160**描述** 1161 1162从OH_AVFormat的[key](_codec_base.md#媒体数据键值对)获取int类型的值。 1163 1164**系统能力:** SystemCapability.Multimedia.Media.Core 1165 1166**起始版本:** 9 1167 1168**参数:** 1169 1170| 名称 | 描述 | 1171| -------- | -------- | 1172| format | 指向OH_AVFormat实例的指针。 | 1173| key | 读取数据的键。 | 1174| out | 读取数据的值。 | 1175 1176**返回:** 1177 1178返回值为TRUE表示成功,返回值为FALSE表示失败。 1179 1180可能的失败原因: 1181 11821. 输入format为空指针; 11832. 输入format参数结构校验失败; 11843. 输入key为空指针; 11854. 输入out为空指针; 11865. 获取的key不存在或者未设置。 1187 1188 1189### OH_AVFormat_GetLongValue() 1190 1191``` 1192bool OH_AVFormat_GetLongValue (struct OH_AVFormat *format, const char *key, int64_t *out) 1193``` 1194 1195**描述** 1196 1197从OH_AVFormat的[key](_codec_base.md#媒体数据键值对)获取long类型的值。 1198 1199**系统能力:** SystemCapability.Multimedia.Media.Core 1200 1201**起始版本:** 9 1202 1203**参数:** 1204 1205| 名称 | 描述 | 1206| -------- | -------- | 1207| format | 指向OH_AVFormat实例的指针。 | 1208| key | 读取数据的键。 | 1209| out | 读取数据的值。 | 1210 1211**返回:** 1212 1213返回值为TRUE表示成功,返回值为FALSE表示失败。 1214 1215可能的失败原因: 1216 12171. 输入format为空指针; 12182. 输入format参数结构校验失败; 12193. 输入key为空指针; 12204. 输入out为空指针; 12215. 获取的key不存在或者未设置。 1222 1223 1224### OH_AVFormat_GetStringValue() 1225 1226``` 1227bool OH_AVFormat_GetStringValue (struct OH_AVFormat *format, const char *key, const char ** out) 1228``` 1229 1230**描述** 1231 1232从OH_AVFormat的[key](_codec_base.md#媒体数据键值对)获取string类型的值。 1233 1234**系统能力:** SystemCapability.Multimedia.Media.Core 1235 1236**起始版本:** 9 1237 1238**参数:** 1239 1240| 名称 | 描述 | 1241| -------- | -------- | 1242| format | 指向OH_AVFormat实例的指针。 | 1243| key | 读取数据的键。 | 1244| out | 读取string指针,out数据的生命周期与format内string对应,如果开发者需要长时间保持它,必须进行拷贝内存。out最大输出字符串长度为256字节,如果长度超过256字节,会报false。 | 1245 1246**返回:** 1247 1248返回值为TRUE表示成功,返回值为FALSE表示失败。 1249 1250可能的失败原因: 1251 12521. 输入format为空指针; 12532. 输入format参数结构校验失败; 12543. 输入key为空指针; 12554. 输入out为空指针; 12565. malloc出的out字符串资源不足; 12576. 获取的key不存在或者未设置; 12587. 输出out的长度超过256字节。 1259 1260 1261### OH_AVFormat_SetBuffer() 1262 1263``` 1264bool OH_AVFormat_SetBuffer (struct OH_AVFormat *format, const char *key, const uint8_t *addr, size_t size) 1265``` 1266 1267**描述** 1268 1269将指定长度的数据块写入OH_AVFormat。该接口仅能设置buffer类型的参数,参数类型定义详见[CodecBase](_codec_base.md)。 1270 1271**系统能力:** SystemCapability.Multimedia.Media.Core 1272 1273**起始版本:** 9 1274 1275**参数:** 1276 1277| 名称 | 描述 | 1278| -------- | -------- | 1279| format | 指向OH_AVFormat实例的指针。 | 1280| key | 写入数据的键。 | 1281| addr | 写入数据的地址,生命周期由开发者管理。 | 1282| size | 写入数据的长度,范围为(0, 1]MB。 | 1283 1284**返回:** 1285 1286返回值为TRUE表示成功,返回值为FALSE表示失败。 1287 1288可能的失败原因: 1289 12901. 输入format为空指针; 12912. 输入format参数结构校验失败; 12923. 输入key为空指针; 12934. 输入addr为空指针; 12945. size为0或超过上限,上限为1MB; 12956. 设置的key对应的value类型错误。 1296 1297 1298### OH_AVFormat_SetDoubleValue() 1299 1300``` 1301bool OH_AVFormat_SetDoubleValue (struct OH_AVFormat *format, const char *key, double value) 1302``` 1303 1304**描述** 1305 1306对OH_AVFormat的[key](_codec_base.md#媒体数据键值对)赋double类型的值。该接口仅能设置double类型的参数,参数类型定义详见[CodecBase](_codec_base.md)。 1307 1308**系统能力:** SystemCapability.Multimedia.Media.Core 1309 1310**起始版本:** 9 1311 1312**参数:** 1313 1314| 名称 | 描述 | 1315| -------- | -------- | 1316| format | 指向OH_AVFormat实例的指针。 | 1317| key | 写入数据的键。 | 1318| value | 写入数据的值。 | 1319 1320**返回:** 1321 1322返回值为TRUE表示成功,返回值为FALSE表示失败。 1323 1324可能的失败原因: 1325 13261. 输入format为空指针; 13272. 输入format参数结构校验失败; 13283. 输入key为空指针; 13294. 设置的key对应的value类型错误。 1330 1331 1332### OH_AVFormat_SetFloatValue() 1333 1334``` 1335bool OH_AVFormat_SetFloatValue (struct OH_AVFormat *format, const char *key, float value) 1336``` 1337 1338**描述** 1339 1340对OH_AVFormat的[key](_codec_base.md#媒体数据键值对)赋float类型的值。该接口仅能设置float类型的参数,参数类型定义详见[CodecBase](_codec_base.md)。 1341 1342**系统能力:** SystemCapability.Multimedia.Media.Core 1343 1344**起始版本:** 9 1345 1346**参数:** 1347 1348| 名称 | 描述 | 1349| -------- | -------- | 1350| format | 指向OH_AVFormat实例的指针。 | 1351| key | 写入数据的键。 | 1352| value | 写入数据的值。 | 1353 1354**返回:** 1355 1356返回值为TRUE表示成功,返回值为FALSE表示失败。 1357 1358可能的失败原因: 1359 13601. 输入format为空指针; 13612. 输入format参数结构校验失败; 13623. 输入key为空指针; 13634. 设置的key对应的value类型错误。 1364 1365### OH_AVFormat_SetIntValue() 1366 1367``` 1368bool OH_AVFormat_SetIntValue (struct OH_AVFormat *format, const char *key, int32_t value) 1369``` 1370 1371**描述** 1372 1373对OH_AVFormat的[key](_codec_base.md#媒体数据键值对)赋int类型的值。该接口仅能设置int类型的参数,参数类型定义详见[CodecBase](_codec_base.md)。 1374 1375**系统能力:** SystemCapability.Multimedia.Media.Core 1376 1377**起始版本:** 9 1378 1379**参数:** 1380 1381| 名称 | 描述 | 1382| -------- | -------- | 1383| format | 指向OH_AVFormat实例的指针。 | 1384| key | 写入数据的键。 | 1385| value | 写入数据的值。 | 1386 1387**返回:** 1388 1389返回值为TRUE表示成功,返回值为FALSE表示失败。 1390 1391可能的失败原因: 1392 13931. 输入format为空指针; 13942. 输入format参数结构校验失败; 13953. 输入key为空指针; 13964. 设置的key对应的value类型错误。 1397 1398 1399### OH_AVFormat_SetLongValue() 1400 1401``` 1402bool OH_AVFormat_SetLongValue (struct OH_AVFormat *format, const char *key, int64_t value) 1403``` 1404 1405**描述** 1406 1407对OH_AVFormat的[key](_codec_base.md#媒体数据键值对)赋long类型的值。该接口仅能设置long类型的参数,参数类型定义详见[CodecBase](_codec_base.md)。 1408 1409**系统能力:** SystemCapability.Multimedia.Media.Core 1410 1411**起始版本:** 9 1412 1413**参数:** 1414 1415| 名称 | 描述 | 1416| -------- | -------- | 1417| format | 指向OH_AVFormat实例的指针。 | 1418| key | 写入数据的键。 | 1419| value | 写入数据的值。 | 1420 1421**返回:** 1422 1423返回值为TRUE表示成功,返回值为FALSE表示失败。 1424 1425可能的失败原因: 1426 14271. 输入format为空指针; 14282. 输入format参数结构校验失败; 14293. 输入key为空指针; 14304. 设置的key对应的value类型错误。 1431 1432 1433### OH_AVFormat_SetStringValue() 1434 1435``` 1436bool OH_AVFormat_SetStringValue (struct OH_AVFormat *format, const char *key, const char *value) 1437``` 1438 1439**描述** 1440 1441对OH_AVFormat的[key](_codec_base.md#媒体数据键值对)赋string类型的值。该接口仅能设置string类型的参数,参数类型定义详见[CodecBase](_codec_base.md)。 1442 1443**系统能力:** SystemCapability.Multimedia.Media.Core 1444 1445**起始版本:** 9 1446 1447**参数:** 1448 1449| 名称 | 描述 | 1450| -------- | -------- | 1451| format | 指向OH_AVFormat实例的指针。 | 1452| key | 写入数据的键。 | 1453| value | 写入字符串数据(使用建议:设置字符长度不超过256字节)。 | 1454 1455**返回:** 1456 1457返回值为TRUE表示成功,返回值为FALSE表示失败。 1458 1459可能的失败原因: 1460 14611. 输入format为空指针; 14622. 输入format参数结构校验失败; 14633. 输入key为空指针; 14644. 输入value为空指针; 14655. 设置的key对应的value类型错误。 1466 1467 1468### OH_AVMemory_Create() 1469 1470``` 1471OH_AVMemory* OH_AVMemory_Create (int32_t size) 1472``` 1473 1474**描述** 1475 1476创建OH_AVMemory实例的指针。 1477 1478**系统能力:** SystemCapability.Multimedia.Media.Core 1479 1480**起始版本:** 10 1481 1482**废弃版本:** 11 1483 1484**替代接口:**[OH_AVBuffer_Create](#oh_avbuffer_create) 1485 1486**参数:** 1487 1488| 名称 | 描述 | 1489| -------- | -------- | 1490| size | 创建内存的大小,单位字节。 | 1491 1492**返回:** 1493 1494如果创建成功,返回OH_AVMemory实例的指针,如果失败,返回NULL。 使用结束后需要通过OH_AVMemory_Destroy释放内存。 1495 1496 1497### OH_AVMemory_Destroy() 1498 1499``` 1500OH_AVErrCode OH_AVMemory_Destroy (struct OH_AVMemory *mem) 1501``` 1502 1503**描述** 1504 1505释放OH_AVMemory实例指针的资源。 1506 1507**系统能力:** SystemCapability.Multimedia.Media.Core 1508 1509**起始版本:** 10 1510 1511**废弃版本:** 11 1512 1513**替代接口:**[OH_AVBuffer_Destroy](#oh_avbuffer_destroy) 1514 1515**参数:** 1516 1517| 名称 | 描述 | 1518| -------- | -------- | 1519| mem | 指向OH_AVMemory实例的指针。 | 1520 1521**返回:** 1522 1523如果释放成功返回AV_ERR_OK,如果失败返回具体错误码, 参考[OH_AVErrCode](#oh_averrcode-1)。 1524 1525 1526### OH_AVMemory_GetAddr() 1527 1528``` 1529uint8_t* OH_AVMemory_GetAddr (struct OH_AVMemory *mem) 1530``` 1531 1532**描述** 1533 1534获取内存虚拟地址。 1535 1536**系统能力:** SystemCapability.Multimedia.Media.Core 1537 1538**起始版本:** 9 1539 1540**废弃版本:** 11 1541 1542**替代接口:**[OH_AVBuffer_GetAddr](#oh_avbuffer_getaddr) 1543 1544**参数:** 1545 1546| 名称 | 描述 | 1547| -------- | -------- | 1548| mem | 指向OH_AVMemory实例的指针。 | 1549 1550**返回:** 1551 1552如果内存有效,返回内存的虚拟地址;如果内存无效,返回NULL。 1553 1554可能的失败原因: 1555 15561. 输入mem为空指针; 15572. 输入mem参数结构校验失败; 15583. 输入mem中内存为空指针。 1559 1560 1561### OH_AVMemory_GetSize() 1562 1563``` 1564int32_t OH_AVMemory_GetSize (struct OH_AVMemory *mem) 1565``` 1566 1567**描述** 1568 1569获取内存长度。 1570 1571**系统能力:** SystemCapability.Multimedia.Media.Core 1572 1573**起始版本:** 9 1574 1575**废弃版本:** 11 1576 1577**替代接口:**[OH_AVBuffer_GetCapacity](#oh_avbuffer_getcapacity) 1578 1579**参数:** 1580 1581| 名称 | 描述 | 1582| -------- | -------- | 1583| mem | 指向OH_AVMemory实例的指针。 | 1584 1585**返回:** 1586 1587如果内存有效,返回内存长度;如果内存无效,返回-1。 1588 1589可能的失败原因: 1590 15911. 输入mem为空指针; 15922. 输入mem参数结构校验失败; 15933. 输入mem中内存为空指针。 1594 1595### OH_AVFormat_SetIntBuffer() 1596 1597``` 1598bool OH_AVFormat_SetIntBuffer(struct OH_AVFormat *format, const char *key, const int32_t *addr, size_t size) 1599``` 1600 1601**描述** 1602 1603将指定长度int32_t类型的数据块写入OH_AVFormat。 1604 1605**系统能力:** SystemCapability.Multimedia.Media.Core 1606 1607**起始版本:** 20 1608 1609**参数:** 1610 1611| 名称 | 描述 | 1612| -------- | -------- | 1613| format | 指向OH_AVFormat实例的指针。 | 1614| key | 写入数据的键。 | 1615| addr | 写入数据的地址,生命周期由开发者管理。 | 1616| size | 写入数据的长度(以元素为单位,不是字节数)。 | 1617 1618**返回:** 1619 1620返回值为TRUE表示成功,返回值为FALSE表示失败。 1621 1622可能的失败原因: 1623 16241. 输入format为空指针。 16252. 输入format参数结构校验失败。 16263. 输入key为空指针。 16274. 输入addr为空指针。 16285. size为0。