• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 &lt;&lt; 0U,<br/>CH_SET_FRONT_RIGHT = 1ULL &lt;&lt; 1U,<br/>CH_SET_FRONT_CENTER = 1ULL &lt;&lt; 2U,<br/>CH_SET_LOW_FREQUENCY = 1ULL &lt;&lt; 3U,<br/>CH_SET_BACK_LEFT = 1ULL &lt;&lt; 4U,<br/>CH_SET_BACK_RIGHT = 1ULL &lt;&lt; 5U,<br/>CH_SET_FRONT_LEFT_OF_CENTER = 1ULL &lt;&lt; 6U,<br/>CH_SET_FRONT_RIGHT_OF_CENTER = 1ULL &lt;&lt; 7U,<br/>CH_SET_BACK_CENTER = 1ULL &lt;&lt; 8U,<br/>CH_SET_SIDE_LEFT = 1ULL &lt;&lt; 9U,<br/>CH_SET_SIDE_RIGHT = 1ULL &lt;&lt; 10U,<br/>CH_SET_TOP_CENTER = 1ULL &lt;&lt; 11U,<br/>CH_SET_TOP_FRONT_LEFT = 1ULL &lt;&lt; 12U,<br/>CH_SET_TOP_FRONT_CENTER = 1ULL &lt;&lt; 13U,<br/>CH_SET_TOP_FRONT_RIGHT = 1ULL &lt;&lt; 14U,<br/>CH_SET_TOP_BACK_LEFT = 1ULL &lt;&lt; 15U,<br/>CH_SET_TOP_BACK_CENTER = 1ULL &lt;&lt; 16U,<br/>CH_SET_TOP_BACK_RIGHT = 1ULL &lt;&lt; 17U,<br/>CH_SET_STEREO_LEFT = 1ULL &lt;&lt; 29U,<br/>CH_SET_STEREO_RIGHT = 1ULL &lt;&lt; 30U,<br/>CH_SET_WIDE_LEFT = 1ULL &lt;&lt; 31U,<br/>CH_SET_WIDE_RIGHT = 1ULL &lt;&lt; 32U,<br/>CH_SET_SURROUND_DIRECT_LEFT = 1ULL &lt;&lt; 33U,<br/>CH_SET_SURROUND_DIRECT_RIGHT = 1ULL &lt;&lt; 34U,<br/>CH_SET_LOW_FREQUENCY_2 = 1ULL &lt;&lt; 35U,<br/>CH_SET_TOP_SIDE_LEFT = 1ULL &lt;&lt; 36U,<br/>CH_SET_TOP_SIDE_RIGHT = 1ULL &lt;&lt; 37U,<br/>CH_SET_BOTTOM_FRONT_CENTER = 1ULL &lt;&lt; 38U,<br/>CH_SET_BOTTOM_FRONT_LEFT = 1ULL &lt;&lt; 39U,<br/>CH_SET_BOTTOM_FRONT_RIGHT = 1ULL &lt;&lt; 40U<br/>} | 音频声道集合。 |
60| [OH_AmbAttributeSet](#oh_ambattributeset-1) {<br/>AMB_ORD_1 = 1ULL &lt;&lt; 0U,<br/>AMB_ORD_2 = 2ULL &lt;&lt; 0U,<br/>AMB_ORD_3 = 3ULL &lt;&lt; 0U,<br/>AMB_COM_ACN = 0ULL &lt;&lt; 8U,<br/>AMB_COM_FUMA = 1ULL &lt;&lt; 8U,<br/>AMB_NOR_N3D = 0ULL &lt;&lt; 12U,<br/>AMB_NOR_SN3D = 1ULL &lt;&lt; 12U,<br/>AMB_MODE = 1ULL &lt;&lt; 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 &lt;&lt; 0, AVCODEC_BUFFER_FLAGS_SYNC_FRAME = 1 &lt;&lt; 1, AVCODEC_BUFFER_FLAGS_INCOMPLETE_FRAME = 1 &lt;&lt; 2,<br/>AVCODEC_BUFFER_FLAGS_CODEC_DATA = 1 &lt;&lt; 3, <br/>AVCODEC_BUFFER_FLAGS_DISCARD = 1 &lt;&lt; 4, <br/>AVCODEC_BUFFER_FLAGS_DISPOSABLE = 1 &lt;&lt; 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。