1/* 2 * Copyright (c) 2022 Shenzhen Kaihong DID Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16#ifndef HDI_CODECCONFIGPARSER_H 17#define HDI_CODECCONFIGPARSER_H 18 19#include "codec_component_type.h" 20#include "device_resource_if.h" 21 22#define NODE_VIDEO_HARDWARE_ENCODERS "VideoHwEncoders" 23#define NODE_VIDEO_HARDWARE_DECODERS "VideoHwDecoders" 24#define NODE_VIDEO_SOFTWARE_ENCODERS "VideoSwEncoders" 25#define NODE_VIDEO_SOFTWARE_DECODERS "VideoSwDecoders" 26#define NODE_AUDIO_HARDWARE_ENCODERS "AudioHwEncoders" 27#define NODE_AUDIO_HARDWARE_DECODERS "AudioHwDecoders" 28#define NODE_AUDIO_SOFTWARE_ENCODERS "AudioSwEncoders" 29#define NODE_AUDIO_SOFTWARE_DECODERS "AudioSwDecoders" 30 31#define CODEC_CONFIG_KEY_ROLE "role" 32#define CODEC_CONFIG_KEY_TYPE "type" 33#define CODEC_CONFIG_KEY_NAME "name" 34#define CODEC_CONFIG_KEY_SUPPORT_PROFILES "supportProfiles" 35#define CODEC_CONFIG_KEY_MAX_INST "maxInst" 36#define CODEC_CONFIG_KEY_IS_SOFTWARE_CODEC "isSoftwareCodec" 37#define CODEC_CONFIG_KEY_PROCESS_MODE_MASK "processModeMask" 38#define CODEC_CONFIG_KEY_CAPS_MASK "capsMask" 39#define CODEC_CONFIG_KEY_MIN_BITRATE "minBitRate" 40#define CODEC_CONFIG_KEY_MAX_BITRATE "maxBitRate" 41 42#define CODEC_CONFIG_KEY_MIN_WIDTH "minWidth" 43#define CODEC_CONFIG_KEY_MIN_HEIGHT "minHeight" 44#define CODEC_CONFIG_KEY_MAX_WIDTH "maxWidth" 45#define CODEC_CONFIG_KEY_MAX_HEIGHT "maxHeight" 46#define CODEC_CONFIG_KEY_WIDTH_ALIGNMENT "widthAlignment" 47#define CODEC_CONFIG_KEY_HEIGHT_ALIGNMENT "heightAlignment" 48#define CODEC_CONFIG_KEY_MIN_BLOCK_COUNT "minBlockCount" 49#define CODEC_CONFIG_KEY_MAX_BLOCK_COUNT "maxBlockCount" 50#define CODEC_CONFIG_KEY_MIN_BLOCKS_PER_SECOND "minBlocksPerSecond" 51#define CODEC_CONFIG_KEY_MAX_BLOCKS_PER_SECOND "maxBlocksPerSecond" 52#define CODEC_CONFIG_KEY_SUPPORT_PIXEL_FMTS "supportPixelFmts" 53#define CODEC_CONFIG_KEY_BLOCK_SIZE_WIDTH "blockSizeWidth" 54#define CODEC_CONFIG_KEY_BLOCK_SIZE_HEIGHT "blockSizeHeight" 55#define CODEC_CONFIG_KEY_MIN_FRAME_RATE "minFrameRate" 56#define CODEC_CONFIG_KEY_MAX_FRAME_RATE "maxFrameRate" 57#define CODEC_CONFIG_KEY_BITE_RATE_MODE "bitRateMode" 58#define CODEC_CONFIG_KEY_MESURED_FRAME_RATE "measuredFrameRate" 59#define CODEC_CONFIG_KEY_CAN_SWAP_WIDTH_HEIGHT "canSwapWidthHeight" 60 61#define CODEC_CONFIG_KEY_SAMPLE_FORMATS "sampleFormats" 62#define CODEC_CONFIG_KEY_SAMPLE_RATE "sampleRate" 63#define CODEC_CONFIG_KEY_CHANNEL_LAYOUTS "channelLayouts" 64#define CODEC_CONFIG_KEY_CHANNEL_COUNT "channelCount" 65 66#define CODEC_CAPABLITY_GROUP_NUM 8 67 68typedef struct { 69 int32_t num; 70 CodecCompCapability *capablitis; 71} CodecCapablityGroup; 72 73typedef struct { 74 CodecCapablityGroup videoHwEncoderGroup; 75 CodecCapablityGroup videoHwDecoderGroup; 76 CodecCapablityGroup videoSwEncoderGroup; 77 CodecCapablityGroup videoSwDecoderGroup; 78 CodecCapablityGroup audioHwEncoderGroup; 79 CodecCapablityGroup audioHwDecoderGroup; 80 CodecCapablityGroup audioSwEncoderGroup; 81 CodecCapablityGroup audioSwDecoderGroup; 82 int32_t total; 83 bool inited; 84} CodecCapablites; 85 86typedef struct { 87 const char *attrName; 88 uint32_t *valueAddr; 89 uint32_t defaultValue; 90} ConfigUintNodeAttr; 91 92typedef struct { 93 const char *attrName; 94 int32_t *array; 95 int32_t length; 96 int32_t endValue; 97} ConfigUintArrayNodeAttr; 98 99int32_t LoadCodecCapabilityFromHcs(const struct DeviceResourceNode *node, CodecCapablites *caps); 100int32_t ClearCapabilityGroup(CodecCapablites *caps); 101 102#endif // HDI_CODECCONFIGPARSER_H 103