mirror of
https://github.com/openharmony/multimedia_video_processing_engine.git
synced 2026-07-18 17:14:29 -04:00
@@ -21,6 +21,7 @@
|
||||
#include <unordered_map>
|
||||
#include "static_extension_list.h"
|
||||
#include "vpe_log.h"
|
||||
#include "extension_base.h"
|
||||
namespace {
|
||||
using LibFunctionGetRegisters = std::unordered_map<std::string,
|
||||
OHOS::Media::VideoProcessingEngine::Extension::RegisterExtensionFunc>* (*)();
|
||||
@@ -215,9 +216,9 @@ std::shared_ptr<DetailEnhancerBase> ExtensionManager::CreateDetailEnhancer(uint3
|
||||
ExtensionList ExtensionManager::LoadExtensions() const
|
||||
{
|
||||
ExtensionList extensionList {};
|
||||
LoadDynamicExtensions(extensionList);
|
||||
VPEAlgoErrCode ret = LoadStaticExtensions(extensionList);
|
||||
CHECK_AND_RETURN_RET_LOG(ret == VPE_ALGO_ERR_OK, {}, "Load extension failed");
|
||||
LoadDynamicExtensions(extensionList);
|
||||
return extensionList;
|
||||
}
|
||||
|
||||
@@ -526,6 +527,12 @@ std::shared_ptr<ColorSpaceConverterExtension> ExtensionManager::FindColorSpaceCo
|
||||
return nullptr;
|
||||
}
|
||||
size_t idx = std::get<2>(*(iter->second.cbegin()));
|
||||
for (const auto &cap : iter->second) {
|
||||
if (std::get<0>(cap) == Rank::RANK_HIGH) {
|
||||
idx = std::get<2>(cap);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return std::static_pointer_cast<ColorSpaceConverterExtension>(extensionList[idx]);
|
||||
}
|
||||
|
||||
@@ -557,6 +564,12 @@ std::shared_ptr<MetadataGeneratorExtension> ExtensionManager::FindMetadataGenera
|
||||
CHECK_AND_RETURN_RET_LOG(iter != metadataGeneratorCapabilityMap.cend() && !iter->second.empty(), nullptr,
|
||||
"CSC metadata generator extension is not found");
|
||||
size_t idx = std::get<2>(*(iter->second.cbegin()));
|
||||
for (const auto &cap : iter->second) {
|
||||
if (std::get<0>(cap) == Rank::RANK_HIGH) {
|
||||
idx = std::get<2>(cap);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return std::static_pointer_cast<MetadataGeneratorExtension>(extensionList[idx]);
|
||||
}
|
||||
|
||||
@@ -596,6 +609,12 @@ std::shared_ptr<AihdrEnhancerExtension> ExtensionManager::FindAihdrEnhancerExten
|
||||
CHECK_AND_RETURN_RET_LOG(iter != aihdrEnhancerCapabilityMap.cend() && !iter->second.empty(), nullptr,
|
||||
"Aihdr enhancer extension is not found");
|
||||
size_t idx = std::get<2>(*(iter->second.cbegin()));
|
||||
for (const auto &cap : iter->second) {
|
||||
if (std::get<0>(cap) == Rank::RANK_HIGH) {
|
||||
idx = std::get<2>(cap);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return std::static_pointer_cast<AihdrEnhancerExtension>(extensionList[idx]);
|
||||
}
|
||||
|
||||
@@ -604,7 +623,7 @@ VPEAlgoErrCode ExtensionManager::ExtractColorSpaceConverterCap(const ColorSpaceC
|
||||
{
|
||||
auto inputColorSpaceDesc = cap.inputColorSpaceDesc;
|
||||
auto outputColorSpaceDesc = cap.outputColorSpaceDesc;
|
||||
uint32_t rank = cap.rank;
|
||||
Rank rank = cap.rank;
|
||||
int32_t version = cap.version;
|
||||
for (const auto &[inputPixelFormat, outputPixelFormats] : cap.pixelFormatMap) {
|
||||
for (const auto &outputPixelFormat : outputPixelFormats) {
|
||||
@@ -631,7 +650,7 @@ VPEAlgoErrCode ExtensionManager::ExtractMetadataGeneratorCap(const MetadataGener
|
||||
MetadataGeneratorAlgoType algoType, MetadataGeneratorCapabilityMap& metadataGeneratorCapabilityMap) const
|
||||
{
|
||||
auto colorSpaceDesc = cap.colorspaceDesc;
|
||||
uint32_t rank = cap.rank;
|
||||
Rank rank = cap.rank;
|
||||
int32_t version = cap.version;
|
||||
for (const auto &pixelFormat : cap.pixelFormats) {
|
||||
auto key = std::make_tuple(colorSpaceDesc, pixelFormat, algoType);
|
||||
@@ -664,7 +683,14 @@ VPEAlgoErrCode ExtensionManager::BuildDetailEnhancerCaps(const std::shared_ptr<E
|
||||
auto realExtension = std::static_pointer_cast<DetailEnhancerExtension>(ext);
|
||||
auto capabilities = realExtension->capabilitiesBuilder();
|
||||
for (const auto &level : capabilities.levels) {
|
||||
detailEnhancerCapabilityMap.emplace(level, idx);
|
||||
auto itr = detailEnhancerCapabilityMap.find(level);
|
||||
if (itr == detailEnhancerCapabilityMap.end()) {
|
||||
detailEnhancerCapabilityMap.emplace(level, idx);
|
||||
} else {
|
||||
if (capabilities.rank == Rank::RANK_HIGH) {
|
||||
itr->second = idx;
|
||||
}
|
||||
}
|
||||
}
|
||||
return VPE_ALGO_ERR_OK;
|
||||
}
|
||||
@@ -673,7 +699,7 @@ VPEAlgoErrCode ExtensionManager::ExtractAihdrEnhancerCap(const AihdrEnhancerCapa
|
||||
AihdrEnhancerCapabilityMap& aihdrEnhancerCapabilityMap) const
|
||||
{
|
||||
auto colorSpaceDesc = cap.colorspaceDesc;
|
||||
uint32_t rank = cap.rank;
|
||||
Rank rank = cap.rank;
|
||||
int32_t version = cap.version;
|
||||
for (const auto &pixelFormat : cap.pixelFormats) {
|
||||
auto key = std::make_tuple(colorSpaceDesc, pixelFormat);
|
||||
|
||||
@@ -31,6 +31,11 @@ enum class ExtensionType {
|
||||
AIHDR_ENHANCER
|
||||
};
|
||||
|
||||
enum class Rank : uint32_t {
|
||||
RANK_DEFAULT = 0,
|
||||
RANK_HIGH,
|
||||
};
|
||||
|
||||
struct ExtensionInfo {
|
||||
ExtensionType type {ExtensionType::COLORSPACE_CONVERTER};
|
||||
std::string name;
|
||||
|
||||
@@ -62,7 +62,7 @@ namespace {
|
||||
using ColorSpaceConverterCapabilityMap =
|
||||
std::map<
|
||||
std::tuple<ColorSpaceDescription, GraphicPixelFormat, ColorSpaceDescription, GraphicPixelFormat>,
|
||||
std::vector<std::tuple<uint32_t, int32_t, size_t>>>;
|
||||
std::vector<std::tuple<Rank, int32_t, size_t>>>;
|
||||
using ColorSpaceConverterDisplayCapabilityMap = ColorSpaceConverterCapabilityMap;
|
||||
/*
|
||||
{
|
||||
@@ -76,12 +76,12 @@ using ColorSpaceConverterDisplayCapabilityMap = ColorSpaceConverterCapabilityMap
|
||||
using MetadataGeneratorCapabilityMap =
|
||||
std::map<
|
||||
std::tuple<ColorSpaceDescription, GraphicPixelFormat, MetadataGeneratorAlgoType>,
|
||||
std::vector<std::tuple<uint32_t, int32_t, size_t>>>;
|
||||
std::vector<std::tuple<Rank, int32_t, size_t>>>;
|
||||
using DetailEnhancerCapabilityMap = std::map<uint32_t, size_t>;
|
||||
using AihdrEnhancerCapabilityMap =
|
||||
std::map<
|
||||
std::tuple<ColorSpaceDescription, GraphicPixelFormat>,
|
||||
std::vector<std::tuple<uint32_t, int32_t, size_t>>>;
|
||||
std::vector<std::tuple<Rank, int32_t, size_t>>>;
|
||||
|
||||
using ColorSpaceConverterDisplaySet = std::set<std::shared_ptr<ColorSpaceConverterDisplayBase>>;
|
||||
using ColorSpaceConverterDisplayExtensionSet = std::set<std::shared_ptr<ColorSpaceConverterDisplayExtension>>;
|
||||
|
||||
@@ -14,9 +14,12 @@
|
||||
#ifndef VPE_FRAMEWORK_ALGORITHM_EXTENSION_MANAGER_STATIC_EXTENSION_LIST_H
|
||||
#define VPE_FRAMEWORK_ALGORITHM_EXTENSION_MANAGER_STATIC_EXTENSION_LIST_H
|
||||
|
||||
#include "skia_impl.h"
|
||||
|
||||
namespace OHOS::Media::VideoProcessingEngine::Extension {
|
||||
using RegisterExtensionFunc = void (*)(uintptr_t extensionListAddr);
|
||||
const std::unordered_map<std::string, RegisterExtensionFunc> staticExtensionsRegisterMap = {
|
||||
{ "Skia", RegisterSkiaExtensions },
|
||||
};
|
||||
} // namespace OHOS::Media::VideoProcessingEngine::Extension
|
||||
|
||||
|
||||
Reference in New Issue
Block a user