vpe ani code

Signed-off-by: pxh123456 <pengxiaohang@huawei.com>
This commit is contained in:
pxh123456
2026-01-22 21:19:21 +08:00
parent 5cc8e74ca7
commit a3694559b6
2 changed files with 67 additions and 0 deletions
@@ -47,6 +47,24 @@ public:
taihe::PixelMap EnhanceDetailWithRes(taiheImage::weak::PixelMap sourceImage, double scale,
optional_view<taiheVpe::QualityLevel> level);
};
private:
struct DetailEnhanceContext {
double xArg{};
double yArg{};
int32_t qualityLevel{};
std::shared_ptr<PixelMap> inputPixelMap;
std::shared_ptr<PixelMap> outputPixelMap;
}
void ParseDetailEnhanceParameter(std::unique_ptr<DetailEnhanceContext>& detailContext,
taiheImage::weak::PixelMap sourceImage, int width, int height, optional_view<taiheVpe::QualityLevel> level);
void ParseDetailEnhanceParameter(std::unique_ptr<DetailEnhanceContext>& detailContext,
taiheImage::weak::PixelMap sourceImage, double scale, optional_view<taiheVpe::QualityLevel> level);
void ParseDetailEnhanceParameter(std::unique_ptr<DetailEnhanceContext>& detailContext,
taiheImage::weak::PixelMap sourceImage, double scale, optional_view<taiheVpe::QualityLevel> level);
std::shared_ptr<PixelMap> DetailEnhanceImpl(DetailEnhanceContext* context);
}
#endif
@@ -38,6 +38,55 @@ namespace ANI::Vpe {
void InitializeEnvironment() {}
void DeinitializeEnvironment() {}
void ImageProcessorImpl::ParseDetailEnhanceParameter(std::unique_ptr<DetailEnhanceContext>& detailContext,
taiheImage::weak::PixelMap sourceImage, int width, int height, optional_view<taiheVpe::QualityLevel> level)
{
if (detailContext == nullptr) {
VPE_LOGE("detailContext == nullptr");
return;
}
ANI::Image:PixelMapImp* pixelMapImpl = reinterpret_cast<ANI::Image::PixelMapImpl*>(sourceImage->GetImplPtr());
detailContext->xArg = width;
detailContext->yArg = height;
if (level.has_value()) {
detailContext->qualityLevel = level.value();
}
detailContext->inputPixelMap = pixelMapImpl->GetNativePtr();
}
void ImageProcessorImpl::ParseDetailEnhanceParameter(std::unique_ptr<DetailEnhanceContext>& detailContext,
taiheImage::weak::PixelMap sourceImage, double scale, optional_view<taiheVpe::QualityLevel> level)
{
if (detailContext == nullptr) {
VPE_LOGE("detailContext == nullptr");
return;
}
ANI::Image:PixelMapImp* pixelMapImpl = reinterpret_cast<ANI::Image::PixelMapImpl*>(sourceImage->GetImplPtr());
detailContext->xArg = inputPixelMap->GetWidth() * scale;
detailContext->yArg = inputPixelMap->GetHeight() * scale;
if (level.has_value()) {
detailContext->qualityLevel = level.value();
}
detailContext->inputPixelMap = pixelMapImpl->GetNativePtr();
}
void ImageProcessorImpl::ParseDetailEnhanceParameter(std::unique_ptr<DetailEnhanceContext>& detailContext,
taiheImage::weak::PixelMap sourceImage, double scale, optional_view<taiheVpe::QualityLevel> level)
{
std::shared_ptr<OHOS::Media::PixelMap> outputPixelMap = DetailEnhanceImpl(detailContext.get());
detailContext->inputPixelMap = nullptr; // 解引用防止内存泄漏
if (outputPixelMap == nullptr) {
VPE_LOGE("DetailEnhanceImpl processed failed");
return nullptr;
}
return outputPixelMap;
}
std::shared_ptr<PixelMap> ImageProcessorImpl::DetailEnhanceImpl(DetailEnhanceContext* context)
{
return nullptr;
}
taiheImage::PixelMap ImageProcessorImpl::EnhanceDetailWithRes(taiheImage::weak::PixelMap sourceImage, int width,
int height, optional_view<taiheVpe::QualityLevel> level)
{