1da853ecaSopenharmony_ci/* 2da853ecaSopenharmony_ci * Copyright (C) 2023 Huawei Device Co., Ltd. 3da853ecaSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4da853ecaSopenharmony_ci * you may not use this file except in compliance with the License. 5da853ecaSopenharmony_ci * You may obtain a copy of the License at 6da853ecaSopenharmony_ci * 7da853ecaSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8da853ecaSopenharmony_ci * 9da853ecaSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10da853ecaSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11da853ecaSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12da853ecaSopenharmony_ci * See the License for the specific language governing permissions and 13da853ecaSopenharmony_ci * limitations under the License. 14da853ecaSopenharmony_ci */ 15da853ecaSopenharmony_ci 16da853ecaSopenharmony_ci#ifndef NATIVE_AVCAPABILITY_H 17da853ecaSopenharmony_ci#define NATIVE_AVCAPABILITY_H 18da853ecaSopenharmony_ci 19da853ecaSopenharmony_ci#include <stdint.h> 20da853ecaSopenharmony_ci#include "native_averrors.h" 21da853ecaSopenharmony_ci#include "native_avformat.h" 22da853ecaSopenharmony_ci 23da853ecaSopenharmony_ci#ifdef __cplusplus 24da853ecaSopenharmony_ciextern "C" { 25da853ecaSopenharmony_ci#endif 26da853ecaSopenharmony_ci 27da853ecaSopenharmony_citypedef struct OH_AVCapability OH_AVCapability; 28da853ecaSopenharmony_ci 29da853ecaSopenharmony_ci/** 30da853ecaSopenharmony_ci * @brief The bitrate mode of encoder. 31da853ecaSopenharmony_ci * @syscap SystemCapability.Multimedia.Media.CodecBase 32da853ecaSopenharmony_ci * @since 10 33da853ecaSopenharmony_ci */ 34da853ecaSopenharmony_citypedef enum OH_BitrateMode { 35da853ecaSopenharmony_ci /* Constant Bit rate mode. */ 36da853ecaSopenharmony_ci BITRATE_MODE_CBR = 0, 37da853ecaSopenharmony_ci /* Variable Bit rate mode. */ 38da853ecaSopenharmony_ci BITRATE_MODE_VBR = 1, 39da853ecaSopenharmony_ci /* Constant Quality mode. */ 40da853ecaSopenharmony_ci BITRATE_MODE_CQ = 2 41da853ecaSopenharmony_ci} OH_BitrateMode; 42da853ecaSopenharmony_ci 43da853ecaSopenharmony_ci/** 44da853ecaSopenharmony_ci * @brief Range contain min and max value 45da853ecaSopenharmony_ci * @syscap SystemCapability.Multimedia.Media.CodecBase 46da853ecaSopenharmony_ci * @since 10 47da853ecaSopenharmony_ci */ 48da853ecaSopenharmony_citypedef struct OH_AVRange { 49da853ecaSopenharmony_ci int32_t minVal; 50da853ecaSopenharmony_ci int32_t maxVal; 51da853ecaSopenharmony_ci} OH_AVRange; 52da853ecaSopenharmony_ci 53da853ecaSopenharmony_ci/** 54da853ecaSopenharmony_ci * @brief The codec category 55da853ecaSopenharmony_ci * @syscap SystemCapability.Multimedia.Media.CodecBase 56da853ecaSopenharmony_ci * @since 10 57da853ecaSopenharmony_ci */ 58da853ecaSopenharmony_citypedef enum OH_AVCodecCategory { 59da853ecaSopenharmony_ci HARDWARE = 0, 60da853ecaSopenharmony_ci SOFTWARE 61da853ecaSopenharmony_ci} OH_AVCodecCategory; 62da853ecaSopenharmony_ci 63da853ecaSopenharmony_ci/** 64da853ecaSopenharmony_ci * @brief The enum of optional features that can be used in specific codec seenarios. 65da853ecaSopenharmony_ci * 66da853ecaSopenharmony_ci * @syscap SystemCapability.Multimedia.Media.CodecBase 67da853ecaSopenharmony_ci * @since 12 68da853ecaSopenharmony_ci */ 69da853ecaSopenharmony_citypedef enum OH_AVCapabilityFeature { 70da853ecaSopenharmony_ci /** Feature for codec supports temporal scalability. It is only used in video encoder. */ 71da853ecaSopenharmony_ci VIDEO_ENCODER_TEMPORAL_SCALABILITY = 0, 72da853ecaSopenharmony_ci /** Feature for codec supports long-term reference. It is only used in video encoder. */ 73da853ecaSopenharmony_ci VIDEO_ENCODER_LONG_TERM_REFERENCE = 1, 74da853ecaSopenharmony_ci /** Feature for codec supports low latency. It is used in video encoder and video decoder. */ 75da853ecaSopenharmony_ci VIDEO_LOW_LATENCY = 2, 76da853ecaSopenharmony_ci} OH_AVCapabilityFeature; 77da853ecaSopenharmony_ci 78da853ecaSopenharmony_ci/** 79da853ecaSopenharmony_ci * @brief Get a system-recommended codec's capability. 80da853ecaSopenharmony_ci * @syscap SystemCapability.Multimedia.Media.CodecBase 81da853ecaSopenharmony_ci * @param mime Mime type 82da853ecaSopenharmony_ci * @param isEncoder True for encoder, false for decoder 83da853ecaSopenharmony_ci * @return Returns a capability instance if an existing codec matches, 84da853ecaSopenharmony_ci * if the specified mime type doesn't match any existing codec, returns NULL. 85da853ecaSopenharmony_ci * @since 10 86da853ecaSopenharmony_ci */ 87da853ecaSopenharmony_ciOH_AVCapability *OH_AVCodec_GetCapability(const char *mime, bool isEncoder); 88da853ecaSopenharmony_ci 89da853ecaSopenharmony_ci/** 90da853ecaSopenharmony_ci * @brief Get a codec's capability within the specified category. By specifying the category, 91da853ecaSopenharmony_ci * the matched codec is limited to either hardware codecs or software codecs. 92da853ecaSopenharmony_ci * @syscap SystemCapability.Multimedia.Media.CodecBase 93da853ecaSopenharmony_ci * @param mime Mime type 94da853ecaSopenharmony_ci * @param isEncoder True for encoder, false for decoder 95da853ecaSopenharmony_ci * @param category The codec category 96da853ecaSopenharmony_ci * @return Returns a capability instance if an existing codec matches, 97da853ecaSopenharmony_ci * if the specified mime type doesn't match any existing codec, returns NULL 98da853ecaSopenharmony_ci * @since 10 99da853ecaSopenharmony_ci */ 100da853ecaSopenharmony_ciOH_AVCapability *OH_AVCodec_GetCapabilityByCategory(const char *mime, bool isEncoder, OH_AVCodecCategory category); 101da853ecaSopenharmony_ci 102da853ecaSopenharmony_ci/** 103da853ecaSopenharmony_ci * @brief Check if the capability instance is describing a hardware codec. 104da853ecaSopenharmony_ci * @syscap SystemCapability.Multimedia.Media.CodecBase 105da853ecaSopenharmony_ci * @param capability Codec capability pointer 106da853ecaSopenharmony_ci * @return Returns true if the capability instance is describing a hardware codec, 107da853ecaSopenharmony_ci * false if the capability instance is describing a software codec 108da853ecaSopenharmony_ci * @since 10 109da853ecaSopenharmony_ci */ 110da853ecaSopenharmony_cibool OH_AVCapability_IsHardware(OH_AVCapability *capability); 111da853ecaSopenharmony_ci 112da853ecaSopenharmony_ci/** 113da853ecaSopenharmony_ci * @brief Get the codec name. 114da853ecaSopenharmony_ci * @syscap SystemCapability.Multimedia.Media.CodecBase 115da853ecaSopenharmony_ci * @param capability Codec capability pointer 116da853ecaSopenharmony_ci * @return Returns codec name string 117da853ecaSopenharmony_ci * @since 10 118da853ecaSopenharmony_ci */ 119da853ecaSopenharmony_ciconst char *OH_AVCapability_GetName(OH_AVCapability *capability); 120da853ecaSopenharmony_ci 121da853ecaSopenharmony_ci/** 122da853ecaSopenharmony_ci * @brief Get the supported max instance number of the codec. 123da853ecaSopenharmony_ci * @syscap SystemCapability.Multimedia.Media.CodecBase 124da853ecaSopenharmony_ci * @param capability Codec capability pointer 125da853ecaSopenharmony_ci * @return Returns the max supported codec instance number 126da853ecaSopenharmony_ci * @since 10 127da853ecaSopenharmony_ci */ 128da853ecaSopenharmony_ciint32_t OH_AVCapability_GetMaxSupportedInstances(OH_AVCapability *capability); 129da853ecaSopenharmony_ci 130da853ecaSopenharmony_ci/** 131da853ecaSopenharmony_ci * @brief Get the encoder's supported bitrate range. 132da853ecaSopenharmony_ci * @syscap SystemCapability.Multimedia.Media.CodecBase 133da853ecaSopenharmony_ci * @param capability Encoder capability pointer. Do not give a decoder capability pointer 134da853ecaSopenharmony_ci * @param bitrateRange Output parameter. Encoder bitrate range 135da853ecaSopenharmony_ci * @return Returns AV_ERR_OK if the execution is successful, 136da853ecaSopenharmony_ci * otherwise returns a specific error code, refer to {@link OH_AVErrCode} 137da853ecaSopenharmony_ci * {@link AV_ERR_INVALID_VAL}, the capability is invalid, or the bitrateRange is nullptr. 138da853ecaSopenharmony_ci * @since 10 139da853ecaSopenharmony_ci */ 140da853ecaSopenharmony_ciOH_AVErrCode OH_AVCapability_GetEncoderBitrateRange(OH_AVCapability *capability, OH_AVRange *bitrateRange); 141da853ecaSopenharmony_ci 142da853ecaSopenharmony_ci/** 143da853ecaSopenharmony_ci * @brief Check if the encoder supports the specific bitrate mode. 144da853ecaSopenharmony_ci * @syscap SystemCapability.Multimedia.Media.CodecBase 145da853ecaSopenharmony_ci * @param capability Encoder capability pointer. Do not give a decoder capability pointer 146da853ecaSopenharmony_ci * @param bitrateMode Bitrate mode 147da853ecaSopenharmony_ci * @return Returns true if the bitrate mode is supported, false if the bitrate mode is not supported 148da853ecaSopenharmony_ci * @since 10 149da853ecaSopenharmony_ci */ 150da853ecaSopenharmony_cibool OH_AVCapability_IsEncoderBitrateModeSupported(OH_AVCapability *capability, OH_BitrateMode bitrateMode); 151da853ecaSopenharmony_ci 152da853ecaSopenharmony_ci/** 153da853ecaSopenharmony_ci * @brief Get the encoder's supported quality range. 154da853ecaSopenharmony_ci * @syscap SystemCapability.Multimedia.Media.CodecBase 155da853ecaSopenharmony_ci * @param capability Encoder capability pointer. Do not give a decoder capability pointer 156da853ecaSopenharmony_ci * @param qualityRange Output parameter. Encoder quality range 157da853ecaSopenharmony_ci * @return Returns AV_ERR_OK if the execution is successful, 158da853ecaSopenharmony_ci * otherwise returns a specific error code, refer to {@link OH_AVErrCode} 159da853ecaSopenharmony_ci * {@link AV_ERR_INVALID_VAL}, the capability is invalid, or the qualityRange is nullptr. 160da853ecaSopenharmony_ci * @since 10 161da853ecaSopenharmony_ci */ 162da853ecaSopenharmony_ciOH_AVErrCode OH_AVCapability_GetEncoderQualityRange(OH_AVCapability *capability, OH_AVRange *qualityRange); 163da853ecaSopenharmony_ci 164da853ecaSopenharmony_ci/** 165da853ecaSopenharmony_ci * @brief Get the encoder's supported encoder complexity range. 166da853ecaSopenharmony_ci * @syscap SystemCapability.Multimedia.Media.CodecBase 167da853ecaSopenharmony_ci * @param capability Encoder capability pointer. Do not give a decoder capability pointer 168da853ecaSopenharmony_ci * @param complexityRange Output parameter. Encoder complexity range 169da853ecaSopenharmony_ci * @return Returns AV_ERR_OK if the execution is successful, 170da853ecaSopenharmony_ci * otherwise returns a specific error code, refer to {@link OH_AVErrCode} 171da853ecaSopenharmony_ci * {@link AV_ERR_INVALID_VAL}, the capability is invalid, or the complexityRange is nullptr. 172da853ecaSopenharmony_ci * @since 10 173da853ecaSopenharmony_ci */ 174da853ecaSopenharmony_ciOH_AVErrCode OH_AVCapability_GetEncoderComplexityRange(OH_AVCapability *capability, OH_AVRange *complexityRange); 175da853ecaSopenharmony_ci 176da853ecaSopenharmony_ci/** 177da853ecaSopenharmony_ci * @brief Get the audio codec's supported sample rates. 178da853ecaSopenharmony_ci * @syscap SystemCapability.Multimedia.Media.CodecBase 179da853ecaSopenharmony_ci * @param capability Audio codec capability pointer. Do not give a video codec capability pointer 180da853ecaSopenharmony_ci * @param sampleRates Output parameter. A pointer to the sample rates array 181da853ecaSopenharmony_ci * @param sampleRateNum Output parameter. The element number of the sample rates array 182da853ecaSopenharmony_ci * @return Returns AV_ERR_OK if the execution is successful, 183da853ecaSopenharmony_ci * otherwise returns a specific error code, refer to {@link OH_AVErrCode} 184da853ecaSopenharmony_ci * {@link AV_ERR_INVALID_VAL}, the capability is invalid, the sampleRates is nullptr, or sampleRateNum is nullptr. 185da853ecaSopenharmony_ci * {@link AV_ERR_UNKNOWN}, unknown error. 186da853ecaSopenharmony_ci * {@link AV_ERR_NO_MEMORY}, internal use memory malloc failed. 187da853ecaSopenharmony_ci * @since 10 188da853ecaSopenharmony_ci */ 189da853ecaSopenharmony_ciOH_AVErrCode OH_AVCapability_GetAudioSupportedSampleRates(OH_AVCapability *capability, const int32_t **sampleRates, 190da853ecaSopenharmony_ci uint32_t *sampleRateNum); 191da853ecaSopenharmony_ci 192da853ecaSopenharmony_ci/** 193da853ecaSopenharmony_ci * @brief Get the audio codec's supported audio channel count range. 194da853ecaSopenharmony_ci * @syscap SystemCapability.Multimedia.Media.CodecBase 195da853ecaSopenharmony_ci * @param capability Audio codec capability pointer. Do not give a video codec capability pointer 196da853ecaSopenharmony_ci * @param channelCountRange Output parameter. Audio channel count range 197da853ecaSopenharmony_ci * @return Returns AV_ERR_OK if the execution is successful, 198da853ecaSopenharmony_ci * otherwise returns a specific error code, refer to {@link OH_AVErrCode} 199da853ecaSopenharmony_ci * {@link AV_ERR_INVALID_VAL}, the capability is invalid, or the channelCountRange is nullptr. 200da853ecaSopenharmony_ci * @since 10 201da853ecaSopenharmony_ci */ 202da853ecaSopenharmony_ciOH_AVErrCode OH_AVCapability_GetAudioChannelCountRange(OH_AVCapability *capability, OH_AVRange *channelCountRange); 203da853ecaSopenharmony_ci 204da853ecaSopenharmony_ci/** 205da853ecaSopenharmony_ci * @brief Get the video codec's supported video width alignment. 206da853ecaSopenharmony_ci * @syscap SystemCapability.Multimedia.Media.CodecBase 207da853ecaSopenharmony_ci * @param capability Video codec capability pointer. Do not give an audio codec capability pointer 208da853ecaSopenharmony_ci * @param widthAlignment Output parameter. Video width alignment 209da853ecaSopenharmony_ci * @return Returns AV_ERR_OK if the execution is successful, 210da853ecaSopenharmony_ci * otherwise returns a specific error code, refer to {@link OH_AVErrCode} 211da853ecaSopenharmony_ci * {@link AV_ERR_INVALID_VAL}, the capability is invalid, or the widthAlignment is nullptr. 212da853ecaSopenharmony_ci * @since 10 213da853ecaSopenharmony_ci */ 214da853ecaSopenharmony_ciOH_AVErrCode OH_AVCapability_GetVideoWidthAlignment(OH_AVCapability *capability, int32_t *widthAlignment); 215da853ecaSopenharmony_ci 216da853ecaSopenharmony_ci/** 217da853ecaSopenharmony_ci * @brief Get the video codec's supported video height alignment. 218da853ecaSopenharmony_ci * @syscap SystemCapability.Multimedia.Media.CodecBase 219da853ecaSopenharmony_ci * @param capability Video codec capability pointer. Do not give an audio codec capability pointer 220da853ecaSopenharmony_ci * @param heightAlignment Output parameter. Video height alignment 221da853ecaSopenharmony_ci * @return Returns AV_ERR_OK if the execution is successful, 222da853ecaSopenharmony_ci * otherwise returns a specific error code, refer to {@link OH_AVErrCode} 223da853ecaSopenharmony_ci * {@link AV_ERR_INVALID_VAL}, the capability is invalid, or the heightAlignment is nullptr. 224da853ecaSopenharmony_ci * @since 10 225da853ecaSopenharmony_ci */ 226da853ecaSopenharmony_ciOH_AVErrCode OH_AVCapability_GetVideoHeightAlignment(OH_AVCapability *capability, int32_t *heightAlignment); 227da853ecaSopenharmony_ci 228da853ecaSopenharmony_ci/** 229da853ecaSopenharmony_ci * @brief Get the video codec's supported video width range for a specific height. 230da853ecaSopenharmony_ci * @syscap SystemCapability.Multimedia.Media.CodecBase 231da853ecaSopenharmony_ci * @param capability video codec capability pointer. Do not give an audio codec capability pointer 232da853ecaSopenharmony_ci * @param height Vertical pixel number of the video 233da853ecaSopenharmony_ci * @param widthRange Output parameter. Video width range 234da853ecaSopenharmony_ci * @return Returns AV_ERR_OK if the execution is successful, 235da853ecaSopenharmony_ci * otherwise returns a specific error code, refer to {@link OH_AVErrCode} 236da853ecaSopenharmony_ci * {@link AV_ERR_INVALID_VAL}, the capability is invalid, the height is not within the supported range 237da853ecaSopenharmony_ci * obtained through {@link OH_AVCapability_GetVideoHeightRange}, or the widthRange is nullptr. 238da853ecaSopenharmony_ci * @since 10 239da853ecaSopenharmony_ci */ 240da853ecaSopenharmony_ciOH_AVErrCode OH_AVCapability_GetVideoWidthRangeForHeight(OH_AVCapability *capability, int32_t height, 241da853ecaSopenharmony_ci OH_AVRange *widthRange); 242da853ecaSopenharmony_ci 243da853ecaSopenharmony_ci/** 244da853ecaSopenharmony_ci * @brief Get the video codec's supported video height range for a specific width. 245da853ecaSopenharmony_ci * @syscap SystemCapability.Multimedia.Media.CodecBase 246da853ecaSopenharmony_ci * @param capability Video codec capability pointer. Do not give an audio codec capability pointer 247da853ecaSopenharmony_ci * @param width Horizontal pixel number of the video 248da853ecaSopenharmony_ci * @param heightRange Output parameter. Video height range 249da853ecaSopenharmony_ci * @return Returns AV_ERR_OK if the execution is successful, 250da853ecaSopenharmony_ci * otherwise returns a specific error code, refer to {@link OH_AVErrCode} 251da853ecaSopenharmony_ci * {@link AV_ERR_INVALID_VAL}, the capability is invalid, the width is not within the supported range 252da853ecaSopenharmony_ci * obtained through {@link OH_AVCapability_GetVideoWidthRange}, or the heightRange is nullptr. 253da853ecaSopenharmony_ci * @since 10 254da853ecaSopenharmony_ci */ 255da853ecaSopenharmony_ciOH_AVErrCode OH_AVCapability_GetVideoHeightRangeForWidth(OH_AVCapability *capability, int32_t width, 256da853ecaSopenharmony_ci OH_AVRange *heightRange); 257da853ecaSopenharmony_ci 258da853ecaSopenharmony_ci/** 259da853ecaSopenharmony_ci * @brief Get the video codec's supported video width range. 260da853ecaSopenharmony_ci * @syscap SystemCapability.Multimedia.Media.CodecBase 261da853ecaSopenharmony_ci * @param capability Video codec capability pointer. DO not give an audio codec capability pointer 262da853ecaSopenharmony_ci * @param widthRange Output parameter. Video width range 263da853ecaSopenharmony_ci * @return Returns AV_ERR_OK if the execution is successful, 264da853ecaSopenharmony_ci * otherwise returns a specific error code, refer to {@link OH_AVErrCode} 265da853ecaSopenharmony_ci * {@link AV_ERR_INVALID_VAL}, the capability is invalid, or the widthRange is nullptr. 266da853ecaSopenharmony_ci * @since 10 267da853ecaSopenharmony_ci */ 268da853ecaSopenharmony_ciOH_AVErrCode OH_AVCapability_GetVideoWidthRange(OH_AVCapability *capability, OH_AVRange *widthRange); 269da853ecaSopenharmony_ci 270da853ecaSopenharmony_ci/** 271da853ecaSopenharmony_ci * @brief Get the video codec's supported video height range. 272da853ecaSopenharmony_ci * @syscap SystemCapability.Multimedia.Media.CodecBase 273da853ecaSopenharmony_ci * @param capability Video codec capability pointer. Do not give an audio codec capability pointer 274da853ecaSopenharmony_ci * @param heightRange Output parameter. Video height range 275da853ecaSopenharmony_ci * @return Returns AV_ERR_OK if the execution is successful, 276da853ecaSopenharmony_ci * otherwise returns a specific error code, refer to {@link OH_AVErrCode} 277da853ecaSopenharmony_ci * {@link AV_ERR_INVALID_VAL}, the capability is invalid, or the heightRange is nullptr. 278da853ecaSopenharmony_ci * @since 10 279da853ecaSopenharmony_ci */ 280da853ecaSopenharmony_ciOH_AVErrCode OH_AVCapability_GetVideoHeightRange(OH_AVCapability *capability, OH_AVRange *heightRange); 281da853ecaSopenharmony_ci 282da853ecaSopenharmony_ci/** 283da853ecaSopenharmony_ci * @brief Check if the video codec supports the specific video size. 284da853ecaSopenharmony_ci * @syscap SystemCapability.Multimedia.Media.CodecBase 285da853ecaSopenharmony_ci * @param capability Video codec capability pointer. Do not give an audio codec capability pointer 286da853ecaSopenharmony_ci * @param width Horizontal pixel number of the video 287da853ecaSopenharmony_ci * @param height Vertical pixel number of the video 288da853ecaSopenharmony_ci * @return Returns true if the video size is supported, false if the video size is not supported 289da853ecaSopenharmony_ci * @since 10 290da853ecaSopenharmony_ci */ 291da853ecaSopenharmony_cibool OH_AVCapability_IsVideoSizeSupported(OH_AVCapability *capability, int32_t width, int32_t height); 292da853ecaSopenharmony_ci 293da853ecaSopenharmony_ci/** 294da853ecaSopenharmony_ci * @brief Get the video codec's supported video frame rate range. 295da853ecaSopenharmony_ci * @syscap SystemCapability.Multimedia.Media.CodecBase 296da853ecaSopenharmony_ci * @param capability Video codec capability pointer. Do not give an audio codec capability pointer 297da853ecaSopenharmony_ci * @param frameRateRange Output parameter. Video frame rate range 298da853ecaSopenharmony_ci * @return Returns AV_ERR_OK if the execution is successful, 299da853ecaSopenharmony_ci * otherwise returns a specific error code, refer to {@link OH_AVErrCode} 300da853ecaSopenharmony_ci * {@link AV_ERR_INVALID_VAL}, the capability is invalid, or the frameRateRange is nullptr. 301da853ecaSopenharmony_ci * @since 10 302da853ecaSopenharmony_ci */ 303da853ecaSopenharmony_ciOH_AVErrCode OH_AVCapability_GetVideoFrameRateRange(OH_AVCapability *capability, OH_AVRange *frameRateRange); 304da853ecaSopenharmony_ci 305da853ecaSopenharmony_ci/** 306da853ecaSopenharmony_ci * @brief Get the Video codec's supported video frame rate range for a specified video size. 307da853ecaSopenharmony_ci * @syscap SystemCapability.Multimedia.Media.CodecBase 308da853ecaSopenharmony_ci * @param capability Video codec capability pointer. Do not give an audio codec capability pointer 309da853ecaSopenharmony_ci * @param width Horizontal pixel number of the video 310da853ecaSopenharmony_ci * @param height Vertical pixel number of the video 311da853ecaSopenharmony_ci * @param frameRateRange Output parameter. Frame rate range 312da853ecaSopenharmony_ci * @return Returns AV_ERR_OK if the execution is successful, 313da853ecaSopenharmony_ci * otherwise returns a specific error code, refer to {@link OH_AVErrCode} 314da853ecaSopenharmony_ci * {@link AV_ERR_INVALID_VAL}, the capability is invalid, the combination of width and height is 315da853ecaSopenharmony_ci * not supported, or the frameRateRange is nullptr. 316da853ecaSopenharmony_ci * @since 10 317da853ecaSopenharmony_ci */ 318da853ecaSopenharmony_ciOH_AVErrCode OH_AVCapability_GetVideoFrameRateRangeForSize(OH_AVCapability *capability, int32_t width, int32_t height, 319da853ecaSopenharmony_ci OH_AVRange *frameRateRange); 320da853ecaSopenharmony_ci 321da853ecaSopenharmony_ci/** 322da853ecaSopenharmony_ci * @brief Check if the video codec supports the specific combination of video size and frame rate. 323da853ecaSopenharmony_ci * @syscap SystemCapability.Multimedia.Media.CodecBase 324da853ecaSopenharmony_ci * @param capability Video codec capability pointer. Do not give an audio codec capability pointer 325da853ecaSopenharmony_ci * @param width Horizontal pixel number of the video 326da853ecaSopenharmony_ci * @param height Vertical pixel number of the video 327da853ecaSopenharmony_ci * @param frameRate Frame number per second 328da853ecaSopenharmony_ci * @return Returns true if the combination of video size and frame rate is supported, 329da853ecaSopenharmony_ci * false if it is not supported 330da853ecaSopenharmony_ci * @since 10 331da853ecaSopenharmony_ci */ 332da853ecaSopenharmony_cibool OH_AVCapability_AreVideoSizeAndFrameRateSupported(OH_AVCapability *capability, int32_t width, int32_t height, 333da853ecaSopenharmony_ci int32_t frameRate); 334da853ecaSopenharmony_ci 335da853ecaSopenharmony_ci/** 336da853ecaSopenharmony_ci * @brief Get the video codec's supported video pixel format. 337da853ecaSopenharmony_ci * @syscap SystemCapability.Multimedia.Media.CodecBase 338da853ecaSopenharmony_ci * @param capability Video codec capability pointer. Do not give an audio codec capability pointer 339da853ecaSopenharmony_ci * @param pixelFormats Output parameter. A pointer to the video pixel format array 340da853ecaSopenharmony_ci * @param pixelFormatNum Output parameter. The element number of the pixel format array 341da853ecaSopenharmony_ci * @return Returns AV_ERR_OK if the execution is successful, 342da853ecaSopenharmony_ci * otherwise returns a specific error code, refer to {@link OH_AVErrCode} 343da853ecaSopenharmony_ci * {@link AV_ERR_INVALID_VAL}, the capability is invalid, the pixelFormats is nullptr, 344da853ecaSopenharmony_ci * or the pixelFormatNum is nullptr. 345da853ecaSopenharmony_ci * {@link AV_ERR_UNKNOWN}, unknown error. 346da853ecaSopenharmony_ci * {@link AV_ERR_NO_MEMORY}, internal use memory malloc failed. 347da853ecaSopenharmony_ci * @since 10 348da853ecaSopenharmony_ci */ 349da853ecaSopenharmony_ciOH_AVErrCode OH_AVCapability_GetVideoSupportedPixelFormats(OH_AVCapability *capability, const int32_t **pixelFormats, 350da853ecaSopenharmony_ci uint32_t *pixelFormatNum); 351da853ecaSopenharmony_ci 352da853ecaSopenharmony_ci/** 353da853ecaSopenharmony_ci * @brief Get the codec's supported profiles. 354da853ecaSopenharmony_ci * @syscap SystemCapability.Multimedia.Media.CodecBase 355da853ecaSopenharmony_ci * @param capability Codec capability pointer 356da853ecaSopenharmony_ci * @param profiles Output parameter. A pointer to the profile array 357da853ecaSopenharmony_ci * @param profileNum Output parameter. The element number of the profile array 358da853ecaSopenharmony_ci * @return Returns AV_ERR_OK if the execution is successful, 359da853ecaSopenharmony_ci * otherwise returns a specific error code, refer to {@link OH_AVErrCode} 360da853ecaSopenharmony_ci * {@link AV_ERR_INVALID_VAL}, the capability is invalid, the profiles is nullptr, or the profileNum is nullptr. 361da853ecaSopenharmony_ci * {@link AV_ERR_UNKNOWN}, unknown error. 362da853ecaSopenharmony_ci * {@link AV_ERR_NO_MEMORY}, internal use memory malloc failed. 363da853ecaSopenharmony_ci * @since 10 364da853ecaSopenharmony_ci */ 365da853ecaSopenharmony_ciOH_AVErrCode OH_AVCapability_GetSupportedProfiles(OH_AVCapability *capability, const int32_t **profiles, 366da853ecaSopenharmony_ci uint32_t *profileNum); 367da853ecaSopenharmony_ci 368da853ecaSopenharmony_ci/** 369da853ecaSopenharmony_ci * @brief Get codec's supported levels for a specific profile. 370da853ecaSopenharmony_ci * @syscap SystemCapability.Multimedia.Media.CodecBase 371da853ecaSopenharmony_ci * @param capability Codec capability pointer 372da853ecaSopenharmony_ci * @param profile Codec profile 373da853ecaSopenharmony_ci * @param levels Output parameter. A pointer to the level array 374da853ecaSopenharmony_ci * @param levelNum Output parameter. The element number of the level array 375da853ecaSopenharmony_ci * @return Returns AV_ERR_OK if the execution is successful, 376da853ecaSopenharmony_ci * otherwise returns a specific error code, refer to {@link OH_AVErrCode} 377da853ecaSopenharmony_ci * {@link AV_ERR_INVALID_VAL}, the capability is invalid, the profile is not within the supported profile array 378da853ecaSopenharmony_ci * obtained through {@link OH_AVCapability_GetSupportedProfiles}, the levels is nullptr, or the levelNum is nullptr. 379da853ecaSopenharmony_ci * {@link AV_ERR_UNKNOWN}, unknown error. 380da853ecaSopenharmony_ci * {@link AV_ERR_NO_MEMORY}, internal use memory malloc failed. 381da853ecaSopenharmony_ci * @since 10 382da853ecaSopenharmony_ci */ 383da853ecaSopenharmony_ciOH_AVErrCode OH_AVCapability_GetSupportedLevelsForProfile(OH_AVCapability *capability, int32_t profile, 384da853ecaSopenharmony_ci const int32_t **levels, uint32_t *levelNum); 385da853ecaSopenharmony_ci 386da853ecaSopenharmony_ci/** 387da853ecaSopenharmony_ci * @brief Check if the codec supports the specific combination of the profile and level. 388da853ecaSopenharmony_ci * @syscap SystemCapability.Multimedia.Media.CodecBase 389da853ecaSopenharmony_ci * @param capability Codec capability pointer 390da853ecaSopenharmony_ci * @param profile Codec profile 391da853ecaSopenharmony_ci * @param level Codec level 392da853ecaSopenharmony_ci * @return Returns true if the combination of profile and level is supported, 393da853ecaSopenharmony_ci * false if it is not supported 394da853ecaSopenharmony_ci * @since 10 395da853ecaSopenharmony_ci */ 396da853ecaSopenharmony_cibool OH_AVCapability_AreProfileAndLevelSupported(OH_AVCapability *capability, int32_t profile, int32_t level); 397da853ecaSopenharmony_ci 398da853ecaSopenharmony_ci/** 399da853ecaSopenharmony_ci * @brief Check if the codec supports the specified feature. 400da853ecaSopenharmony_ci * 401da853ecaSopenharmony_ci * @syscap SystemCapability.Multimedia.Media.CodecBase 402da853ecaSopenharmony_ci * @param capability Codec capability pointer 403da853ecaSopenharmony_ci * @param feature Feature enum, refer to {@link OH_AVCapabilityFeature} for details 404da853ecaSopenharmony_ci * @return Returns true if the feature is supported, false if it is not supported 405da853ecaSopenharmony_ci * @since 12 406da853ecaSopenharmony_ci */ 407da853ecaSopenharmony_cibool OH_AVCapability_IsFeatureSupported(OH_AVCapability *capability, OH_AVCapabilityFeature feature); 408da853ecaSopenharmony_ci 409da853ecaSopenharmony_ci/** 410da853ecaSopenharmony_ci * @brief Get the properties of the specified feature. It should be noted that the life cycle of the OH_AVFormat 411da853ecaSopenharmony_ci * instance pointed to by the return value * needs to be manually released by the caller. 412da853ecaSopenharmony_ci * 413da853ecaSopenharmony_ci * @syscap SystemCapability.Multimedia.Media.CodecBase 414da853ecaSopenharmony_ci * @param capability Codec capability pointer 415da853ecaSopenharmony_ci * @param feature Feature enum, refer to {@link OH_AVCapabilityFeature} for details 416da853ecaSopenharmony_ci * @return Returns a pointer to an OH_AVFormat instance 417da853ecaSopenharmony_ci * @since 12 418da853ecaSopenharmony_ci */ 419da853ecaSopenharmony_ciOH_AVFormat *OH_AVCapability_GetFeatureProperties(OH_AVCapability *capability, OH_AVCapabilityFeature feature); 420da853ecaSopenharmony_ci 421da853ecaSopenharmony_ci#ifdef __cplusplus 422da853ecaSopenharmony_ci} 423da853ecaSopenharmony_ci#endif 424da853ecaSopenharmony_ci#endif // NATIVE_AVCAPABILITY_H