在查看 NAudio AsioOut 类时,似乎很明显,每次通过输出播放新文件时,实例都会被销毁和重新创建。如果实例已经有源流,则 Init 方法会专门抛出 InvalidOperationException。通常,在正常情况下处理和重新创建 Asio 输出不是问题,但是,在一种情况下,我想避免这样做,因为我将输出发送到设置为 Asio 驱动程序的卷积器。每次初始化驱动程序时,它都必须重新加载一个大型卷积滤波器,因此在播放无间隙曲目时,延迟很烦人。
为了避免延迟,我有一个想法,如果 AsioOut 实例已经存在就不要处理它,并且队列中下一个文件的位深度和采样率与上一个文件相同。问题是我必须在 AsioOut 类上调用 Init 以将下一个要播放的文件传递给它,这将引发上述异常。如果我确保文件之间的位深度、采样率和输出通道数没有改变,那么更改 Init 方法以避免抛出异常是否安全?
谢谢,艾伦