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