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