1# AVCapability
2
3
4## 概述
5
6AVCapability模块提供用于编解码能力查询的函数。
7
8对应的开发指南及样例可参考[获取支持的编解码能力](../../media/avcodec/obtain-supported-codecs.md)。
9
10**系统能力:** SystemCapability.Multimedia.Media.CodecBase
11
12**起始版本:** 10
13
14
15## 汇总
16
17
18### 文件
19
20| 名称 | 描述 |
21| -------- | -------- |
22| [native_avcapability.h](native__avcapability_8h.md) | 声明用于编解码能力查询到的Native API。|
23
24
25### 结构体
26
27| 名称 | 描述 |
28| -------- | -------- |
29| struct  [OH_AVRange](_o_h___a_v_range.md) | 范围包含最小值和最大值。  |
30
31
32### 类型定义
33
34| 名称 | 描述 |
35| -------- | -------- |
36| typedef struct [OH_AVRange](_o_h___a_v_range.md) [OH_AVRange](#oh_avrange) | 范围包含最小值和最大值。  |
37| typedef enum [OH_AVCodecCategory](#oh_avcodeccategory-1) [OH_AVCodecCategory](#oh_avcodeccategory) | 编解码器类别。  |
38| typedef enum [OH_AVCapabilityFeature](#oh_avcapabilityfeature-1) [OH_AVCapabilityFeature](#oh_avcapabilityfeature) | 可以在特定编解码器场景中使用的可选特性。  |
39
40
41### 枚举
42
43| 名称 | 描述 |
44| -------- | -------- |
45| [OH_AVCodecCategory](#oh_avcodeccategory-1) { HARDWARE = 0, SOFTWARE } | 编解码器类别。  |
46| [OH_AVCapabilityFeature](#oh_avcapabilityfeature-1) {<br/> VIDEO_ENCODER_TEMPORAL_SCALABILITY = 0, <br/>VIDEO_ENCODER_LONG_TERM_REFERENCE = 1, <br/>VIDEO_LOW_LATENCY = 2 <br/>} | 可以在特定编解码器场景中使用的可选特性。  |
47
48
49### 函数
50
51| 名称 | 描述 |
52| -------- | -------- |
53| OH_AVCapability \*[OH_AVCodec_GetCapability](#oh_avcodec_getcapability) (const char \*mime, bool isEncoder) | 获取系统推荐的编解码器能力。  |
54| OH_AVCapability \*[OH_AVCodec_GetCapabilityByCategory](#oh_avcodec_getcapabilitybycategory) (const char \*mime, bool isEncoder, [OH_AVCodecCategory](#oh_avcodeccategory) category) | 获取指定类别中的编解码器能力。 |
55| bool [OH_AVCapability_IsHardware](#oh_avcapability_ishardware) (OH_AVCapability \*capability) | 检查能力实例是否描述了硬件编解码器。  |
56| const char \* [OH_AVCapability_GetName](#oh_avcapability_getname) (OH_AVCapability \*capability) | 获取编解码器名称。  |
57| int32_t [OH_AVCapability_GetMaxSupportedInstances](#oh_avcapability_getmaxsupportedinstances) (OH_AVCapability \*capability) | 获取编解码器支持的最大实例数。  |
58| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVCapability_GetEncoderBitrateRange](#oh_avcapability_getencoderbitraterange) (OH_AVCapability \*capability, [OH_AVRange](_o_h___a_v_range.md) \*bitrateRange) | 获取编码器支持的比特率范围。  |
59| bool [OH_AVCapability_IsEncoderBitrateModeSupported](#oh_avcapability_isencoderbitratemodesupported) (OH_AVCapability \*capability, [OH_BitrateMode](_codec_base.md#oh_bitratemode) bitrateMode) | 检查编码器是否支持特定的比特率模式。  |
60| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVCapability_GetEncoderQualityRange](#oh_avcapability_getencoderqualityrange) (OH_AVCapability \*capability, [OH_AVRange](_o_h___a_v_range.md) \*qualityRange) | 获取编码器支持的质量范围。  |
61| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVCapability_GetEncoderComplexityRange](#oh_avcapability_getencodercomplexityrange) (OH_AVCapability \*capability, [OH_AVRange](_o_h___a_v_range.md) \*complexityRange) | 获取编码器支持的编码器复杂性范围。  |
62| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVCapability_GetAudioSupportedSampleRates](#oh_avcapability_getaudiosupportedsamplerates) (OH_AVCapability \*capability, const int32_t \*\*sampleRates, uint32_t \*sampleRateNum) | 获取音频编解码器支持的采样率。  |
63| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVCapability_GetAudioChannelCountRange](#oh_avcapability_getaudiochannelcountrange) (OH_AVCapability \*capability, [OH_AVRange](_o_h___a_v_range.md) \*channelCountRange) | 获取音频编解码器支持的音频通道计数范围。  |
64| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVCapability_GetVideoWidthAlignment](#oh_avcapability_getvideowidthalignment) (OH_AVCapability \*capability, int32_t \*widthAlignment) | 获取视频编解码器支持的视频宽度对齐。  |
65| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVCapability_GetVideoHeightAlignment](#oh_avcapability_getvideoheightalignment) (OH_AVCapability \*capability, int32_t \*heightAlignment) | 获取视频编解码器支持的视频高度对齐。  |
66| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVCapability_GetVideoWidthRangeForHeight](#oh_avcapability_getvideowidthrangeforheight) (OH_AVCapability \*capability, int32_t height, [OH_AVRange](_o_h___a_v_range.md) \*widthRange) | 获取指定高度情况下视频编解码器支持的视频宽度范围。  |
67| OH_AVErrCode [OH_AVCapability_GetVideoHeightRangeForWidth](#oh_avcapability_getvideoheightrangeforwidth) (OH_AVCapability \*capability, int32_t width, [OH_AVRange](_o_h___a_v_range.md) \*heightRange) | 获取指定宽度情况下视频编解码器支持的视频高度范围。  |
68| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVCapability_GetVideoWidthRange](#oh_avcapability_getvideowidthrange) (OH_AVCapability \*capability, [OH_AVRange](_o_h___a_v_range.md) \*widthRange) | 获取视频编解码器支持的视频宽度范围。  |
69| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVCapability_GetVideoHeightRange](#oh_avcapability_getvideoheightrange) (OH_AVCapability \*capability, [OH_AVRange](_o_h___a_v_range.md) \*heightRange) | 获取视频编解码器支持的视频高度范围。  |
70| bool [OH_AVCapability_IsVideoSizeSupported](#oh_avcapability_isvideosizesupported) (OH_AVCapability \*capability, int32_t width, int32_t height) | 检查视频编解码器是否支持特定的视频大小。  |
71| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVCapability_GetVideoFrameRateRange](#oh_avcapability_getvideoframeraterange) (OH_AVCapability \*capability, [OH_AVRange](_o_h___a_v_range.md) \*frameRateRange) | 获取视频编解码器支持的视频帧率范围。  |
72| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVCapability_GetVideoFrameRateRangeForSize](#oh_avcapability_getvideoframeraterangeforsize) (OH_AVCapability \*capability, int32_t width, int32_t height, [OH_AVRange](_o_h___a_v_range.md) \*frameRateRange) | 获取指定视频大小的视频编解码器支持的视频帧率范围。  |
73| bool [OH_AVCapability_AreVideoSizeAndFrameRateSupported](#oh_avcapability_arevideosizeandframeratesupported) (OH_AVCapability \*capability, int32_t width, int32_t height, int32_t frameRate) | 检查视频编解码器是否支持视频大小和帧率的特定组合。  |
74| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVCapability_GetVideoSupportedPixelFormats](#oh_avcapability_getvideosupportedpixelformats) (OH_AVCapability \*capability, const int32_t \*\*pixelFormats, uint32_t \*pixelFormatNum) | 获取视频编解码器支持的视频像素格式。  |
75| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVCapability_GetSupportedProfiles](#oh_avcapability_getsupportedprofiles) (OH_AVCapability \*capability, const int32_t \*\*profiles, uint32_t \*profileNum) | 获取编解码器支持的档次。  |
76| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVCapability_GetSupportedLevelsForProfile](#oh_avcapability_getsupportedlevelsforprofile) (OH_AVCapability \*capability, int32_t profile, const int32_t \*\*levels, uint32_t \*levelNum) | 获取特定档次支持的编解码器级别。  |
77| bool [OH_AVCapability_AreProfileAndLevelSupported](#oh_avcapability_areprofileandlevelsupported) (OH_AVCapability \*capability, int32_t profile, int32_t level) | 检查编解码器是否支持档次和级别的特定组合。  |
78| bool [OH_AVCapability_IsFeatureSupported](#oh_avcapability_isfeaturesupported) (OH_AVCapability \*capability, [OH_AVCapabilityFeature](#oh_avcapabilityfeature) feature) | 检查编解码器是否支持指定特性。  |
79| OH_AVFormat \* [OH_AVCapability_GetFeatureProperties](#oh_avcapability_getfeatureproperties) (OH_AVCapability \*capability, [OH_AVCapabilityFeature](#oh_avcapabilityfeature) feature) | 获取指定特性的属性。 需要注意的是,返回值指向的OH_AVFormat实例的生命周期需要调用者手动释放。  |
80
81
82## 类型定义说明
83
84
85### OH_AVCapabilityFeature
86
87```
88typedef enum OH_AVCapabilityFeature OH_AVCapabilityFeature
89```
90**描述**
91可以在特定编解码器场景中使用的可选特性。
92
93**系统能力:** SystemCapability.Multimedia.Media.CodecBase
94
95**起始版本:** 12
96
97
98### OH_AVCodecCategory
99
100```
101typedef enum OH_AVCodecCategory OH_AVCodecCategory
102```
103**描述**
104编解码器类别。
105
106**系统能力:** SystemCapability.Multimedia.Media.CodecBase
107
108**起始版本:** 10
109
110
111### OH_AVRange
112
113```
114typedef struct OH_AVRange OH_AVRange
115```
116**描述**
117范围包含最小值和最大值。
118
119**系统能力:** SystemCapability.Multimedia.Media.CodecBase
120
121**起始版本:** 10
122
123## 枚举类型说明
124
125
126### OH_AVCapabilityFeature
127
128```
129enum OH_AVCapabilityFeature
130```
131**描述**
132可以在特定编解码器场景中使用的可选特性。
133
134**系统能力:** SystemCapability.Multimedia.Media.CodecBase
135
136**起始版本:** 12
137
138| 枚举值 | 描述 |
139| -------- | -------- |
140| VIDEO_ENCODER_TEMPORAL_SCALABILITY  | 编解码器支持时域可分层特性,只用于视频编码场景。   |
141| VIDEO_ENCODER_LONG_TERM_REFERENCE  | 编解码器支持长期参考帧特性,只用于视频编码场景。   |
142| VIDEO_LOW_LATENCY  | 编解码器支持低时延特性,用于视频编码和视频解码场景。   |
143
144
145### OH_AVCodecCategory
146
147```
148enum OH_AVCodecCategory
149```
150**描述**
151编解码器类别。
152
153**系统能力:** SystemCapability.Multimedia.Media.CodecBase
154
155**起始版本:** 10
156
157| 枚举值 | 描述 |
158| -------- | -------- |
159| HARDWARE  | 硬件编解码。   |
160| SOFTWARE  | 软件编解码。   |
161
162
163## 函数说明
164
165
166### OH_AVCapability_AreProfileAndLevelSupported()
167
168```
169bool OH_AVCapability_AreProfileAndLevelSupported (OH_AVCapability *capability, int32_t profile, int32_t level)
170```
171**描述**
172检查编解码器是否支持档次和级别的特定组合。
173
174**系统能力:** SystemCapability.Multimedia.Media.CodecBase
175
176**起始版本:** 10
177
178**参数:**
179
180| 名称 | 描述 |
181| -------- | -------- |
182| capability | 编解码能力指针。  |
183| profile | 编解码器档次。  |
184| level | 编解码器级别。  |
185
186**返回:**
187
188如果支持档次和级别的组合,则返回true。 如果不支持,则为false。
189
190
191### OH_AVCapability_AreVideoSizeAndFrameRateSupported()
192
193```
194bool OH_AVCapability_AreVideoSizeAndFrameRateSupported (OH_AVCapability *capability, int32_t width, int32_t height, int32_t frameRate)
195```
196**描述**
197检查视频编解码器是否支持视频大小和帧率的特定组合。
198
199**系统能力:** SystemCapability.Multimedia.Media.CodecBase
200
201**起始版本:** 10
202
203**参数:**
204
205| 名称 | 描述 |
206| -------- | -------- |
207| capability | 视频编解码能力指针。不能填入音频编解码器能力指针。  |
208| width | 视频水平像素数。  |
209| height | 视频垂直像素数。  |
210| frameRate | 每秒帧数。  |
211
212**返回:**
213
214如果支持视频大小和帧率的组合,则返回true。 如果不支持,则为false。
215
216
217### OH_AVCapability_GetAudioChannelCountRange()
218
219```
220OH_AVErrCode OH_AVCapability_GetAudioChannelCountRange (OH_AVCapability *capability, OH_AVRange *channelCountRange)
221```
222**描述**
223获取音频编解码器支持的音频通道计数范围。
224
225**系统能力:** SystemCapability.Multimedia.Media.CodecBase
226
227**起始版本:** 10
228
229**参数:**
230
231| 名称 | 描述 |
232| -------- | -------- |
233| capability | 音频编解码能力指针。不能填入视频编解码器能力指针。  |
234| channelCountRange | 输出参数。音频通道计数范围。  |
235
236**返回:**
237
238如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
239
240当能力实例无效,或者指向音频通道计数范围的指针为空指针,返回AV_ERR_INVALID_VAL。
241
242
243### OH_AVCapability_GetAudioSupportedSampleRates()
244
245```
246OH_AVErrCode OH_AVCapability_GetAudioSupportedSampleRates (OH_AVCapability *capability, const int32_t **sampleRates, uint32_t *sampleRateNum)
247```
248**描述**
249获取音频编解码器支持的采样率。
250
251**系统能力:** SystemCapability.Multimedia.Media.CodecBase
252
253**起始版本:** 10
254
255**参数:**
256
257| 名称 | 描述 |
258| -------- | -------- |
259| capability | 音频编解码能力指针。不能填入视频编解码器能力指针。  |
260| sampleRates | 输出参数。指向采样率数组的指针。  |
261| sampleRateNum | 输出参数。采样率数组的元素数目。  |
262
263**返回:**
264
265如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
266
267当能力实例无效,或者指向采样率数组的指针为空指针,或者指向采样率数组的元素数目的指针为空指针,返回AV_ERR_INVALID_VAL。 当遇到未知错误,返回AV_ERR_UNKNOWN。 当内部使用内存分配失败,返回AV_ERR_NO_MEMORY。
268
269
270### OH_AVCapability_GetEncoderBitrateRange()
271
272```
273OH_AVErrCode OH_AVCapability_GetEncoderBitrateRange (OH_AVCapability *capability, OH_AVRange *bitrateRange)
274```
275**描述**
276获取编码器支持的比特率范围。
277
278**系统能力:** SystemCapability.Multimedia.Media.CodecBase
279
280**起始版本:** 10
281
282**参数:**
283
284| 名称 | 描述 |
285| -------- | -------- |
286| capability | 编码器能力指针。不能填入解码器能力指针。  |
287| bitrateRange | 输出参数。编码器码率范围。  |
288
289**返回:**
290
291如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
292
293当能力实例无效,或者指向编码器码率范围的指针为空指针,返回AV_ERR_INVALID_VAL。
294
295
296### OH_AVCapability_GetEncoderComplexityRange()
297
298```
299OH_AVErrCode OH_AVCapability_GetEncoderComplexityRange (OH_AVCapability *capability, OH_AVRange *complexityRange)
300```
301**描述**
302获取编码器支持的编码器复杂性范围。
303
304**系统能力:** SystemCapability.Multimedia.Media.CodecBase
305
306**起始版本:** 10
307
308**参数:**
309
310| 名称 | 描述 |
311| -------- | -------- |
312| capability | 编码器能力指针。不能填入解码器能力指针。  |
313| complexityRange | 输出参数。编码器复杂度范围。  |
314
315**返回:**
316
317如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
318
319当能力实例无效,或者指向编码器复杂度范围的指针为空指针,返回AV_ERR_INVALID_VAL。
320
321
322### OH_AVCapability_GetEncoderQualityRange()
323
324```
325OH_AVErrCode OH_AVCapability_GetEncoderQualityRange (OH_AVCapability *capability, OH_AVRange *qualityRange)
326```
327**描述**
328获取编码器支持的质量范围。
329
330**系统能力:** SystemCapability.Multimedia.Media.CodecBase
331
332**起始版本:** 10
333
334**参数:**
335
336| 名称 | 描述 |
337| -------- | -------- |
338| capability | 编码器能力指针。不能填入解码器能力指针。  |
339| qualityRange | 输出参数。编码器质量范围。  |
340
341**返回:**
342
343如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
344
345当能力实例无效,或者指向编码器质量范围的指针为空指针,返回AV_ERR_INVALID_VAL。
346
347
348### OH_AVCapability_GetFeatureProperties()
349
350```
351OH_AVFormat* OH_AVCapability_GetFeatureProperties (OH_AVCapability *capability, OH_AVCapabilityFeature feature)
352```
353**描述**
354获取指定特性的属性。 需要注意的是,返回值指向的OH_AVFormat实例的生命周期需要调用者手动释放。
355
356**系统能力:** SystemCapability.Multimedia.Media.CodecBase
357
358**起始版本:** 12
359
360**参数:**
361
362| 名称 | 描述 |
363| -------- | -------- |
364| capability | 编解码能力指针。  |
365| feature | 编解码特性,请参阅[OH_AVCapabilityFeature](#oh_avcapabilityfeature)。  |
366
367**返回:**
368
369返回指向OH_AVFormat实例的指针。
370
371
372### OH_AVCapability_GetMaxSupportedInstances()
373
374```
375int32_t OH_AVCapability_GetMaxSupportedInstances (OH_AVCapability *capability)
376```
377**描述**
378获取编解码器支持的最大实例数。
379
380**系统能力:** SystemCapability.Multimedia.Media.CodecBase
381
382**起始版本:** 10
383
384**参数:**
385
386| 名称 | 描述 |
387| -------- | -------- |
388| capability | 编解码能力指针。  |
389
390**返回:**
391
392返回支持的最大编解码器实例数。
393
394
395### OH_AVCapability_GetName()
396
397```
398const char* OH_AVCapability_GetName (OH_AVCapability *capability)
399```
400**描述**
401获取编解码器名称。
402
403**系统能力:** SystemCapability.Multimedia.Media.CodecBase
404
405**起始版本:** 10
406
407**参数:**
408
409| 名称 | 描述 |
410| -------- | -------- |
411| capability | 编解码能力指针。  |
412
413**返回:**
414
415返回编解码器名称字符串。
416
417
418### OH_AVCapability_GetSupportedLevelsForProfile()
419
420```
421OH_AVErrCode OH_AVCapability_GetSupportedLevelsForProfile (OH_AVCapability *capability, int32_t profile, const int32_t **levels, uint32_t *levelNum)
422```
423**描述**
424获取特定档次支持的编解码器级别。
425
426**系统能力:** SystemCapability.Multimedia.Media.CodecBase
427
428**起始版本:** 10
429
430**参数:**
431
432| 名称 | 描述 |
433| -------- | -------- |
434| capability | 编解码能力指针。  |
435| profile | 编解码器档次。  |
436| levels | 输出参数。指向级别数组的指针。  |
437| levelNum | 输出参数。级别数组的元素数目。  |
438
439**返回:**
440
441如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
442
443当能力实例无效,或者档次不在通过[OH_AVCapability_GetSupportedProfiles](#oh_avcapability_getsupportedprofiles)获取支持的档次数组中, 或者指向级别数组的指针为空指针,或者指向级别数组的元素数目的指针为空指针,返回AV_ERR_INVALID_VAL。 当遇到未知错误,返回AV_ERR_UNKNOWN。 当内部使用内存分配失败,返回AV_ERR_NO_MEMORY。
444
445
446### OH_AVCapability_GetSupportedProfiles()
447
448```
449OH_AVErrCode OH_AVCapability_GetSupportedProfiles (OH_AVCapability *capability, const int32_t **profiles, uint32_t *profileNum)
450```
451**描述**
452获取编解码器支持的档次。
453
454**系统能力:** SystemCapability.Multimedia.Media.CodecBase
455
456**起始版本:** 10
457
458**参数:**
459
460| 名称 | 描述 |
461| -------- | -------- |
462| capability | 编解码能力指针。  |
463| profiles | 输出参数。指向档次数组的指针。  |
464| profileNum | 输出参数。档次数组的元素数目。  |
465
466**返回:**
467
468如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
469
470当能力实例无效,或者指向档次数组的指针为空指针,或者指向档次数组的元素数目的指针为空指针,返回AV_ERR_INVALID_VAL。 当遇到未知错误,返回AV_ERR_UNKNOWN。 当内部使用内存分配失败,返回AV_ERR_NO_MEMORY。
471
472
473### OH_AVCapability_GetVideoFrameRateRange()
474
475```
476OH_AVErrCode OH_AVCapability_GetVideoFrameRateRange (OH_AVCapability *capability, OH_AVRange *frameRateRange)
477```
478**描述**
479获取视频编解码器支持的视频帧率范围。
480
481**系统能力:** SystemCapability.Multimedia.Media.CodecBase
482
483**起始版本:** 10
484
485**参数:**
486
487| 名称 | 描述 |
488| -------- | -------- |
489| capability | 视频编解码能力指针。不能填入音频编解码器能力指针。  |
490| frameRateRange | 输出参数。视频帧率范围。  |
491
492**返回:**
493
494如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
495
496当能力实例无效,或者指向视频帧率范围的指针为空指针,返回AV_ERR_INVALID_VAL。
497
498
499### OH_AVCapability_GetVideoFrameRateRangeForSize()
500
501```
502OH_AVErrCode OH_AVCapability_GetVideoFrameRateRangeForSize (OH_AVCapability *capability, int32_t width, int32_t height, OH_AVRange *frameRateRange)
503```
504**描述**
505获取指定视频大小的视频编解码器支持的视频帧率范围。
506
507**系统能力:** SystemCapability.Multimedia.Media.CodecBase
508
509**起始版本:** 10
510
511**参数:**
512
513| 名称 | 描述 |
514| -------- | -------- |
515| capability | 视频编解码能力指针。不能填入音频编解码器能力指针。  |
516| width | 视频水平像素数。  |
517| height | 视频垂直像素数。  |
518| frameRateRange | 输出参数。视频帧率范围。  |
519
520**返回:**
521
522如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
523
524当能力实例无效,或者宽度和高度组合不支持,或者指向帧率范围的指针为空指针,返回AV_ERR_INVALID_VAL。
525
526
527### OH_AVCapability_GetVideoHeightAlignment()
528
529```
530OH_AVErrCode OH_AVCapability_GetVideoHeightAlignment (OH_AVCapability *capability, int32_t *heightAlignment)
531```
532**描述**
533获取视频编解码器支持的视频高度对齐。
534
535**系统能力:** SystemCapability.Multimedia.Media.CodecBase
536
537**起始版本:** 10
538
539**参数:**
540
541| 名称 | 描述 |
542| -------- | -------- |
543| capability | 视频编解码能力指针。不能填入音频编解码器能力指针。  |
544| heightAlignment | 输出参数。视频高度对齐。  |
545
546**返回:**
547
548如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
549
550当能力实例无效,或者指向视频高度对齐的指针为空指针,返回AV_ERR_INVALID_VAL。
551
552
553### OH_AVCapability_GetVideoHeightRange()
554
555```
556OH_AVErrCode OH_AVCapability_GetVideoHeightRange (OH_AVCapability *capability, OH_AVRange *heightRange)
557```
558**描述**
559获取视频编解码器支持的视频高度范围。
560
561**系统能力:** SystemCapability.Multimedia.Media.CodecBase
562
563**起始版本:** 10
564
565**参数:**
566
567| 名称 | 描述 |
568| -------- | -------- |
569| capability | 视频编解码能力指针。不能填入音频编解码器能力指针。  |
570| heightRange | 输出参数。视频高度范围。  |
571
572**返回:**
573
574如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
575
576当能力实例无效,或者指向视频高度范围的指针为空指针,返回AV_ERR_INVALID_VAL。
577
578
579### OH_AVCapability_GetVideoHeightRangeForWidth()
580
581```
582OH_AVErrCode OH_AVCapability_GetVideoHeightRangeForWidth (OH_AVCapability *capability, int32_t width, OH_AVRange *heightRange)
583```
584**描述**
585获取指定宽度情况下视频编解码器支持的视频高度范围。
586
587**系统能力:** SystemCapability.Multimedia.Media.CodecBase
588
589**起始版本:** 10
590
591**参数:**
592
593| 名称 | 描述 |
594| -------- | -------- |
595| capability | 视频编解码能力指针。不能填入音频编解码器能力指针。  |
596| width | 视频水平像素数。  |
597| heightRange | 输出参数。视频高度范围。  |
598
599**返回:**
600
601如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
602
603当能力实例无效,或者宽度不在通过[OH_AVCapability_GetVideoWidthRange](#oh_avcapability_getvideowidthrange)获取支持的宽度范围中, 或者指向高度范围的指针为空指针,返回AV_ERR_INVALID_VAL。
604
605
606### OH_AVCapability_GetVideoSupportedPixelFormats()
607
608```
609OH_AVErrCode OH_AVCapability_GetVideoSupportedPixelFormats (OH_AVCapability *capability, const int32_t **pixelFormats, uint32_t *pixelFormatNum)
610```
611**描述**
612获取视频编解码器支持的视频像素格式。
613
614**系统能力:** SystemCapability.Multimedia.Media.CodecBase
615
616**起始版本:** 10
617
618**参数:**
619
620| 名称 | 描述 |
621| -------- | -------- |
622| capability | 视频编解码能力指针。不能填入音频编解码器能力指针。  |
623| pixelFormats | 输出参数。指向视频像素格式数组的指针。  |
624| pixelFormatNum | 输出参数。像素格式数组的元素数目。  |
625
626**返回:**
627
628如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
629
630当能力实例无效,或者指向视频像素格式数组的指针为空指针,或者指向像素格式数组的元素数目的指针为空指针,返回AV_ERR_INVALID_VAL。 当遇到未知错误,返回AV_ERR_UNKNOWN。 当内部使用内存分配失败,返回AV_ERR_NO_MEMORY。
631
632
633### OH_AVCapability_GetVideoWidthAlignment()
634
635```
636OH_AVErrCode OH_AVCapability_GetVideoWidthAlignment (OH_AVCapability *capability, int32_t *widthAlignment)
637```
638**描述**
639获取视频编解码器支持的视频宽度对齐。
640
641**系统能力:** SystemCapability.Multimedia.Media.CodecBase
642
643**起始版本:** 10
644
645**参数:**
646
647| 名称 | 描述 |
648| -------- | -------- |
649| capability | 视频编解码能力指针。不能填入音频编解码器能力指针。  |
650| widthAlignment | 输出参数。视频宽度对齐。  |
651
652**返回:**
653
654如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
655
656当能力实例无效,或者指向视频宽度对齐的指针为空指针,返回AV_ERR_INVALID_VAL。
657
658
659### OH_AVCapability_GetVideoWidthRange()
660
661```
662OH_AVErrCode OH_AVCapability_GetVideoWidthRange (OH_AVCapability *capability, OH_AVRange *widthRange)
663```
664**描述**
665获取视频编解码器支持的视频宽度范围。
666
667**系统能力:** SystemCapability.Multimedia.Media.CodecBase
668
669**起始版本:** 10
670
671**参数:**
672
673| 名称 | 描述 |
674| -------- | -------- |
675| capability | 视频编解码能力指针。不能填入音频编解码器能力指针。  |
676| widthRange | 输出参数。视频宽度范围。  |
677
678**返回:**
679
680如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
681
682当能力实例无效,或者指向视频宽度范围的指针为空指针,返回AV_ERR_INVALID_VAL。
683
684
685### OH_AVCapability_GetVideoWidthRangeForHeight()
686
687```
688OH_AVErrCode OH_AVCapability_GetVideoWidthRangeForHeight (OH_AVCapability *capability, int32_t height, OH_AVRange *widthRange)
689```
690**描述**
691获取指定高度情况下视频编解码器支持的视频宽度范围。
692
693**系统能力:** SystemCapability.Multimedia.Media.CodecBase
694
695**起始版本:** 10
696
697**参数:**
698
699| 名称 | 描述 |
700| -------- | -------- |
701| capability | 视频编解码能力指针。不能填入音频编解码器能力指针。  |
702| height | 视频垂直像素数。  |
703| widthRange | 输出参数。视频宽度范围。  |
704
705**返回:**
706
707如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
708
709当能力实例无效,或者高度不在通过[OH_AVCapability_GetVideoHeightRange](#oh_avcapability_getvideoheightrange)获取支持的高度范围中, 或者指向宽度范围的指针为空指针,返回AV_ERR_INVALID_VAL。
710
711
712### OH_AVCapability_IsEncoderBitrateModeSupported()
713
714```
715bool OH_AVCapability_IsEncoderBitrateModeSupported (OH_AVCapability *capability, OH_BitrateMode bitrateMode)
716```
717**描述**
718检查编码器是否支持特定的比特率模式。
719
720**系统能力:** SystemCapability.Multimedia.Media.CodecBase
721
722**起始版本:** 10
723
724**参数:**
725
726| 名称 | 描述 |
727| -------- | -------- |
728| capability | 编码器能力指针。不能填入解码器能力指针。  |
729| bitrateMode | 比特率模式。  |
730
731**返回:**
732
733如果支持该比特率模式,则返回true;如果不支持该比特率模式,则返回false。
734
735
736### OH_AVCapability_IsFeatureSupported()
737
738```
739bool OH_AVCapability_IsFeatureSupported (OH_AVCapability *capability, OH_AVCapabilityFeature feature)
740```
741**描述**
742检查编解码器是否支持指定特性。
743
744**系统能力:** SystemCapability.Multimedia.Media.CodecBase
745
746**起始版本:** 12
747
748**参数:**
749
750| 名称 | 描述 |
751| -------- | -------- |
752| capability | 编解码能力指针。  |
753| feature | 编解码特性,请参阅[OH_AVCapabilityFeature](#oh_avcapabilityfeature)。  |
754
755**返回:**
756
757如果支持该特性,则返回true。如果不支持,则为false。
758
759
760### OH_AVCapability_IsHardware()
761
762```
763bool OH_AVCapability_IsHardware (OH_AVCapability *capability)
764```
765**描述**
766检查能力实例是否描述了硬件编解码器。
767
768**系统能力:** SystemCapability.Multimedia.Media.CodecBase
769
770**起始版本:** 10
771
772**参数:**
773
774| 名称 | 描述 |
775| -------- | -------- |
776| capability | 编解码能力指针。  |
777
778**返回:**
779
780如果能力实例描述的是硬件编解码器,则返回true, 如果功能实例描述的是软件编解码器,则为false。
781
782
783### OH_AVCapability_IsVideoSizeSupported()
784
785```
786bool OH_AVCapability_IsVideoSizeSupported (OH_AVCapability *capability, int32_t width, int32_t height)
787```
788**描述**
789检查视频编解码器是否支持特定的视频大小。
790
791**系统能力:** SystemCapability.Multimedia.Media.CodecBase
792
793**起始版本:** 10
794
795**参数:**
796
797| 名称 | 描述 |
798| -------- | -------- |
799| capability | 视频编解码能力指针。不能填入音频编解码器能力指针。  |
800| width | 视频水平像素数。  |
801| height | 视频垂直像素数。  |
802
803**返回:**
804
805如果支持该视频大小,则返回true,如果不支持该视频大小,则返回false。
806
807
808### OH_AVCodec_GetCapability()
809
810```
811OH_AVCapability* OH_AVCodec_GetCapability (const char *mime, bool isEncoder)
812```
813**描述**
814获取系统推荐的编解码器能力。
815
816**系统能力:** SystemCapability.Multimedia.Media.CodecBase
817
818**起始版本:** 10
819
820**参数:**
821
822| 名称 | 描述 |
823| -------- | -------- |
824| mime | MIME类型描述字符串,请参阅**AVCODEC_MIME_TYPE**。  |
825| isEncoder | 编码器为true,解码器为false。  |
826
827**返回:**
828
829如果现有编解码器匹配,则返回能力实例, 如果指定的MIME类型与任何现有编解码器不匹配,则返回NULL。
830
831
832### OH_AVCodec_GetCapabilityByCategory()
833
834```
835OH_AVCapability* OH_AVCodec_GetCapabilityByCategory (const char *mime, bool isEncoder, OH_AVCodecCategory category)
836```
837**描述**
838获取指定类别中的编解码器能力。 通过指定类别, 匹配的编解码器仅限于硬件编解码器或软件编解码器。
839
840**系统能力:** SystemCapability.Multimedia.Media.CodecBase
841
842**起始版本:** 10
843
844**参数:**
845
846| 名称 | 描述 |
847| -------- | -------- |
848| mime | MIME类型描述字符串,请参阅[AVCODEC_MIMETYPE](_codec_base.md#变量)。  |
849| isEncoder | 编码器为true,解码器为false。  |
850| category | 编解码器类别。  |
851
852**返回:**
853
854如果现有编解码器匹配,则返回能力实例, 如果指定的MIME类型与任何现有编解码器不匹配,则返回NULL。
855