# AVCapability ## 概述 AVCapability模块提供用于编解码能力查询的函数。 对应的开发指南及样例可参考[获取支持的编解码能力](../../media/avcodec/obtain-supported-codecs.md)。 **系统能力:** SystemCapability.Multimedia.Media.CodecBase **起始版本:** 10 ## 汇总 ### 文件 | 名称 | 描述 | | -------- | -------- | | [native_avcapability.h](native__avcapability_8h.md) | 声明用于编解码能力查询到的Native API。| ### 结构体 | 名称 | 描述 | | -------- | -------- | | struct [OH_AVRange](_o_h___a_v_range.md) | 范围包含最小值和最大值。 | ### 类型定义 | 名称 | 描述 | | -------- | -------- | | typedef struct [OH_AVRange](_o_h___a_v_range.md) [OH_AVRange](#oh_avrange) | 范围包含最小值和最大值。 | | typedef enum [OH_AVCodecCategory](#oh_avcodeccategory-1) [OH_AVCodecCategory](#oh_avcodeccategory) | 编解码器类别。 | | typedef enum [OH_AVCapabilityFeature](#oh_avcapabilityfeature-1) [OH_AVCapabilityFeature](#oh_avcapabilityfeature) | 可以在特定编解码器场景中使用的可选特性。 | ### 枚举 | 名称 | 描述 | | -------- | -------- | | [OH_AVCodecCategory](#oh_avcodeccategory-1) { HARDWARE = 0, SOFTWARE } | 编解码器类别。 | | [OH_AVCapabilityFeature](#oh_avcapabilityfeature-1) {
VIDEO_ENCODER_TEMPORAL_SCALABILITY = 0,
VIDEO_ENCODER_LONG_TERM_REFERENCE = 1,
VIDEO_LOW_LATENCY = 2
} | 可以在特定编解码器场景中使用的可选特性。 | ### 函数 | 名称 | 描述 | | -------- | -------- | | OH_AVCapability \*[OH_AVCodec_GetCapability](#oh_avcodec_getcapability) (const char \*mime, bool isEncoder) | 获取系统推荐的编解码器能力。 | | OH_AVCapability \*[OH_AVCodec_GetCapabilityByCategory](#oh_avcodec_getcapabilitybycategory) (const char \*mime, bool isEncoder, [OH_AVCodecCategory](#oh_avcodeccategory) category) | 获取指定类别中的编解码器能力。 | | bool [OH_AVCapability_IsHardware](#oh_avcapability_ishardware) (OH_AVCapability \*capability) | 检查能力实例是否描述了硬件编解码器。 | | const char \* [OH_AVCapability_GetName](#oh_avcapability_getname) (OH_AVCapability \*capability) | 获取编解码器名称。 | | int32_t [OH_AVCapability_GetMaxSupportedInstances](#oh_avcapability_getmaxsupportedinstances) (OH_AVCapability \*capability) | 获取编解码器支持的最大实例数。 | | [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVCapability_GetEncoderBitrateRange](#oh_avcapability_getencoderbitraterange) (OH_AVCapability \*capability, [OH_AVRange](_o_h___a_v_range.md) \*bitrateRange) | 获取编码器支持的比特率范围。 | | bool [OH_AVCapability_IsEncoderBitrateModeSupported](#oh_avcapability_isencoderbitratemodesupported) (OH_AVCapability \*capability, [OH_BitrateMode](_codec_base.md#oh_bitratemode) bitrateMode) | 检查编码器是否支持特定的比特率模式。 | | [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVCapability_GetEncoderQualityRange](#oh_avcapability_getencoderqualityrange) (OH_AVCapability \*capability, [OH_AVRange](_o_h___a_v_range.md) \*qualityRange) | 获取编码器支持的质量范围。 | | [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVCapability_GetEncoderComplexityRange](#oh_avcapability_getencodercomplexityrange) (OH_AVCapability \*capability, [OH_AVRange](_o_h___a_v_range.md) \*complexityRange) | 获取编码器支持的编码器复杂性范围。 | | [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVCapability_GetAudioSupportedSampleRates](#oh_avcapability_getaudiosupportedsamplerates) (OH_AVCapability \*capability, const int32_t \*\*sampleRates, uint32_t \*sampleRateNum) | 获取音频编解码器支持的采样率。 | | [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVCapability_GetAudioChannelCountRange](#oh_avcapability_getaudiochannelcountrange) (OH_AVCapability \*capability, [OH_AVRange](_o_h___a_v_range.md) \*channelCountRange) | 获取音频编解码器支持的音频通道计数范围。 | | [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVCapability_GetVideoWidthAlignment](#oh_avcapability_getvideowidthalignment) (OH_AVCapability \*capability, int32_t \*widthAlignment) | 获取视频编解码器支持的视频宽度对齐。 | | [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVCapability_GetVideoHeightAlignment](#oh_avcapability_getvideoheightalignment) (OH_AVCapability \*capability, int32_t \*heightAlignment) | 获取视频编解码器支持的视频高度对齐。 | | [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) | 获取指定高度情况下视频编解码器支持的视频宽度范围。 | | OH_AVErrCode [OH_AVCapability_GetVideoHeightRangeForWidth](#oh_avcapability_getvideoheightrangeforwidth) (OH_AVCapability \*capability, int32_t width, [OH_AVRange](_o_h___a_v_range.md) \*heightRange) | 获取指定宽度情况下视频编解码器支持的视频高度范围。 | | [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVCapability_GetVideoWidthRange](#oh_avcapability_getvideowidthrange) (OH_AVCapability \*capability, [OH_AVRange](_o_h___a_v_range.md) \*widthRange) | 获取视频编解码器支持的视频宽度范围。 | | [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVCapability_GetVideoHeightRange](#oh_avcapability_getvideoheightrange) (OH_AVCapability \*capability, [OH_AVRange](_o_h___a_v_range.md) \*heightRange) | 获取视频编解码器支持的视频高度范围。 | | bool [OH_AVCapability_IsVideoSizeSupported](#oh_avcapability_isvideosizesupported) (OH_AVCapability \*capability, int32_t width, int32_t height) | 检查视频编解码器是否支持特定的视频大小。 | | [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVCapability_GetVideoFrameRateRange](#oh_avcapability_getvideoframeraterange) (OH_AVCapability \*capability, [OH_AVRange](_o_h___a_v_range.md) \*frameRateRange) | 获取视频编解码器支持的视频帧率范围。 | | [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) | 获取指定视频大小的视频编解码器支持的视频帧率范围。 | | bool [OH_AVCapability_AreVideoSizeAndFrameRateSupported](#oh_avcapability_arevideosizeandframeratesupported) (OH_AVCapability \*capability, int32_t width, int32_t height, int32_t frameRate) | 检查视频编解码器是否支持视频大小和帧率的特定组合。 | | [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVCapability_GetVideoSupportedPixelFormats](#oh_avcapability_getvideosupportedpixelformats) (OH_AVCapability \*capability, const int32_t \*\*pixelFormats, uint32_t \*pixelFormatNum) | 获取视频编解码器支持的视频像素格式。 | | [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVCapability_GetSupportedProfiles](#oh_avcapability_getsupportedprofiles) (OH_AVCapability \*capability, const int32_t \*\*profiles, uint32_t \*profileNum) | 获取编解码器支持的档次。 | | [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) | 获取特定档次支持的编解码器级别。 | | bool [OH_AVCapability_AreProfileAndLevelSupported](#oh_avcapability_areprofileandlevelsupported) (OH_AVCapability \*capability, int32_t profile, int32_t level) | 检查编解码器是否支持档次和级别的特定组合。 | | bool [OH_AVCapability_IsFeatureSupported](#oh_avcapability_isfeaturesupported) (OH_AVCapability \*capability, [OH_AVCapabilityFeature](#oh_avcapabilityfeature) feature) | 检查编解码器是否支持指定特性。 | | OH_AVFormat \* [OH_AVCapability_GetFeatureProperties](#oh_avcapability_getfeatureproperties) (OH_AVCapability \*capability, [OH_AVCapabilityFeature](#oh_avcapabilityfeature) feature) | 获取指定特性的属性。 需要注意的是,返回值指向的OH_AVFormat实例的生命周期需要调用者手动释放。 | ## 类型定义说明 ### OH_AVCapabilityFeature ``` typedef enum OH_AVCapabilityFeature OH_AVCapabilityFeature ``` **描述** 可以在特定编解码器场景中使用的可选特性。 **系统能力:** SystemCapability.Multimedia.Media.CodecBase **起始版本:** 12 ### OH_AVCodecCategory ``` typedef enum OH_AVCodecCategory OH_AVCodecCategory ``` **描述** 编解码器类别。 **系统能力:** SystemCapability.Multimedia.Media.CodecBase **起始版本:** 10 ### OH_AVRange ``` typedef struct OH_AVRange OH_AVRange ``` **描述** 范围包含最小值和最大值。 **系统能力:** SystemCapability.Multimedia.Media.CodecBase **起始版本:** 10 ## 枚举类型说明 ### OH_AVCapabilityFeature ``` enum OH_AVCapabilityFeature ``` **描述** 可以在特定编解码器场景中使用的可选特性。 **系统能力:** SystemCapability.Multimedia.Media.CodecBase **起始版本:** 12 | 枚举值 | 描述 | | -------- | -------- | | VIDEO_ENCODER_TEMPORAL_SCALABILITY | 编解码器支持时域可分层特性,只用于视频编码场景。 | | VIDEO_ENCODER_LONG_TERM_REFERENCE | 编解码器支持长期参考帧特性,只用于视频编码场景。 | | VIDEO_LOW_LATENCY | 编解码器支持低时延特性,用于视频编码和视频解码场景。 | ### OH_AVCodecCategory ``` enum OH_AVCodecCategory ``` **描述** 编解码器类别。 **系统能力:** SystemCapability.Multimedia.Media.CodecBase **起始版本:** 10 | 枚举值 | 描述 | | -------- | -------- | | HARDWARE | 硬件编解码。 | | SOFTWARE | 软件编解码。 | ## 函数说明 ### OH_AVCapability_AreProfileAndLevelSupported() ``` bool OH_AVCapability_AreProfileAndLevelSupported (OH_AVCapability *capability, int32_t profile, int32_t level) ``` **描述** 检查编解码器是否支持档次和级别的特定组合。 **系统能力:** SystemCapability.Multimedia.Media.CodecBase **起始版本:** 10 **参数:** | 名称 | 描述 | | -------- | -------- | | capability | 编解码能力指针。 | | profile | 编解码器档次。 | | level | 编解码器级别。 | **返回:** 如果支持档次和级别的组合,则返回true。 如果不支持,则为false。 ### OH_AVCapability_AreVideoSizeAndFrameRateSupported() ``` bool OH_AVCapability_AreVideoSizeAndFrameRateSupported (OH_AVCapability *capability, int32_t width, int32_t height, int32_t frameRate) ``` **描述** 检查视频编解码器是否支持视频大小和帧率的特定组合。 **系统能力:** SystemCapability.Multimedia.Media.CodecBase **起始版本:** 10 **参数:** | 名称 | 描述 | | -------- | -------- | | capability | 视频编解码能力指针。不能填入音频编解码器能力指针。 | | width | 视频水平像素数。 | | height | 视频垂直像素数。 | | frameRate | 每秒帧数。 | **返回:** 如果支持视频大小和帧率的组合,则返回true。 如果不支持,则为false。 ### OH_AVCapability_GetAudioChannelCountRange() ``` OH_AVErrCode OH_AVCapability_GetAudioChannelCountRange (OH_AVCapability *capability, OH_AVRange *channelCountRange) ``` **描述** 获取音频编解码器支持的音频通道计数范围。 **系统能力:** SystemCapability.Multimedia.Media.CodecBase **起始版本:** 10 **参数:** | 名称 | 描述 | | -------- | -------- | | capability | 音频编解码能力指针。不能填入视频编解码器能力指针。 | | channelCountRange | 输出参数。音频通道计数范围。 | **返回:** 如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 当能力实例无效,或者指向音频通道计数范围的指针为空指针,返回AV_ERR_INVALID_VAL。 ### OH_AVCapability_GetAudioSupportedSampleRates() ``` OH_AVErrCode OH_AVCapability_GetAudioSupportedSampleRates (OH_AVCapability *capability, const int32_t **sampleRates, uint32_t *sampleRateNum) ``` **描述** 获取音频编解码器支持的采样率。 **系统能力:** SystemCapability.Multimedia.Media.CodecBase **起始版本:** 10 **参数:** | 名称 | 描述 | | -------- | -------- | | capability | 音频编解码能力指针。不能填入视频编解码器能力指针。 | | sampleRates | 输出参数。指向采样率数组的指针。 | | sampleRateNum | 输出参数。采样率数组的元素数目。 | **返回:** 如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 当能力实例无效,或者指向采样率数组的指针为空指针,或者指向采样率数组的元素数目的指针为空指针,返回AV_ERR_INVALID_VAL。 当遇到未知错误,返回AV_ERR_UNKNOWN。 当内部使用内存分配失败,返回AV_ERR_NO_MEMORY。 ### OH_AVCapability_GetEncoderBitrateRange() ``` OH_AVErrCode OH_AVCapability_GetEncoderBitrateRange (OH_AVCapability *capability, OH_AVRange *bitrateRange) ``` **描述** 获取编码器支持的比特率范围。 **系统能力:** SystemCapability.Multimedia.Media.CodecBase **起始版本:** 10 **参数:** | 名称 | 描述 | | -------- | -------- | | capability | 编码器能力指针。不能填入解码器能力指针。 | | bitrateRange | 输出参数。编码器码率范围。 | **返回:** 如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 当能力实例无效,或者指向编码器码率范围的指针为空指针,返回AV_ERR_INVALID_VAL。 ### OH_AVCapability_GetEncoderComplexityRange() ``` OH_AVErrCode OH_AVCapability_GetEncoderComplexityRange (OH_AVCapability *capability, OH_AVRange *complexityRange) ``` **描述** 获取编码器支持的编码器复杂性范围。 **系统能力:** SystemCapability.Multimedia.Media.CodecBase **起始版本:** 10 **参数:** | 名称 | 描述 | | -------- | -------- | | capability | 编码器能力指针。不能填入解码器能力指针。 | | complexityRange | 输出参数。编码器复杂度范围。 | **返回:** 如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 当能力实例无效,或者指向编码器复杂度范围的指针为空指针,返回AV_ERR_INVALID_VAL。 ### OH_AVCapability_GetEncoderQualityRange() ``` OH_AVErrCode OH_AVCapability_GetEncoderQualityRange (OH_AVCapability *capability, OH_AVRange *qualityRange) ``` **描述** 获取编码器支持的质量范围。 **系统能力:** SystemCapability.Multimedia.Media.CodecBase **起始版本:** 10 **参数:** | 名称 | 描述 | | -------- | -------- | | capability | 编码器能力指针。不能填入解码器能力指针。 | | qualityRange | 输出参数。编码器质量范围。 | **返回:** 如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 当能力实例无效,或者指向编码器质量范围的指针为空指针,返回AV_ERR_INVALID_VAL。 ### OH_AVCapability_GetFeatureProperties() ``` OH_AVFormat* OH_AVCapability_GetFeatureProperties (OH_AVCapability *capability, OH_AVCapabilityFeature feature) ``` **描述** 获取指定特性的属性。 需要注意的是,返回值指向的OH_AVFormat实例的生命周期需要调用者手动释放。 **系统能力:** SystemCapability.Multimedia.Media.CodecBase **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | capability | 编解码能力指针。 | | feature | 编解码特性,请参阅[OH_AVCapabilityFeature](#oh_avcapabilityfeature)。 | **返回:** 返回指向OH_AVFormat实例的指针。 ### OH_AVCapability_GetMaxSupportedInstances() ``` int32_t OH_AVCapability_GetMaxSupportedInstances (OH_AVCapability *capability) ``` **描述** 获取编解码器支持的最大实例数。 **系统能力:** SystemCapability.Multimedia.Media.CodecBase **起始版本:** 10 **参数:** | 名称 | 描述 | | -------- | -------- | | capability | 编解码能力指针。 | **返回:** 返回支持的最大编解码器实例数。 ### OH_AVCapability_GetName() ``` const char* OH_AVCapability_GetName (OH_AVCapability *capability) ``` **描述** 获取编解码器名称。 **系统能力:** SystemCapability.Multimedia.Media.CodecBase **起始版本:** 10 **参数:** | 名称 | 描述 | | -------- | -------- | | capability | 编解码能力指针。 | **返回:** 返回编解码器名称字符串。 ### OH_AVCapability_GetSupportedLevelsForProfile() ``` OH_AVErrCode OH_AVCapability_GetSupportedLevelsForProfile (OH_AVCapability *capability, int32_t profile, const int32_t **levels, uint32_t *levelNum) ``` **描述** 获取特定档次支持的编解码器级别。 **系统能力:** SystemCapability.Multimedia.Media.CodecBase **起始版本:** 10 **参数:** | 名称 | 描述 | | -------- | -------- | | capability | 编解码能力指针。 | | profile | 编解码器档次。 | | levels | 输出参数。指向级别数组的指针。 | | levelNum | 输出参数。级别数组的元素数目。 | **返回:** 如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 当能力实例无效,或者档次不在通过[OH_AVCapability_GetSupportedProfiles](#oh_avcapability_getsupportedprofiles)获取支持的档次数组中, 或者指向级别数组的指针为空指针,或者指向级别数组的元素数目的指针为空指针,返回AV_ERR_INVALID_VAL。 当遇到未知错误,返回AV_ERR_UNKNOWN。 当内部使用内存分配失败,返回AV_ERR_NO_MEMORY。 ### OH_AVCapability_GetSupportedProfiles() ``` OH_AVErrCode OH_AVCapability_GetSupportedProfiles (OH_AVCapability *capability, const int32_t **profiles, uint32_t *profileNum) ``` **描述** 获取编解码器支持的档次。 **系统能力:** SystemCapability.Multimedia.Media.CodecBase **起始版本:** 10 **参数:** | 名称 | 描述 | | -------- | -------- | | capability | 编解码能力指针。 | | profiles | 输出参数。指向档次数组的指针。 | | profileNum | 输出参数。档次数组的元素数目。 | **返回:** 如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 当能力实例无效,或者指向档次数组的指针为空指针,或者指向档次数组的元素数目的指针为空指针,返回AV_ERR_INVALID_VAL。 当遇到未知错误,返回AV_ERR_UNKNOWN。 当内部使用内存分配失败,返回AV_ERR_NO_MEMORY。 ### OH_AVCapability_GetVideoFrameRateRange() ``` OH_AVErrCode OH_AVCapability_GetVideoFrameRateRange (OH_AVCapability *capability, OH_AVRange *frameRateRange) ``` **描述** 获取视频编解码器支持的视频帧率范围。 **系统能力:** SystemCapability.Multimedia.Media.CodecBase **起始版本:** 10 **参数:** | 名称 | 描述 | | -------- | -------- | | capability | 视频编解码能力指针。不能填入音频编解码器能力指针。 | | frameRateRange | 输出参数。视频帧率范围。 | **返回:** 如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 当能力实例无效,或者指向视频帧率范围的指针为空指针,返回AV_ERR_INVALID_VAL。 ### OH_AVCapability_GetVideoFrameRateRangeForSize() ``` OH_AVErrCode OH_AVCapability_GetVideoFrameRateRangeForSize (OH_AVCapability *capability, int32_t width, int32_t height, OH_AVRange *frameRateRange) ``` **描述** 获取指定视频大小的视频编解码器支持的视频帧率范围。 **系统能力:** SystemCapability.Multimedia.Media.CodecBase **起始版本:** 10 **参数:** | 名称 | 描述 | | -------- | -------- | | capability | 视频编解码能力指针。不能填入音频编解码器能力指针。 | | width | 视频水平像素数。 | | height | 视频垂直像素数。 | | frameRateRange | 输出参数。视频帧率范围。 | **返回:** 如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 当能力实例无效,或者宽度和高度组合不支持,或者指向帧率范围的指针为空指针,返回AV_ERR_INVALID_VAL。 ### OH_AVCapability_GetVideoHeightAlignment() ``` OH_AVErrCode OH_AVCapability_GetVideoHeightAlignment (OH_AVCapability *capability, int32_t *heightAlignment) ``` **描述** 获取视频编解码器支持的视频高度对齐。 **系统能力:** SystemCapability.Multimedia.Media.CodecBase **起始版本:** 10 **参数:** | 名称 | 描述 | | -------- | -------- | | capability | 视频编解码能力指针。不能填入音频编解码器能力指针。 | | heightAlignment | 输出参数。视频高度对齐。 | **返回:** 如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 当能力实例无效,或者指向视频高度对齐的指针为空指针,返回AV_ERR_INVALID_VAL。 ### OH_AVCapability_GetVideoHeightRange() ``` OH_AVErrCode OH_AVCapability_GetVideoHeightRange (OH_AVCapability *capability, OH_AVRange *heightRange) ``` **描述** 获取视频编解码器支持的视频高度范围。 **系统能力:** SystemCapability.Multimedia.Media.CodecBase **起始版本:** 10 **参数:** | 名称 | 描述 | | -------- | -------- | | capability | 视频编解码能力指针。不能填入音频编解码器能力指针。 | | heightRange | 输出参数。视频高度范围。 | **返回:** 如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 当能力实例无效,或者指向视频高度范围的指针为空指针,返回AV_ERR_INVALID_VAL。 ### OH_AVCapability_GetVideoHeightRangeForWidth() ``` OH_AVErrCode OH_AVCapability_GetVideoHeightRangeForWidth (OH_AVCapability *capability, int32_t width, OH_AVRange *heightRange) ``` **描述** 获取指定宽度情况下视频编解码器支持的视频高度范围。 **系统能力:** SystemCapability.Multimedia.Media.CodecBase **起始版本:** 10 **参数:** | 名称 | 描述 | | -------- | -------- | | capability | 视频编解码能力指针。不能填入音频编解码器能力指针。 | | width | 视频水平像素数。 | | heightRange | 输出参数。视频高度范围。 | **返回:** 如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 当能力实例无效,或者宽度不在通过[OH_AVCapability_GetVideoWidthRange](#oh_avcapability_getvideowidthrange)获取支持的宽度范围中, 或者指向高度范围的指针为空指针,返回AV_ERR_INVALID_VAL。 ### OH_AVCapability_GetVideoSupportedPixelFormats() ``` OH_AVErrCode OH_AVCapability_GetVideoSupportedPixelFormats (OH_AVCapability *capability, const int32_t **pixelFormats, uint32_t *pixelFormatNum) ``` **描述** 获取视频编解码器支持的视频像素格式。 **系统能力:** SystemCapability.Multimedia.Media.CodecBase **起始版本:** 10 **参数:** | 名称 | 描述 | | -------- | -------- | | capability | 视频编解码能力指针。不能填入音频编解码器能力指针。 | | pixelFormats | 输出参数。指向视频像素格式数组的指针。 | | pixelFormatNum | 输出参数。像素格式数组的元素数目。 | **返回:** 如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 当能力实例无效,或者指向视频像素格式数组的指针为空指针,或者指向像素格式数组的元素数目的指针为空指针,返回AV_ERR_INVALID_VAL。 当遇到未知错误,返回AV_ERR_UNKNOWN。 当内部使用内存分配失败,返回AV_ERR_NO_MEMORY。 ### OH_AVCapability_GetVideoWidthAlignment() ``` OH_AVErrCode OH_AVCapability_GetVideoWidthAlignment (OH_AVCapability *capability, int32_t *widthAlignment) ``` **描述** 获取视频编解码器支持的视频宽度对齐。 **系统能力:** SystemCapability.Multimedia.Media.CodecBase **起始版本:** 10 **参数:** | 名称 | 描述 | | -------- | -------- | | capability | 视频编解码能力指针。不能填入音频编解码器能力指针。 | | widthAlignment | 输出参数。视频宽度对齐。 | **返回:** 如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 当能力实例无效,或者指向视频宽度对齐的指针为空指针,返回AV_ERR_INVALID_VAL。 ### OH_AVCapability_GetVideoWidthRange() ``` OH_AVErrCode OH_AVCapability_GetVideoWidthRange (OH_AVCapability *capability, OH_AVRange *widthRange) ``` **描述** 获取视频编解码器支持的视频宽度范围。 **系统能力:** SystemCapability.Multimedia.Media.CodecBase **起始版本:** 10 **参数:** | 名称 | 描述 | | -------- | -------- | | capability | 视频编解码能力指针。不能填入音频编解码器能力指针。 | | widthRange | 输出参数。视频宽度范围。 | **返回:** 如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 当能力实例无效,或者指向视频宽度范围的指针为空指针,返回AV_ERR_INVALID_VAL。 ### OH_AVCapability_GetVideoWidthRangeForHeight() ``` OH_AVErrCode OH_AVCapability_GetVideoWidthRangeForHeight (OH_AVCapability *capability, int32_t height, OH_AVRange *widthRange) ``` **描述** 获取指定高度情况下视频编解码器支持的视频宽度范围。 **系统能力:** SystemCapability.Multimedia.Media.CodecBase **起始版本:** 10 **参数:** | 名称 | 描述 | | -------- | -------- | | capability | 视频编解码能力指针。不能填入音频编解码器能力指针。 | | height | 视频垂直像素数。 | | widthRange | 输出参数。视频宽度范围。 | **返回:** 如果执行成功,则返回AV_ERR_OK, 否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 当能力实例无效,或者高度不在通过[OH_AVCapability_GetVideoHeightRange](#oh_avcapability_getvideoheightrange)获取支持的高度范围中, 或者指向宽度范围的指针为空指针,返回AV_ERR_INVALID_VAL。 ### OH_AVCapability_IsEncoderBitrateModeSupported() ``` bool OH_AVCapability_IsEncoderBitrateModeSupported (OH_AVCapability *capability, OH_BitrateMode bitrateMode) ``` **描述** 检查编码器是否支持特定的比特率模式。 **系统能力:** SystemCapability.Multimedia.Media.CodecBase **起始版本:** 10 **参数:** | 名称 | 描述 | | -------- | -------- | | capability | 编码器能力指针。不能填入解码器能力指针。 | | bitrateMode | 比特率模式。 | **返回:** 如果支持该比特率模式,则返回true;如果不支持该比特率模式,则返回false。 ### OH_AVCapability_IsFeatureSupported() ``` bool OH_AVCapability_IsFeatureSupported (OH_AVCapability *capability, OH_AVCapabilityFeature feature) ``` **描述** 检查编解码器是否支持指定特性。 **系统能力:** SystemCapability.Multimedia.Media.CodecBase **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | capability | 编解码能力指针。 | | feature | 编解码特性,请参阅[OH_AVCapabilityFeature](#oh_avcapabilityfeature)。 | **返回:** 如果支持该特性,则返回true。如果不支持,则为false。 ### OH_AVCapability_IsHardware() ``` bool OH_AVCapability_IsHardware (OH_AVCapability *capability) ``` **描述** 检查能力实例是否描述了硬件编解码器。 **系统能力:** SystemCapability.Multimedia.Media.CodecBase **起始版本:** 10 **参数:** | 名称 | 描述 | | -------- | -------- | | capability | 编解码能力指针。 | **返回:** 如果能力实例描述的是硬件编解码器,则返回true, 如果功能实例描述的是软件编解码器,则为false。 ### OH_AVCapability_IsVideoSizeSupported() ``` bool OH_AVCapability_IsVideoSizeSupported (OH_AVCapability *capability, int32_t width, int32_t height) ``` **描述** 检查视频编解码器是否支持特定的视频大小。 **系统能力:** SystemCapability.Multimedia.Media.CodecBase **起始版本:** 10 **参数:** | 名称 | 描述 | | -------- | -------- | | capability | 视频编解码能力指针。不能填入音频编解码器能力指针。 | | width | 视频水平像素数。 | | height | 视频垂直像素数。 | **返回:** 如果支持该视频大小,则返回true,如果不支持该视频大小,则返回false。 ### OH_AVCodec_GetCapability() ``` OH_AVCapability* OH_AVCodec_GetCapability (const char *mime, bool isEncoder) ``` **描述** 获取系统推荐的编解码器能力。 **系统能力:** SystemCapability.Multimedia.Media.CodecBase **起始版本:** 10 **参数:** | 名称 | 描述 | | -------- | -------- | | mime | MIME类型描述字符串,请参阅**AVCODEC_MIME_TYPE**。 | | isEncoder | 编码器为true,解码器为false。 | **返回:** 如果现有编解码器匹配,则返回能力实例, 如果指定的MIME类型与任何现有编解码器不匹配,则返回NULL。 ### OH_AVCodec_GetCapabilityByCategory() ``` OH_AVCapability* OH_AVCodec_GetCapabilityByCategory (const char *mime, bool isEncoder, OH_AVCodecCategory category) ``` **描述** 获取指定类别中的编解码器能力。 通过指定类别, 匹配的编解码器仅限于硬件编解码器或软件编解码器。 **系统能力:** SystemCapability.Multimedia.Media.CodecBase **起始版本:** 10 **参数:** | 名称 | 描述 | | -------- | -------- | | mime | MIME类型描述字符串,请参阅[AVCODEC_MIMETYPE](_codec_base.md#变量)。 | | isEncoder | 编码器为true,解码器为false。 | | category | 编解码器类别。 | **返回:** 如果现有编解码器匹配,则返回能力实例, 如果指定的MIME类型与任何现有编解码器不匹配,则返回NULL。