VBI Surface Allocator, Video Port Manager

VBI Surface Allocator

DirectShow предоставляет фильтры режима ядра для захвата NABTS, Line21 и данных World Standard Teletext (WST) (для PAL-сигналов) с пустым вертикальным интервалом (vertical blanking interval - VBI) широковещательного аналогового телевизионного сигнала. Эти фильтры принадлежат категории WDM Streaming VBI Codecs. У фильтра захвата есть исходящий контакт, пересылающий "сырые" сэмплы (raw sampled waveforms) фильтру Tee/Sink-to-Sink Converter, который проверяет данные на наличие в них NABTS IP - данных, Line 21 closed captioning или телетекста, которые могут присутствовать в сигнале, и создает исходящий контакт для каждого типа данных. Для добавления фильтров, декодирующих closed-captioned data или телетекст, нужно использовать метод ICaptureGraphBuilder2::RenderStream на подходящем исходящем контакет фильтра MSTee. На предварительной иллюстрации показаны фильтры для захвата и отображения СС-данных, и пример AMCap демонстрирует, как можно добавить CC-фильтр в граф ( что-то я там такого не видел; посмотреть еще раз ). Для NABTS IP - данных нужно добавить вручную и соединить цепочку нижележащих фильтров от фильтра видеохахвата (корявая конструкция какая-то). Следующая иллюстрация показывает VBI-сегмент графа фильтров, управляющий и NABTS-данными, и CC-данными. Нужно отметить, что фильтр Tee/Sink-to-Sink Converter расщепляет VBI-данные на два потока.

Замечание. Если фильтр захвата дает исходящий контакт "HWCC", то он должен быть напрямую подключен к HWCC контакту на CC-декодере.

Рис. 3. Граф фильтров для захвата потока с использованием VBI

У этих фильтров режима ядра нет интерфейсов, предназначенных для использования в приложениях. Они работают просто как канал соединения, в котором извлекаются SLIP-кодированные данные IP-пакетов из VBI-сигнала и передаются далее через WinSock.

Для телетекстовых данных фильтры выглядят следующим образом:

Рис. 4. Граф фильтров для захвата телетекстовых данных

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

Video Port Manager

Фильтр Video Port Manager (VPM) дает возможность фильтру VMR-7 работать с устройствами видеозахвата или аппаратными декодерами, использующими видеопорт. Видеопортом есть прямое аппаратное подключеним к графической микросхеме. Этот мехнанизм дает возможность напрямую передавать видео графическому чипу, минуя системную шину.

Замечание. VPM несовместим с VMR-9, поскольку VMR-9 не поддерживает видеопорты.

СвойствоОписание
Интерфейсы фильтраIAMVideoDecimationProperties, IBaseFilter, IKsPropertySet, IQualProp, IVPManager
Медиатипы входящего контактаMEDIATYPE_Video, MEDIASUBTYPE_VPVideo or MEDIASUBTYPE_VPVBI, FORMAT_None
Интерфейсы входящего контактаIKsPin, IKsPropertySet, IMemInputPin, IPin, IPinConnection, IQualityControl
Медиатипы исходящего контактаMEDIATYPE_Video, FORMAT_VideoInfo2
Интерфейсы исходящего контактаIPin, IQualityControl
CLSID фильтраCLSID_VideoPortManager
MeritMERIT_NORMAL
Категория фильтраCLSID_LegacyAmFilterCategory

Примечание.

VPM комбинирует функциональность видеопорта фильтра Overlay Mixer функциональность VBI Surface Allocator'а. VPM распределяет видеопорты и поверхности, а также синхронизирует данные, захватываемые с видеопорта. Это дает возможность видеозахвату, основанном на видеопорте, не зависеть от отображения. Если требуется предпросмотр, VPM координируется с VPM-7 для показа захваченных данных с видеопорта. Когда в системе присутствует видеопорт, фильтр захвата нуждается в дополнительных буферах для извлечения в них VBI-данных, полученных из видеопотока. Эти буфера предоставляются VPM'ом. Как только фильтр захвата может извлечь VBI-данные, он пересылает их на отдельный контакт такого фильтра, как CC-декодер. На следующей иллюстации показан VPM и его соединения в графе фильтров.

Рис. .5. Граф фильтров с VPM’ом

Построитель графа DVD добавляет VPM в граф фильтров автоматически, если в системе обнаружен видеопорт. После этого VPM использует объект DirectDraw, предоставляемый Video Mixing Renderer'ом, для распределения двух или трех поверхностей. Эти поверхности получают оцифрованные кадры от вышележащего фильтра захвата. In response to user-mode event notifications sent when data is present in the surface, the VPM performs an automatic blit to an offscreen surface provided by the VMR.

Тот факт, что VPM использует несколько поверхностей для своих входящих буферов, означает, что он требует большее количество VRAM, чем предыдущая реализация видеопортаDirectShow ( что это за реализация такая, о которой я не слышал ??? ). Дополнительно переход ( extra blit ) от VPM к VMR-7 требует дополнительной видеопамяти. And since hardware auto-flipping is not used any longer, there is a theoretical potential for dropped frames, but the empirical evidence suggests that this does not occur.

IVPManager

Video Port Pinsё

Analog TV Filter Graph - обязательно посмотреть!

Примечания

NABTS/FEC VBI Codec Filter

Кодек NABTS/FEC VBI декодирует NABTS ( North American Broadcast Teletext Specification - спецификация североамериканского шировещательного телетекста ) - телетекст из данных в vertical blanking interval (VBI). Он принимает также аппаратно декодированные NABTS-данные. The codec delivers forward-error-corrected (FEC) SLIP packets.

Этот фильтр следует соединять с фильтром BDA SLIP Deframer, а последний, в свою очередь, с фильтром BDA IP Sink. Этот фильтр ( BDA IP Sink ) посылает данные в Winsock.

Кодек NABTS/FEC VBI имеет два исходящих контакта:

  • VBI-контакт, принимающий сырые VBI-данные
  • HWNABTS-контакт, принимающий аппаратно декодированные NABTS-данные. Эти данные фильтр просто передает BDA SLIP Deframer'у.

У этих фильтров нет интерфейсов, которые могут использовать приложения.

Эти фильтры принадлежат категории фильтров "WDM Streaming VBI Codecs" (AM_KSCATEGORY_VBICODEC). Поскольку эти фильтры - фильтры режима ядра, то приложения не могут создавать их непосредственно, используя вызов CoCreateInstance. Вместо этого нужно использовать System Device Enumerator. См. также Creating Kernel-Mode Filters.

BDA CLIP Deframer

BDA IP Sink

HWNABTS

CC Decoder Filter

Line 21 Decoder Filter

Этот фильтр используется графом фильтров, запущенном на платформах MS Windows 9.x и MS Windows 2000. На платформах MS Windows XP Home Edition и MS Windows XP Professional фильтр Line 21 Decoder 2 используется всегда, когда фильтр Video Mixing Renderer есть в графе. ЗАКОНЧИТЬ ПОЗЖЕ

Line 21 Decoder 2 Filter

На платформах MS Windows Home Edition и MS Windows XP Professional, фильтр Line 21 Decoder 2 Filter используется вместо фильтра Line 21 Decoder Filter в графе фильтров с Video Mixing Renderer'ом. Их интерфейсы, контакты и медиатипы полностью идентичны. CLSID фильтра Line 21 Decoder 2 есть CLSID_Line21Decoder2.

Comments