• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# native_avbuffer.h
2
3## 概述
4
5声明了媒体数据结构AVBuffer的函数接口。
6
7**引用文件:** <multimedia/player_framework/native_avbuffer.h>
8
9**库:** libnative_media_core.so
10
11**系统能力:** SystemCapability.Multimedia.Media.Core
12
13**起始版本:** 11
14
15**相关模块:** [Core](capi-core.md)
16
17**相关示例:** [AVCodec](https://gitcode.com/openharmony/applications_app_samples/tree/master/code/BasicFeature/Media/AVCodec)
18
19## 汇总
20
21### 结构体
22
23| 名称 | typedef关键字 | 描述 |
24| -- | -- | -- |
25| [OH_AVBuffer](capi-core-oh-avbuffer.md) | OH_AVBuffer | 为媒体内存接口定义native层对象。 |
26| [OH_NativeBuffer](capi-core-oh-nativebuffer.md) | OH_NativeBuffer | 为图形内存接口定义native层对象。 |
27
28### 函数
29
30| 名称 | 描述 |
31| -- | -- |
32| [OH_AVBuffer *OH_AVBuffer_Create(int32_t capacity)](#oh_avbuffer_create) | 创建OH_AVBuffer实例。需要注意的是,返回值指向的创建OH_AVBuffer的实例需要调用者手动释放,请参阅[OH_AVBuffer_Destroy](capi-native-avbuffer-h.md#oh_avbuffer_destroy)。 |
33| [OH_AVErrCode OH_AVBuffer_Destroy(OH_AVBuffer *buffer)](#oh_avbuffer_destroy) | 释放OH_AVBuffer实例指针的资源, 同一个buffer不允许重复销毁。 |
34| [OH_AVErrCode OH_AVBuffer_GetBufferAttr(OH_AVBuffer *buffer, OH_AVCodecBufferAttr *attr)](#oh_avbuffer_getbufferattr) | 获取数据缓冲区的pts、size、offset、flags高频属性参数。 |
35| [OH_AVErrCode OH_AVBuffer_SetBufferAttr(OH_AVBuffer *buffer, const OH_AVCodecBufferAttr *attr)](#oh_avbuffer_setbufferattr) | 设置数据缓冲区的pts、size、offset、flags高频属性参数。 |
36| [OH_AVFormat *OH_AVBuffer_GetParameter(OH_AVBuffer *buffer)](#oh_avbuffer_getparameter) | 获取除基础属性外的其他参数,信息在OH_AVFormat中承载。需要注意的是,返回值指向的创建OH_AVFormat的实例需要调用者主动调用接口释放,请参阅[OH_AVFormat_Destroy](capi-native-avformat-h.md#oh_avformat_destroy)。 |
37| [OH_AVErrCode OH_AVBuffer_SetParameter(OH_AVBuffer *buffer, const OH_AVFormat *format)](#oh_avbuffer_setparameter) | 设置除基础属性外的其他参数,信息在OH_AVFormat中承载。 |
38| [uint8_t *OH_AVBuffer_GetAddr(OH_AVBuffer *buffer)](#oh_avbuffer_getaddr) | 获取数据缓冲区的虚拟地址。 |
39| [int32_t OH_AVBuffer_GetCapacity(OH_AVBuffer *buffer)](#oh_avbuffer_getcapacity) | 获取数据缓冲区的容量(字节数)。 |
40| [OH_NativeBuffer *OH_AVBuffer_GetNativeBuffer(OH_AVBuffer *buffer)](#oh_avbuffer_getnativebuffer) | 获取OH_NativeBuffer实例的指针。需要注意的是,返回值指向的创建OH_NativeBuffer的实例需要调用者主动调用接口释放,请参阅{@link OH_NativeBuffer_Unreference}。 |
41
42## 函数说明
43
44### OH_AVBuffer_Create()
45
46```
47OH_AVBuffer *OH_AVBuffer_Create(int32_t capacity)
48```
49
50**描述**
51
52创建OH_AVBuffer实例。需要注意的是,返回值指向的创建OH_AVBuffer的实例需要开发者主动调用接口释放,请参阅[OH_AVBuffer_Destroy](capi-native-avbuffer-h.md#oh_avbuffer_destroy)。
53
54**系统能力:** SystemCapability.Multimedia.Media.Core
55
56**起始版本:** 11
57
58
59**参数:**
60
61| 参数项 | 描述 |
62| -- | -- |
63| int32_t capacity | 创建内存的大小,单位字节。 |
64
65**返回:**
66
67| 类型 | 说明 |
68| -- | -- |
69| [OH_AVBuffer](capi-core-oh-avbuffer.md) * | 如果创建成功,则返回OH_AVBuffer实例的指针,如果失败,则返回NULL。<br> 可能的失败原因:<br>1.capacity <= 0。<br>2.出现内部错误,系统没有资源等。 |
70
71### OH_AVBuffer_Destroy()
72
73```
74OH_AVErrCode OH_AVBuffer_Destroy(OH_AVBuffer *buffer)
75```
76
77**描述**
78
79释放OH_AVBuffer实例指针的资源,同一个buffer不允许重复销毁。
80
81**系统能力:** SystemCapability.Multimedia.Media.Core
82
83**起始版本:** 11
84
85
86**参数:**
87
88| 参数项 | 描述 |
89| -- | -- |
90| [OH_AVBuffer](capi-core-oh-avbuffer.md) *buffer | 指向OH_AVBuffer实例的指针。 |
91
92**返回:**
93
94| 类型 | 说明 |
95| -- | -- |
96| [OH_AVErrCode](capi-native-averrors-h.md#oh_averrcode) | AV_ERR_OK:操作成功。<br>   AV_ERR_INVALID_VAL:输入的buffer为空指针或者buffer格式校验失败。<br> AV_ERR_OPERATE_NOT_PERMIT:输入的buffer不是用户创建的。 |
97
98### OH_AVBuffer_GetBufferAttr()
99
100```
101OH_AVErrCode OH_AVBuffer_GetBufferAttr(OH_AVBuffer *buffer, OH_AVCodecBufferAttr *attr)
102```
103
104**描述**
105
106获取数据缓冲区的pts、size、offset、flags高频属性参数。
107
108**系统能力:** SystemCapability.Multimedia.Media.Core
109
110**起始版本:** 11
111
112
113**参数:**
114
115| 参数项 | 描述 |
116| -- | -- |
117| [OH_AVBuffer](capi-core-oh-avbuffer.md) *buffer | 指向OH_AVBuffer实例的指针。 |
118| [OH_AVCodecBufferAttr](capi-core-oh-avcodecbufferattr.md) *attr | 指向OH_AVCodecBufferAttr实例的指针。 |
119
120**返回:**
121
122| 类型 | 说明 |
123| -- | -- |
124| [OH_AVErrCode](capi-native-averrors-h.md#oh_averrcode) | AV_ERR_OK:操作成功。<br>AV_ERR_INVALID_VAL:可能的原因:<br>1. 输入的buffer或attr为空指针。<br>2. buffer结构校验失败。 |
125
126### OH_AVBuffer_SetBufferAttr()
127
128```
129OH_AVErrCode OH_AVBuffer_SetBufferAttr(OH_AVBuffer *buffer, const OH_AVCodecBufferAttr *attr)
130```
131
132**描述**
133
134设置数据缓冲区的pts、size、offset、flags高频属性参数。
135
136**系统能力:** SystemCapability.Multimedia.Media.Core
137
138**起始版本:** 11
139
140
141**参数:**
142
143| 参数项 | 描述 |
144| -- | -- |
145| [OH_AVBuffer](capi-core-oh-avbuffer.md) *buffer | 指向OH_AVBuffer实例的指针。 |
146| [const OH_AVCodecBufferAttr](capi-core-oh-avcodecbufferattr.md) *attr | 指向OH_AVCodecBufferAttr实例的指针。 |
147
148**返回:**
149
150| 类型 | 说明 |
151| -- | -- |
152| [OH_AVErrCode](capi-native-averrors-h.md#oh_averrcode) | AV_ERR_OK:操作成功。<br>AV_ERR_INVALID_VAL:可能的原因:<br>1. 输入的buffer或attr为空指针。<br>2. buffer结构校验失败。<br>3. 输入buffer中内存的size或offset是无效值。 |
153
154### OH_AVBuffer_GetParameter()
155
156```
157OH_AVFormat *OH_AVBuffer_GetParameter(OH_AVBuffer *buffer)
158```
159
160**描述**
161
162获取除基础属性外的其他参数,信息在OH_AVFormat中承载。需要注意的是,返回值指向的创建OH_AVFormat的实例需要开发者主动释放,请参阅[OH_AVFormat_Destroy](capi-native-avformat-h.md#oh_avformat_destroy)。
163
164**系统能力:** SystemCapability.Multimedia.Media.Core
165
166**起始版本:** 11
167
168
169**参数:**
170
171| 参数项 | 描述 |
172| -- | -- |
173| [OH_AVBuffer](capi-core-oh-avbuffer.md) *buffer | 指向OH_AVBuffer实例的指针。 |
174
175**返回:**
176
177| 类型 | 说明 |
178| -- | -- |
179| [OH_AVFormat](capi-core-oh-avformat.md) * | AV_ERR_OK:操作成功。<br>AV_ERR_INVALID_VAL:可能的原因:<br>1. 输入的buffer为空指针。<br>2. 输入buffer的meta为空指针。<br>3. buffer结构校验失败。 |
180
181### OH_AVBuffer_SetParameter()
182
183```
184OH_AVErrCode OH_AVBuffer_SetParameter(OH_AVBuffer *buffer, const OH_AVFormat *format)
185```
186
187**描述**
188
189设置除基础属性外的其他参数,信息在OH_AVFormat中承载。
190
191**系统能力:** SystemCapability.Multimedia.Media.Core
192
193**起始版本:** 11
194
195
196**参数:**
197
198| 参数项 | 描述 |
199| -- | -- |
200| [OH_AVBuffer](capi-core-oh-avbuffer.md) *buffer | 指向OH_AVBuffer实例的指针。 |
201| [const OH_AVFormat](capi-core-oh-avformat.md) *format | 指向OH_AVFormat实例的指针。 |
202
203**返回:**
204
205| 类型 | 说明 |
206| -- | -- |
207| [OH_AVErrCode](capi-native-averrors-h.md#oh_averrcode) | AV_ERR_OK:操作成功。<br>AV_ERR_INVALID_VAL:可能的原因:<br>1. 输入的buffer或format为空指针。<br>2. 输入buffer的meta为空指针。<br>3. buffer结构校验失败。 |
208
209### OH_AVBuffer_GetAddr()
210
211```
212uint8_t *OH_AVBuffer_GetAddr(OH_AVBuffer *buffer)
213```
214
215**描述**
216
217获取数据缓冲区的虚拟地址。
218
219不同场景下,对是否可以获取虚拟地址的支持情况不同,请见表格:
220
221**编码:**
222
223| 模式 | 填充数据的方式 |  是否可以获取虚拟地址 |
224| --------------- | -------- | -------- |
225| Surface模式 | OnNeedInputBuffer输入  | × |
226| Surface模式 | OnNewOutputBuffer输出  | √ |
227| Buffer模式  | OnNeedInputBuffer输入  | √ |
228| Buffer模式  | OnNewOutputBuffer输出  | √ |
229
230**解码:**
231
232| 模式 | 填充数据的方式 |  是否可以获取虚拟地址 |
233| --------------- | -------- | -------- |
234| Surface模式 | OnNeedInputBuffer输入  | √ |
235| Surface模式 | OnNewOutputBuffer输出  | × |
236| Buffer模式  | OnNeedInputBuffer输入  | √ |
237| Buffer模式  | OnNewOutputBuffer输出  | √ |
238
239**系统能力:** SystemCapability.Multimedia.Media.Core
240
241**起始版本:** 11
242
243
244**参数:**
245
246| 参数项 | 描述 |
247| -- | -- |
248| [OH_AVBuffer](capi-core-oh-avbuffer.md) *buffer | 指向OH_AVBuffer实例的指针。 |
249
250**返回:**
251
252| 类型 | 说明 |
253| -- | -- |
254| uint8_t * | 如果成功,则返回数据缓冲区的虚拟地址,如果失败,则返回NULL。<br> 可能的失败原因:<br> 1.输入的buffer为空指针。<br>2.OH_AVBuffer结构校验失败。<br>3.出现内部错误。 |
255
256### OH_AVBuffer_GetCapacity()
257
258```
259int32_t OH_AVBuffer_GetCapacity(OH_AVBuffer *buffer)
260```
261
262**描述**
263
264获取数据缓冲区的容量(字节数)。
265
266**系统能力:** SystemCapability.Multimedia.Media.Core
267
268**起始版本:** 11
269
270
271**参数:**
272
273| 参数项 | 描述 |
274| -- | -- |
275| [OH_AVBuffer](capi-core-oh-avbuffer.md) *buffer | 指向OH_AVBuffer实例的指针。 |
276
277**返回:**
278
279| 类型 | 说明 |
280| -- | -- |
281| int32_t | 如果成功,则返回数据缓冲区的容量,如果失败,则返回-1。<br> 可能的失败原因:<br>1.输入的buffer为空指针。<br>2.OH_AVBuffer结构校验失败。<br>3.出现内部错误。 |
282
283### OH_AVBuffer_GetNativeBuffer()
284
285```
286OH_NativeBuffer *OH_AVBuffer_GetNativeBuffer(OH_AVBuffer *buffer)
287```
288
289**描述**
290
291获取OH_NativeBuffer实例的指针。 需要注意的是,返回值指向的创建OH_NativeBuffer的实例需要开发者主动调用接口释放,请参阅[OH_NativeBuffer_Unreference](../apis-arkgraphics2d/capi-native-buffer-h.md#oh_nativebuffer_unreference)。
292
293**系统能力:** SystemCapability.Multimedia.Media.Core
294
295**起始版本:** 11
296
297
298**参数:**
299
300| 参数项 | 描述 |
301| -- | -- |
302| [OH_AVBuffer](capi-core-oh-avbuffer.md) *buffer | 指向OH_AVBuffer实例的指针。 |
303
304**返回:**
305
306| 类型 | 说明 |
307| -- | -- |
308| OH_NativeBuffer * | 如果成功,则返回OH_NativeBuffer实例的指针,如果失败,则返回NULL。<br> 可能的失败原因:<br>1.输入的buffer为空指针。<br>2.OH_AVBuffer结构校验失败。<br>3.出现内部错误。 |
309
310
311