Запись на основе видеопорта
Захватить устройства, основанные на видеопортах, должны предоставлять пин-код видеопорта, который подключается к диспетчеру видеопортов. Закрепление видеопорта позволяет аппаратному транспорту отображать поток предварительной версии без нагрузки на ЦП или периферийные компоненты (PCI). Отдельный пин-код обеспечивает возможность записи (например, при записи видео на диск). Во время процесса захвата буферы захвата предоставляются драйверу отображения, который заполняет буфер с помощью главного шины. Взаимодействие между мини-driver захвата и драйвером отображения описано далее в этом разделе и в видеотрансляции в режиме ядра.
В системах, работающих под управлением Microsoft Windows 98 SE или Windows 2000, фильтр "Переложение" (часть фильтра диспетчера видеопортов в последующих операционных системах) не поддерживает подключения к видеопорту на вторичных мониторах. В этом случае не удается подключиться к закреплению. Подключения к видеопорту на вторичных мониторах поддерживаются в системах под управлением Windows Millennium Edition (Windows Me) и Windows XP.
Если устройство поддерживает запись VBI, обычно предоставляет два дополнительных пин-кода: VPVBI и VBI. Фильтр диспетчера видеопортов использует пин-код VPVBI для выделения поверхностей видеопорта для захвата VBI. Сам пин-код VBI предоставляет необработанные примеры VBI.
На следующей схеме показаны отдельные пути для записи VPVBI и VBI.
Наборы свойств, относящиеся к этому типу графа фильтров, являются KSPROPSETID_VPConfig и KSPROPSETID_VPVBIConfig и PROPSETID_ALLOCATOR_CONTROL.
Использование расширений видеопорта (VPEs)
Примечание. Следующие абзацы применяются только к операционным системам, предшествующим следующей версии Windows Vista. VPE отключен в Windows Vista, если драйвер дисплея использует новую модель отображения драйвера Windows Vista (LDDM).
Мини-накопители видеозахвата могут использовать функцию DxApi для взаимодействия с драйвером видеопорта, чтобы разрешить передачу потокового видео по шине видеопорта между оборудованием захвата и оборудованием дисплея. Поток состоит из последовательных полей NTSC, PAL или SECAM видео и может включать пустое (VBI) и код времени (горизонтальная синхронизация и вертикальная синхронизация). Характеристики видеопотока, включая измерение, формат цвета, частоту, масштабирование и обрезку, настраиваются в пользовательском режиме через интерфейс VPE DirectDraw. После запуска потоковой передачи dxApi вызывается в режиме ядра для записи отдельных кадров. Для поддержки изменений отображения, таких как изменения в разрешении или переключении на полноэкранные командные строки, мини-накопители видеозахвата также должны регистрироваться в драйвере видеопорта, чтобы они могли реагировать на такие события изменения отображения.
VPEs и функция DxApi были представлены в DDI DirectDraw с DirectX 5.0. DxApi поддерживается драйвером мини-порта видео в операционных системах Windows 2000 и более поздних версий. Виртуальный драйвер минипорта (miniVDD) поддерживает DxApi в операционных системах Windows 98 и Windows Me. Чтобы включить видеотранслятор в режиме ядра с помощью DxApi, мини-driver записи видео WDM должен включать файл заголовка ddkmapi.h (API режима ядра DirectDraw) и связаться с библиотекой dxapi.lib . Библиотека DxApi использует функции, экспортированные dxapi.sys. DxApi.sys доступна только при загрузке DirectDraw, так как DxApi является частью VPEs в DDI DirectDraw.
DxApi — это один API режима ядра, предоставляемый DxApi.sys. Расширение видеопорта — это API пользовательского режима, предоставляемый DDraw.dll. Мини-driver для видеозаписи должен выполнять несколько различных вызовов DxApi , чтобы настроить и настроить оборудование видеопорта для правильной потоковой передачи.
DxApi — это одна функция, которая инкапсулирует несколько идентификаторов функций. Мини-drivers передают требуемый идентификатор функции в первом аргументе в DxApi. Остальные аргументы dxApi предназначены для буферов, выделенных мини-driver, для структур, соответствующих идентификаторам функций и длине буферов. Поведение функций и размера и формата входных и выходных буферов зависит от указанного идентификатора функции. Это поведение задокументировано в функции и идентификаторах DxApi.
WDK предоставляет два примера драйверов, демонстрирующих реализацию функциональных возможностей DxApi . Для работы примера ATIWDM требуется определенное оборудование. Пример TestCap не требует оборудования и работает на всех платформах. Средство GraphEdt можно использовать для взаимодействия с любой из примеров.
Распространенные функции, которые мини-driver видеозахвата должны вызывать DxApi для выполнения, являются следующими:
Откройте дескриптор в режиме ядра DirectDraw (идентификатор функции DxApi , заданный для DD_DXAPI_OPENDIRECTDRAW). Эта операция должна выполняться в IRQL = PASSIVE_LEVEL.
Получите возможности аппаратного видеопорта в режиме ядра (идентификатор функции DxApi , заданный для DD_DXAPI_GETKERNELCAPS).
Регистрируйте обратные вызовы для обработки событий DirectDraw, например переключения режима на полноэкранную командную строку (идентификатор функции DxApi , для которой задано значение DD_DXAPI_REGISTER_CALLBACK).
Откройте дескриптор для целевых поверхностей DirectDraw (идентификатор функции DxApi , который имеет значение DD_DXAPI_OPENSURFACE).
Отмена регистрации обратных вызовов (идентификатор функции DxApi , заданный для DD_DXAPI_UNREGISTER_CALLBACK).
Закройте дескрипторы к поверхностям, а также к directDraw в режиме ядра (идентификатор функции DxApi , заданный для DD_DXAPI_CLOSEHANDLE)
Дочерние устройства видеопорта и управление питанием
Дочерние устройства видеопорта, такие как тюнер телевизора и адаптеры сочетаний отображения, могут блокировать переходы состояния питания при использовании мини-driver. Блокировка перехода состояния питания возникает при активном использовании мини-driver (открыты пин-коды или фильтры). Если мини-driver загружен, но не имеет контактов или фильтров, состояние питания переходит из S0 (полностью питание) на более низкие состояния питания (например, S1, S2, S3 и S4). Блокировка перехода состояния питания возникает только с мини-накопителями класса Stream, которые являются клиентами дочерних устройств видеопорта.
Отказ от WHQL доступен для устройств, удовлетворяющих этим критериям, поэтому поставщики по-прежнему могут получить логотип.