Преимущества МДО
[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код использовал MediaPlayer, IMFMediaEngine и аудио- и видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]
МДО предлагают следующие преимущества:
- Как правило, они меньше и проще, чем фильтры DirectShow, так как они поддерживают меньше функциональных возможностей.
- Они более гибкие, чем фильтры DirectShow, так как для них не требуется граф фильтров. Их можно использовать с DirectShow, когда вам нужны службы, предоставляемые DirectShow, такие как синхронизация, интеллектуальное подключение, автоматическая обработка потока данных и управление потоками. Клиенты, которым не нужны эти службы, могут напрямую обращаться к МД.
- МДО всегда выполняют синхронную обработку данных, что устраняет многие проблемы с потоками, которые необходимо учитывать при написании фильтра.
- В отличие от традиционных кодеков ACM и VCM, МД основаны на объектной модели компонентов (COM), поэтому их можно расширить с помощью QueryInterface.
- МДО поддерживают более обобщенную модель потоковой передачи, чем кодеки ACM или VCM. Как и фильтры DirectShow, dmos могут поддерживать несколько входов и нескольких выходов.
По этим причинам в качестве решения для написания кодировщиков, декодеров и звуковых эффектов рекомендуется использовать МДО. Также возможны многие другие сценарии в зависимости от потребностей приложения.
Чем МДО отличаются от фильтров DirectShow
Фильтры DirectShow не могут работать за пределами графа фильтра DirectShow. В DirectShow диспетчер графов фильтров является посредником между приложением и фильтрами. Фильтры DirectShow выполняют большую часть работы, необходимой для потоковой передачи данных, в том числе:
- Выделение буферов.
- Согласование типов мультимедиа и подключений к другим фильтрам.
- Отправка данных через граф фильтра.
- Отправка событий в диспетчер фильтров графов.
- Синхронизация нескольких потоков.
В отличие от этого, DMO не выполняет ни одного из этих действий. За такие задачи отвечает клиент, использующий DMO. Клиент выделяет буферы, заполняет их данными и доставляет их в DMO. DMO обрабатывает данные, а клиент получает итоговые буферы вывода.
Связанные темы