文档管理中心

调用C接口

本插件提供C封装的接口函数库,可以通过“dlopen/dlsym/dlclose”命令进行API的加载、执行、卸载,将插件集成到游戏项目中。

头文件依赖

在项目中需要两个头文件。

  • OSRPluginCommon.h,定义插件调用中的枚举型和结构体。
  • OSRPluginInterface.h,定义C API接口。

链接库文件

进行项目编译时,需要确保以下动态库文件正确链接到项目中。

libthirdpartyengine_plugin_offlineSupRes.so

资源文件目录

在调用离线超分功能之前,务必调用函数CSetAssetsDir设置资源文件目录,将其设置为资源文件实际所在路径。

void CSetAssetsDir(const char* assetsPath)

调用以下API检查目录是否已经设置为正确值。

const char* CGetAssetsDir()

初始化和反初始化

成对出现的初始化和反初始化API,分别用于任务开始前的环境准备和任务完成后的环境释放。

void CInitialize()
void CUninitialize()

如果需要连续多次执行超分任务,建议初始化后让环境继续驻留,直到任务结束时再将其释放。

查询能力支持

对于不同画面(格式、尺寸)输入、不同机型平台,超分能力的支持程度不同,建议在调用前进行查询,其接口如下。

void CQuerySuperSamplingPluginConfig(int inW, int inH, CGKit::PixelFormat inFormat, CGKit::PluginConfig &pluginConfig)
void CQueryImageEnhancingPluginConfig(int inW, int inH, CGKit::PixelFormat inFormat, CGKit::PluginConfig &pluginConfig)

查询结果将存储在PluginConfig结构体中。PluginConfig结构体记录了超分输出的图像尺寸和格式,在后续的超分接口调用中,需要根据这些信息对BufferDescriptor结构体进行配置。

在离线超分插件命名中,SuperSampling表示AI超分能力,ImageEnhancing表示图像处理超分能力。

说明
如果返回的width、height、estimatedCostTime任何一个为-1,说明插件不支持当前机型、尺寸或格式。插件对输入数据的支持边界如下。
  • AI超分:长边不超过2800,短边不超过1400,长短边均不小于600,长短边比不超过21:9,当前仅支持RGB888和RGBA8888输入。
  • 图像处理超分:长边不超过3300,短边不超过1440,长短边均不小于600,长短边比不超过21:9,当前仅支持RGB888和RGBA8888输入。

同步调用AI超分能力

AI超分的同步调用接口请参见CSuperSamplingSyncExecute。执行超分功能成功时,接口将返回true值,输出图片保存在outBuffer->addr指向的内存区域。

bool CSuperSamplingSyncExecute(const CGKit::BufferDescriptor *inBuffer, const CGKit::BufferDescriptor *outBuffer, int timeOut)
说明

outBuffer->addr需要根据查询结果进行正确的内存分配,否则会引起内存越界等问题,调用其他类似API接口也需要注意这一点。

同步调用图像处理超分能力

图像处理能力提供了同步调用接口。

bool CImageEnhancingSyncExecute(const CGKit::BufferDescriptor *inBuffer, const CGKit::BufferDescriptor *outBuffer, float sharpenStrength, bool toneMapping, int timeOut)

关于参数说明请参见CImageEnhancingSyncExecute。执行超分功能成功时,接口将返回true值,输出图片保存在outBuffer->addr指向的内存区域。

异步调用

AI超分与图像处理超分能力也提供异步调用API接口。

bool CSuperSamplingAsyncExecute(const CGKit::BufferDescriptor *inBuffer, const CGKit::BufferDescriptor *outBuffer, PluginCallback callback)
bool CImageEnhancingAsyncExecute(const CGKit::BufferDescriptor *inBuffer, const CGKit::BufferDescriptor *outBuffer, float sharpenStrength, bool toneMapping, PluginCallback callback)

关于参数说明请参见CSuperSamplingAsyncExecuteCImageEnhancingAsyncExecute。当异步线程正常启动时,接口将返回true值。异步调用超分功能是否成功将传入定义的回调函数,回调函数定义如下。

typedef void (*PluginCallback)(bool success)

根据需要实现回调函数,以处理调用成功或调用失败的场景。异步调用需要一定的执行时间,请等待约2s~5s再尝试获取outBuffer的值。

搜索
请输入您想要搜索的关键词