Files
drivers_peripheral/codec/hal/include/codec_config_parser.h
T
2022-06-02 15:19:17 +08:00

102 lines
4.1 KiB
C

/*
* Copyright (c) 2022 Shenzhen Kaihong DID Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef HDI_CODECCONFIGPARSER_H
#define HDI_CODECCONFIGPARSER_H
#include "codec_component_type.h"
#include "device_resource_if.h"
#define NODE_VIDEO_HARDWARE_ENCODERS "VideoHwEncoders"
#define NODE_VIDEO_HARDWARE_DECODERS "VideoHwDecoders"
#define NODE_VIDEO_SOFTWARE_ENCODERS "VideoSwEncoders"
#define NODE_VIDEO_SOFTWARE_DECODERS "VideoSwDecoders"
#define NODE_AUDIO_HARDWARE_ENCODERS "AudioHwEncoders"
#define NODE_AUDIO_HARDWARE_DECODERS "AudioHwDecoders"
#define NODE_AUDIO_SOFTWARE_ENCODERS "AudioSwEncoders"
#define NODE_AUDIO_SOFTWARE_DECODERS "AudioSwDecoders"
#define CODEC_CONFIG_KEY_ROLE "role"
#define CODEC_CONFIG_KEY_TYPE "type"
#define CODEC_CONFIG_KEY_NAME "name"
#define CODEC_CONFIG_KEY_SUPPORT_PROFILES "supportProfiles"
#define CODEC_CONFIG_KEY_MAX_INST "maxInst"
#define CODEC_CONFIG_KEY_IS_SOFTWARE_CODEC "isSoftwareCodec"
#define CODEC_CONFIG_KEY_PROCESS_MODE_MASK "processModeMask"
#define CODEC_CONFIG_KEY_CAPS_MASK "capsMask"
#define CODEC_CONFIG_KEY_MIN_BITRATE "minBitRate"
#define CODEC_CONFIG_KEY_MAX_BITRATE "maxBitRate"
#define CODEC_CONFIG_KEY_MIN_WIDTH "minWidth"
#define CODEC_CONFIG_KEY_MIN_HEIGHT "minHeight"
#define CODEC_CONFIG_KEY_MAX_WIDTH "maxWidth"
#define CODEC_CONFIG_KEY_MAX_HEIGHT "maxHeight"
#define CODEC_CONFIG_KEY_WIDTH_ALIGNMENT "widthAlignment"
#define CODEC_CONFIG_KEY_HEIGHT_ALIGNMENT "heightAlignment"
#define CODEC_CONFIG_KEY_MIN_BLOCK_COUNT "minBlockCount"
#define CODEC_CONFIG_KEY_MAX_BLOCK_COUNT "maxBlockCount"
#define CODEC_CONFIG_KEY_MIN_BLOCKS_PER_SECOND "minBlocksPerSecond"
#define CODEC_CONFIG_KEY_MAX_BLOCKS_PER_SECOND "maxBlocksPerSecond"
#define CODEC_CONFIG_KEY_SUPPORT_PIXEL_FMTS "supportPixelFmts"
#define CODEC_CONFIG_KEY_BLOCK_SIZE_WIDTH "blockSizeWidth"
#define CODEC_CONFIG_KEY_BLOCK_SIZE_HEIGHT "blockSizeHeight"
#define CODEC_CONFIG_KEY_MIN_FRAME_RATE "minFrameRate"
#define CODEC_CONFIG_KEY_MAX_FRAME_RATE "maxFrameRate"
#define CODEC_CONFIG_KEY_BITE_RATE_MODE "bitRateMode"
#define CODEC_CONFIG_KEY_MESURED_FRAME_RATE "measuredFrameRate"
#define CODEC_CONFIG_KEY_SAMPLE_FORMATS "sampleFormats"
#define CODEC_CONFIG_KEY_SAMPLE_RATE "sampleRate"
#define CODEC_CONFIG_KEY_CHANNEL_LAYOUTS "channelLayouts"
#define CODEC_CONFIG_KEY_CHANNEL_COUNT "channelCount"
#define CODEC_CAPABLITY_GROUP_NUM 8
typedef struct {
int32_t num;
CodecCompCapability *capablitis;
} CodecCapablityGroup;
typedef struct {
CodecCapablityGroup videoHwEncoderGroup;
CodecCapablityGroup videoHwDecoderGroup;
CodecCapablityGroup videoSwEncoderGroup;
CodecCapablityGroup videoSwDecoderGroup;
CodecCapablityGroup audioHwEncoderGroup;
CodecCapablityGroup audioHwDecoderGroup;
CodecCapablityGroup audioSwEncoderGroup;
CodecCapablityGroup audioSwDecoderGroup;
int32_t total;
bool inited;
} CodecCapablites;
typedef struct {
const char *attrName;
uint32_t *valueAddr;
uint32_t defaultValue;
} ConfigUintNodeAttr;
typedef struct {
const char *attrName;
int32_t *array;
int32_t length;
int32_t endValue;
} ConfigUintArrayNodeAttr;
int32_t LoadCodecCapabilityFromHcs(const struct DeviceResourceNode *node, CodecCapablites *caps);
int32_t ClearCapabilityGroup(CodecCapablites *caps);
#endif // HDI_CODECCONFIGPARSER_H