Манипулирующие потоки - PullRequest
       1

Манипулирующие потоки

0 голосов
/ 05 сентября 2011

Как правильно это сделать? Предположим, у меня есть поток аудиоданных и я хочу применить к нему несколько аудио фильтров перед записью на диск

Как должен выглядеть интерфейс фильтров?

Sub Process(InputStream as IO.Stream)

или

Function Process(InputStream as IO.Stream) as IO.Stream

Полагаю, мне немного неясно, как потоки должны передаваться между классами и методами. Нужно ли мне читать весь поток в методе, обрабатывать его и затем записывать в новый поток, который возвращается?

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

Может кто-нибудь указать мне правильное направление?

1 Ответ

1 голос
/ 05 сентября 2011

Обычно я думаю о расширении функциональности потоков с помощью шаблона Decorator.В этом случае один поток оборачивает оригинал и манипулирует данными перед передачей его методу исходного потока.Прочтите эту статью из MSDN Magazine о создании InterceptorStream, который предоставляет дополнительные функции для обернутого Stream.

...