【问题标题】:Operate on single audio channels without deinterleaving无需去交错即可在单个音频通道上运行
【发布时间】:2014-01-19 05:43:30
【问题描述】:

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

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

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

【问题讨论】:

    标签: c++ iterator audio-processing


    【解决方案1】:

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

    但是,您还必须调整向量类以使用新的迭代器。所以当前的代码必须通过使用新的向量类来改变。

    【讨论】:

    • 当前代码不假定它在std::vector 实例上运行。幸运的是,它由类似 STL 的函数组成,并接受随机访问迭代器范围。
    • 我认为拥有一个自定义迭代器是最好的选择。它对用户隐藏了实现细节并做他想做的事。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多