有时候调用者有获取或者修改 APlayer 解码后的图像或者音频的需求,APlayer 通过插件系统来支持这种需求:
具体来说 APlayer 插件是一个导出特定函数的 DLL,可以被 APlayer 加载,插件DLL的导出函数原形和具体实现方式可以参考 APlayerSDK 中的例子 PluginDemo 的源代码,
APlayer 加载插件后,会把解码后的图像(未压缩格式YUV)或音频(PCM)通过接口推送给插件,这样插件就可以进行进一步处理;
需要注意的是,因为推送函数是在渲染链路中的,所以需要较高性能执行,尽快返回,以免影响后续的渲染(造成慢动作或音视频不同步)。
APlayer 支持加载多个插件,插件的区分就是完整文件路径名。
APlayer 插件系统需要 vsfilter.dll 和 audioswitcher.dll 这两个解码器的支持,且视频回调在开启硬件加速时不可用。
下图是 APlayerSDK 中的一个 APlayer 插件 PluginDemo 的运行效果: