Я обрабатываю форму волны, сохраненную в векторе. Аудиоканалы чередуются. Я должен обработать каналы отдельно и затем предоставить конечный результат с чередованием (снова). Функции, работающие на каждом отдельном канале, принимают диапазон, ограниченный итераторами произвольного доступа, и предполагают, что диапазон непрерывен.
Поскольку эти операции должны выполняться в режиме реального времени (или в некотором роде), я хотел бы подделать фазу устранения перемежения: другими словами, я ищу способ заставить одноканальные функции работать на конкретном канале без фактического деинтерлейсинг ничего и не влияя на их текущий код, который предполагает, что ++
(или же --
) оператор итераторов переходит к следующему (или предыдущему) элементу.
Что ты предлагаешь? В настоящее время я думаю о написании пользовательский итератор произвольного доступа. Есть ли другое жизнеспособное решение? Я бы предпочел не использовать повышение.
Вы должны предоставить пользовательский итератор, который реализует operator++()
а также operator--()
w / r / t количество каналов для чередования. Вы можете сделать это без использования наддува.
Однако вам также придется адаптировать векторный класс для использования новых итераторов. Таким образом, текущий код должен быть изменен с помощью нового векторного класса.
Других решений пока нет …