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