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