Работа на одиночных аудиоканалах без деинтерлейсинга

Я обрабатываю форму волны, сохраненную в векторе. Аудиоканалы чередуются. Я должен обработать каналы отдельно и затем предоставить конечный результат с чередованием (снова). Функции, работающие на каждом отдельном канале, принимают диапазон, ограниченный итераторами произвольного доступа, и предполагают, что диапазон непрерывен.

Поскольку эти операции должны выполняться в режиме реального времени (или в некотором роде), я хотел бы подделать фазу устранения перемежения: другими словами, я ищу способ заставить одноканальные функции работать на конкретном канале без фактического деинтерлейсинг ничего и не влияя на их текущий код, который предполагает, что ++ (или же --) оператор итераторов переходит к следующему (или предыдущему) элементу.

Что ты предлагаешь? В настоящее время я думаю о написании пользовательский итератор произвольного доступа. Есть ли другое жизнеспособное решение? Я бы предпочел не использовать повышение.

0

Решение

Вы должны предоставить пользовательский итератор, который реализует operator++() а также operator--() w / r / t количество каналов для чередования. Вы можете сделать это без использования наддува.

Однако вам также придется адаптировать векторный класс для использования новых итераторов. Таким образом, текущий код должен быть изменен с помощью нового векторного класса.

1

Другие решения

Других решений пока нет …