CRI ADX  Last Updated: 2024-07-17 10:48 p
使用用户定义效果

示例目录

/cri/pc/samples/criatomex/user_effect_plugin

示例描述

将用户定义的效果导入ADX并应用效果播放的示例。
本示例使用的是预先构建的用户定义效果的程序库,
也可以使用CRI ADX Audio Effect Plugin SDK创建新的用户定义效果。

本示例中使用的用户定义效果程序库位于以下目录。

  • x86架构的程序库
    • /cri/pc/libs/x86/Expansion/effect_plugin/cri_simple_delay_pcx86.lib
    • /cri/pc/libs/x86/Expansion/effect_plugin/cri_simple_delay_pcx86D.lib
  • x64架构的程序库
    • /cri/pc/libs/x64/Expansion/effect_plugin/cri_simple_delay_pcx64.lib
    • /cri/pc/libs/x64/Expansion/effect_plugin/cri_simple_delay_pcx64D.lib

将用户定义效果导入ADX的步骤如下。
关于导入步骤的详细信息,请参照CRI ADX Audio Effect Plugin SDK附带的手册。

  1. 使用CRI ADX Audio Effect Plugin SDK创建运行时库和工具的插件
  2. 将工具的插件导入AtomCraft,构建包含用户定义效果的ACF
  3. 在链接运行库和应用程序的状态下,将用户定义效果接口注册到库中
执行::criAtomExAsr_RegisterEffectInterface函数,将用户定义效果接口注册到Atom运行库中。
/* 用户定义效果头 */
#include "simple_delay.h"
/* 主要处理 */
main
{
/* 初始化CRI Atom运行库 */
criAtomEx_Initialize(NULL, NULL, 0);
:
/* 将用户定义效果接口注册到Atom运行库中 */
criAtomExAsr_RegisterEffectInterface(simpleDelay_GetInterfaceWithVersion());
:
/* 注册DSP总线设置中包含用户定义效果的ACF */
criAtomEx_criAtomEx_RegisterAcfFile(NULL, acf_file, NULL, 0);
:
}
CriBool criAtomExAsr_RegisterEffectInterface(CriAtomExAsrAfxInterfaceWithVersionPtr afx_interface)
Register a user-defined effect interface
CriBool criAtomEx_Initialize(const CriAtomExConfig *config, void *work, CriSint32 work_size)
Initialize the library
注意
必须注意调用::criAtomExAsr_RegisterEffectInterface, ::criAtomExAsr_UnregisterEffectInterface函数的时机。
需要注意的事项如下。
  1. 必须在附加DSP总线设置( 执行::criAtomEx_AttachDspBusSetting函数 )之前调用::criAtomExAsr_RegisterEffectInterface函数
    为附加含有用户定义效果的DSP总线设置,请注册DSP总线设置中包含的所有效果接口。
    如果所需效果接口不足,则会返回错误回调,附加DSP总线设置失败。
  2. 在卸载了DSP总线设置的状态调用::criAtomExAsr_UnregisterEffectInterface函数
    注册后,效果接口将继续引用Atom运行库,直到退出库或调用:: criAtomExAsr_UnregisterEffectInterface函数为止。
    如果在音频播放期间等执行信号处理期间取消注册接口,则可能会发生访问冲突异常。
    因此,取消效果接口的注册应在去除附加DSP总线设置的状态下执行。
  3. 结束程序库(执行::criAtomEx_Finalize函数)时,取消所有效果接口的注册
    重新初始化程序库时,必须重新注册必要的效果接口。


示例使用的数据中AtomCraft项目的目录

/cri/tools/criatomex/examples/tutorial_data_for_runtime