c++ - 无需去交织即可在单个音频 channel 上运行

标签 c++ iterator audio-processing

我正在处理存储在 vector 中的波形。音频 channel 是交错的。我必须分别处理 channel ,然后(再次)交错提供最终结果。在每个 channel 上运行的函数接受由随机访问迭代器分隔的范围,并假定该范围是连续的。

由于这些操作必须实时(或某种程度上)执行,我想伪造去交织阶段:换句话说,我正在寻找一种方法让单 channel 功能在特定的条件下运行channel 实际上没有去交织任何东西,也没有影响他们当前的代码,假设迭代器的 ++ (或 --)运算符移动到下一个(或前一个)元素。

你有什么建议?我目前正在考虑编写一个自定义随机访问迭代器。还有其他可行的解决方案吗?我不想使用 boost。

最佳答案

您应该提供一个自定义迭代器,它实现了 operator++()operator--() w/r/t channel 数以保持交错。您可以在不使用 boost 的情况下执行此操作。

但是,您还必须调整 vector 类以使用新的迭代器。因此,必须通过使用新的 vector 类来更改当前代码。

关于c++ - 无需去交织即可在单个音频 channel 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20871726/

相关文章:

c++ - 使用 3d 对象为图形正确设置坐标

c++ - Visual Studio 2015 : Extern "C" and the "export" keyword

java - 为什么这个 Hashmap 迭代不起作用?我收到 NullPointerException

ffmpeg - 如何使用标记同步两个音频文件

c++ - 比较运算符的数值精度

c++ - 绑定(bind)错误 : Address already in use

c++ - 容器迭代器和容器操作

c++ - 领域特定的 C++ 迭代器方法

c# - 来自 .wav 文件的峰值频率

java - 音频编程、声音处理和 DSP