Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Al escribir un minidriver AVStream, proporciona filtros que usan uno de los dos paradigmas de procesamiento: procesamiento centrado en pines o procesamiento centrado en filtros.
El procesamiento centrado en pines significa que AVStream llama a la rutina de procesamiento del pin del minidriver cuando llegan nuevos fotogramas a la cola de pines.
El procesamiento centrado en filtros significa que AVStream llama a la rutina de proceso del filtro del minidriver cuando hay tramas de datos disponibles en cada pin creado. Tenga en cuenta que estas definiciones especifican el comportamiento predeterminado; Los minidrivers pueden modificar el comportamiento predeterminado estableciendo marcas en la estructura KSPIN_DESCRIPTOR_EX .
En general, los filtros de software usan el procesamiento centrado en filtros y los filtros de hardware usan el procesamiento centrado en pines. Por ejemplo, el hardware que transforma o procesa datos podría dirigir los datos en un filtro centrado en pines. Hay casos poco frecuentes en los que estos roles se pueden invertir.
Para proporcionar un filtro centrado en pines, el minidriver proporciona un puntero a una rutina de devolución de llamada AVStrMiniPinProcess en cada estructura KSPIN_DISPATCH; no proporcione un despacho de procesamiento en la estructura KSFILTER_DISPATCH.
Si el minidriver no modifica la configuración de marca en la estructura de KSPIN_DESCRIPTOR_EX, AVStream llama a la rutina de devolución de llamada AVStrMiniPinProcess proporcionada por el proveedor en tres situaciones:
El pin pasa al estado mínimo de procesamiento. Los fotogramas ya deben existir en la cola, y el pin debe pasar de un estado inferior al mínimo de procesamiento a al menos el estado mínimo de procesamiento.
Llegan nuevos fotogramas. El pin debe estar en al menos el estado de procesamiento mínimo y no debe haber fotogramas en el borde inicial o delante.
Minidriver llama explícitamente a KsPinAttemptProcessing.
De forma predeterminada, pausa es el estado de procesamiento mínimo.
Además, AVStream no llama al envío del proceso de anclaje si se cierra la puerta AND del pin. Si usa las rutinas KSGATEXxx para agregar entradas adicionales a la puerta AND del pin, por ejemplo, no se invocará la distribución del proceso.
Cuando AVStream llama a AVStrMiniPinProcess, proporciona un puntero al objeto pin que tiene datos disponibles. Después, el envío de procesamiento del minidriver puede adquirir un puntero de borde inicial llamando a KsPinGetLeadingEdgeStreamPointer. A continuación, los datos de flujo son manipulados por los minidrivers utilizando la API de puntero de flujo.
Los minidrivers que usan el procesamiento centrado en pin pueden modificar cuándo AVStream llama al despacho de AVStrMiniPinProcess estableciendo banderas en la estructura KSPIN_DESCRIPTOR_EX pertinente. Las descripciones de indicadores en la página de referencia de KSPIN_DESCRIPTOR_EX son especialmente relevantes para los proveedores que implementan filtros centrados en pines.
Los intentos de procesamiento pueden producir un error si el minidriver mantiene el mutex de procesamiento en KsPinAcquireProcessingMutex. También pueden surgir problemas si el minidriver manipula directamente una puerta mediante las llamadas KSGATE* .
El controlador de ejemplo de hardware simulado (AVSHwS) de AVStream en los ejemplos del Kit de controladores de Windows es un controlador de captura centrado en pines para una pieza simulada de hardware. En el ejemplo de Avshws se muestra cómo implementar DMA a través de AVStream.