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