DIRECTSHOW И VIDEO FOR WINDOWS

В этой статье рассмотрим механизмы работы DirectShow и Video for Windows.

Изначально в системе Windows, начиная с версии 3.11 существовала встроенная поддержка мультимедиа-данных, таких как .wav, MIDI и видео файлы. Каждому типу фийлов ставилось в соответствие какое-либо устройство, и подсистема мультимедиа по полной программе его использовала. Эта система называется MCI (multimedia ??? interface или что-то в этом духе). Видеоустройство называется Video for Windows. Но потом MS сделала DirectX, а точнее DirectMedia, другой универсальный интерфейс. Все современные плееры-комбайны скорее всего используют именно его, пользуясь компонентом ActiveX, который легко встраивается в приложения, но есть и те, которые используют MCI. Следовательно почти все видео, которое мы смотрим, декодируется с помощью DirectShow.

DirectShow MPEG4 кодек:

  • может использовать оверлеи
  • поддерживает постпоцессинг
  • обычно - только декодер

Video for Windows MPEG4 кодек:

  • может кодировать и декодировать
  • не использует оверлеи

VirtualDub и его клон NunDub используют MCI, а Windows Meida Player, BSPlayer, ZoomPlayer, PlayA, Sasami2k и прочее - DirectShow. Однако если в системе нет DirectShow кодека, то они могут использовать MCI. Чтобы определить, какой тип кодека используется, в WMP достаточно посмотреть список фильтров, и там есть только Video Renderer, то значит используется VfW-кодек. В Windows есть поистине универсальный проигрыватель - mplay32.exe. Он способен использовать как MCI, так и DirectShow.

Не все видео-кодеки имеют DirectShow декодер, следовательно преимущества оверлея для них недоступны. Существует возможность насильного включения оверлея, для этого надо добавить в graph фильтр, который может выводить в оверлей. Не всякий фильтр возможно вставит в graph, но ffdshow отлично туда вставляется, если указать в списке поддерживаемых им FOURCC raw-видео.

*****
(c) kusaku 2003