Captura basada en puerto de vídeo
Los dispositivos de captura basados en puertos de vídeo deben proporcionar un pin de puerto de vídeo que se conecte al administrador de puertos de vídeo. La patilla de puerto de vídeo permite el transporte basado en hardware para mostrar la secuencia de vista previa sin sobrecarga del bus de interconexión de cpu o componente periférico (PCI). Un pin independiente proporciona funcionalidad de captura (por ejemplo, cuando se debe escribir vídeo capturado en el disco). Durante el proceso de captura, los búferes de captura se proporcionan al controlador de visualización, que rellena el búfer mediante la masterización de buses. La interacción entre el minidriver de captura y el controlador de pantalla se describe con más detalle más adelante en esta sección y en transporte de vídeo en modo kernel.
En sistemas que ejecutan Microsoft Windows 98 SE o Windows 2000, el filtro Mezclador de superposición (parte del filtro Administrador de puertos de vídeo en sistemas operativos posteriores) no admite conexiones de puerto de vídeo en monitores secundarios. En este caso, se produce un error en la conexión de patillas. Las conexiones de puerto de vídeo en monitores secundarios se admiten en sistemas que ejecutan Windows Millennium Edition (Windows Me) y Windows XP.
Si un dispositivo admite la captura de VBI, normalmente expone dos patillas adicionales: VPVBI y VBI. El filtro del administrador de puertos de vídeo usa el pin VPVBI para asignar superficies de puerto de vídeo para la captura VBI. El propio pin VBI proporciona los ejemplos de VBI sin procesar.
En el diagrama siguiente se muestran las rutas de acceso independientes para la captura VPVBI y VBI.
Los conjuntos de propiedades que son específicos de este tipo de gráfico de filtro se KSPROPSETID_VPConfig y KSPROPSETID_VPVBIConfig y PROPSETID_ALLOCATOR_CONTROL.
Uso de las extensiones de puerto de vídeo (VPE)
Nota: Los párrafos siguientes solo se aplican a los sistemas operativos anteriores a la siguiente versión de Windows Vista. VPE está deshabilitado en Windows Vista si el controlador de pantalla usa el nuevo modelo de visualización de controladores de Windows Vista (LDDM).
Los minidrivers de captura de vídeo pueden usar la función DxApi para comunicarse con el controlador de miniporte de vídeo para permitir que el vídeo de streaming de captura se transporte a través del bus de puerto de vídeo entre el hardware de captura y el hardware de visualización. La secuencia consta de campos secuenciales de vídeo NTSC, PAL o SECAM, y puede incluir datos en blanco (VBI) y código de tiempo (sincronización horizontal y sincronización vertical). Las características de la secuencia de vídeo, como la dimensión, el formato de color, la frecuencia, el escalado y el recorte se configuran en modo de usuario a través de la interfaz DirectDraw de VPE. Una vez iniciado el streaming, se llama a DxApi en modo kernel para capturar fotogramas individuales. Para admitir los cambios de visualización, como los cambios en la resolución o el cambio a o desde los símbolos del sistema de pantalla completa, los minidriveres de captura de vídeo también deben registrarse con el controlador de miniporte de vídeo para que puedan responder a estos eventos de cambio de pantalla.
Las VPE y la función DxApi se introdujeron en directDraw DDI con DirectX 5.0. DxApi es compatible con el controlador de miniport de vídeo en windows 2000 y sistemas operativos posteriores. Un controlador de miniporte de pantalla virtual (miniVDD) admite DxApi en los sistemas operativos Windows 98 y Windows Me. Para habilitar el transporte de vídeo en modo kernel mediante DxApi, un minidriver de captura de vídeo WDM debe incluir el archivo de encabezado ddkmapi.h (API del modo kernel de DirectDraw) y vincular con la biblioteca dxapi.lib. La biblioteca DxApi usa la funcionalidad exportada por dxapi.sys. DxApi.sys solo está disponible cuando se carga DirectDraw porque DxApi forma parte de las VPN a DirectDraw DDI.
DxApi es una API de modo kernel única que expone DxApi.sys. La extensión de puerto de vídeo es una API en modo de usuario expuesta por DDraw.dll. Un minidriver de captura de vídeo debe realizar varias llamadas diferentes a DxApi para configurar y configurar el hardware del puerto de vídeo para transmitir correctamente.
DxApi es una sola función que encapsula varios identificadores de función. Los minidrivers pasan el identificador de función deseado en el primer argumento a DxApi. Los argumentos restantes para DxApi son para los búferes asignados por minidriver para las estructuras que corresponden a identificadores de función y longitudes de búferes. El comportamiento de las funciones y el tamaño y el formato de los búferes de entrada y salida dependen del identificador de función especificado. Este comportamiento se documenta en La función y los identificadores dxapi.
WDK proporciona dos controladores de ejemplo que muestran cómo implementar la funcionalidad dxapi . El ejemplo de ATIWDM requiere que el hardware específico esté presente para funcionar. El ejemplo TestCap no requiere hardware y funciona en todas las plataformas. Puede usar la herramienta GraphEdt para interactuar con cualquiera de los ejemplos.
Las funciones comunes que un minidriver de captura de vídeo debe llamar a DxApi para realizar son las siguientes:
Abra un identificador para DirectDraw en modo kernel (identificador de función DxApi establecido en DD_DXAPI_OPENDIRECTDRAW). Esta operación debe realizarse en IRQL = PASSIVE_LEVEL.
Obtenga las funcionalidades del modo kernel del puerto de vídeo de hardware (identificador de función DxApi establecido en DD_DXAPI_GETKERNELCAPS).
Registre devoluciones de llamada para controlar eventos de DirectDraw, como los modificadores de modo a un símbolo del sistema de pantalla completa (identificador de función DxApi establecido en DD_DXAPI_REGISTER_CALLBACK).
Abra un identificador para dirigirse a las superficies de DirectDraw (identificador de función DxApi establecido en DD_DXAPI_OPENSURFACE).
Anule el registro de devoluciones de llamada (identificador de función DxApi establecido en DD_DXAPI_UNREGISTER_CALLBACK).
Cierre los identificadores de las superficies, así como a DirectDraw en modo kernel (identificador de función DxApi establecido en DD_DXAPI_CLOSEHANDLE)
Dispositivos secundarios de puerto de vídeo y administración de energía
Los dispositivos secundarios de puerto de vídeo, como los adaptadores de combinación de tuner y de pantalla de TV, pueden bloquear las transiciones de estado de energía cuando el minidriver está en uso. El bloqueo de transición de estado de energía se produce cuando el minidriver está activo en uso (los anclajes o filtros están abiertos). Si se carga el minidriver pero no tiene patillas o filtros en uso, se producirán transiciones de estado de energía de S0 (totalmente alimentado) a estados de menor potencia (por ejemplo, S1, S2, S3 y S4). El bloqueo de transición de estado de energía solo se produce con minidriveres de clase Stream que son clientes de dispositivos secundarios de puerto de vídeo.
Hay disponible una exención WHQL para dispositivos que cumplan este criterio, por lo que los proveedores todavía pueden obtener un logotipo.