Поделиться через


Схемы выделения

На следующей схеме представлен один распределитель, назначенный для использования тремя фильтрами. В фильтрах преобразования или конечных фильтрах не требуется выделение, так как система не назначила хендл выделителя для этих фильтров.

схема, иллюстрирующая простую конфигурацию распределителя.

Исходный фильтр выделяет кадр, заполняет его данными и отправляет его в следующий фильтр. Фильтр преобразования выполняет преобразование данных на месте и отправляет кадр в следующий фильтр. Когда фильтр приемника завершает операцию ввода-вывода, исходный фильтр освобождает или повторно использует кадр. Управление потоками поддерживается в этом графе фильтров по общему количеству выполненных кадров, которые можно выделить из распределителя приемника, и по скорости завершения операции ввода-вывода.

На следующей схеме представлена конфигурация аллокатора, в которой исходный кадр направляется к нескольким приемным целям.

схема, демонстрирующая конфигурацию распределителя с несколькими приемниками.

На схеме компонент записи файлов может представлять вывод звука в файл, а устройство — звуковую карту, на которую отправляется звук.

Этот граф фильтров содержит два распределителя: распределитель преобразования и распределитель устройства. Исходный фильтр выделяет кадр из аллокатора трансформации, заполняет его данными и передаёт в фильтр преобразования, а затем в модуль записи файлов. При получении кадра фильтр преобразования выделяет кадр из распределителя устройства, выполняет преобразование данных в новый кадр и отправляет этот кадр на устройство.

Управление потоками поддерживается в этом графе фильтров за счет количества общих невыполненных кадров, которые можно выделить из распределителей, и скорости завершения операций ввода-вывода. Обратите внимание, что для каждого отдельного списка сегментов источника/приемника должен быть отдельный аллокатор, создаваемый через соединение штырьков. Если отдельные распределители отсутствуют, данный сегмент может использовать все доступные кадры, не оставляя ничего для следующего сегмента, которому может требоваться один или несколько кадров для обработки данных, созданных предыдущим сегментом.