Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Устройства захвата, основанные на видео-портах, должны иметь штырь видеопорта, который подключается к контроллеру видеопортов. Контакт видеопорта позволяет аппаратному обеспечению отображать поток предварительного просмотра без нагрузки на ЦП или шины PCI. Отдельный пин-код обеспечивает возможность записи (например, при записи видео на диск). Во время процесса захвата буферы захвата предоставляются дисплейному драйверу, который заполняет их с помощью ведущего контроллера шины. Взаимодействие между минидрайвером захвата и драйвером отображения описано далее в этом разделе и в Kernel-Mode Видеотранспорт.
В системах, работающих под управлением 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, минидрайвер захвата видео WDM должен включать файл заголовка ddkmapi.h (API режима ядра DirectDraw) и связываться с библиотекой dxapi.lib. Библиотека DxApi использует функции, экспортированные dxapi.sys. DxApi.sys доступна только в том случае, если DirectDraw загружается, так как DxApi является частью VPEs в DDI DirectDraw.
DxApi — это один API режима ядра, предоставляемый DxApi.sys. Расширение видеопорта — это API пользовательского режима, предоставляемый DDraw.dll. Мини-драйвер для видеозаписи должен выполнять несколько различных вызовов DxApi, чтобы настроить и сконфигурировать оборудование видеопорта для корректной потоковой передачи.
DxApi — это одна функция, которая инкапсулирует несколько идентификаторов функций. Минидрайверы передают требуемый идентификатор функции в первом аргументе в DxApi. Остальные аргументы DxApi предназначены для буферов, выделенных минидрайвером, для структур, соответствующих идентификаторам функций и длине буферов. Поведение функций и размера и формата входных и выходных буферов зависит от указанного идентификатора функции. Это поведение задокументировано в функции и идентификаторах DxApi.
WDK предоставляет два примера драйверов, демонстрирующих реализацию функциональных возможностей DxApi . Для работы примера ATIWDM требуется определенное оборудование. Пример TestCap не требует оборудования и работает на всех платформах. Средство GraphEdt можно использовать для взаимодействия с любой из примеров.
Функции, которые должен вызывать минидрайвер видеозахвата через 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)
Дочерние устройства видеопорта и управление электропитанием
Дочерние устройства видеопорта, такие как адаптеры, совмещающие функции тюнера и дисплея, могут блокировать переходы состояния питания при использовании минидрайвера. Блокировка перехода состояния питания происходит, когда минидрайвер активно используется (пины или фильтры открыты). Если минидрайвер загружен, но не имеет выводов или фильтров, состояние питания переходит из S0 (полностью включенное питание) на более низкие состояния питания (например, S1, S2, S3 и S4). Блокировка перехода в состояние питания возникает только с минидрайверами класса Stream, которые являются клиентами дочерних устройств видеопорта.
Отказ от WHQL доступен для устройств, удовлетворяющих этим критериям, поэтому поставщики по-прежнему могут получить логотип.