|
В этой статье рассмотрим
механизмы работы 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-видео.
|