Acerca de los filtros directShow
[La característica asociada a esta página, DirectShow, es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEngine y Captura de audio/vídeo en Media Foundation. Esas características se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use MediaPlayer, IMFMediaEngine y Audio/Video Capture en Media Foundation en lugar de DirectShow, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.
DirectShow usa una arquitectura modular, donde cada fase de procesamiento se realiza mediante un objeto COM denominado filtro. DirectShow proporciona un conjunto de filtros estándar para que las aplicaciones las usen, y los desarrolladores pueden escribir sus propios filtros personalizados que amplían la funcionalidad de DirectShow. Para ilustrarlo, estos son los pasos necesarios para reproducir un archivo de vídeo AVI, junto con los filtros que realizan cada paso:
- Lea los datos sin procesar del archivo como una secuencia de bytes (filtro de origen de archivo).
- Examine los encabezados AVI y analice la secuencia de bytes en fotogramas de vídeo y muestras de audio independientes (filtro divisor AVI).
- Descodifique los fotogramas de vídeo (varios filtros de descodificador, según el formato de compresión).
- Dibuje los fotogramas de vídeo (filtro Video Renderer).
- Envíe las muestras de audio a la tarjeta de sonido (filtro predeterminado del dispositivo DirectSound).
Estos filtros se muestran en el diagrama siguiente.
Como se muestra en el diagrama, cada filtro está conectado a uno o varios filtros. Los puntos de conexión también son objetos COM, denominados patillas. Los filtros usan patillas para mover datos de un filtro al siguiente. Las flechas del diagrama muestran la dirección en la que viajan los datos. En DirectShow, un conjunto de filtros se denomina gráfico de filtros.
Los filtros tienen tres estados posibles: en ejecución, detenidos y en pausa. Cuando se ejecuta un filtro, procesa los datos multimedia. Cuando se detiene, deja de procesar los datos. El estado en pausa se usa para indicar los datos antes de ejecutarse; en la sección Data Flow del gráfico de filtros se describe este concepto con más detalle. Con excepciones muy raras, los cambios de estado se coordinan a lo largo de todo el gráfico de filtros; todos los filtros del modificador del grafo están en unísono. Por lo tanto, también se dice que todo el gráfico de filtro se está ejecutando, detenido o en pausa.
Los filtros se pueden agrupar en varias categorías generales:
- Un filtro de origen introduce datos en el gráfico. Los datos pueden proceder de un archivo, una red, una cámara o cualquier otro lugar. Cada filtro de origen controla un tipo diferente de origen de datos.
- Un filtro de transformación toma un flujo de entrada, procesa los datos y crea un flujo de salida. Los codificadores y descodificadores son ejemplos de filtros de transformación.
- Los filtros del representador se encuentran al final de la cadena. Reciben datos y los presentan al usuario. Por ejemplo, un representador de vídeo dibuja fotogramas de vídeo en la pantalla; un representador de audio envía datos de audio a la tarjeta de sonido; y un filtro de escritor de archivos escribe datos en un archivo.
- Un filtro divisor divide un flujo de entrada en dos o más salidas, normalmente a la hora de analizar el flujo de entrada en el camino. Por ejemplo, el divisor AVI analiza una secuencia de bytes en secuencias de audio y vídeo independientes.
- Un filtro mux toma varias entradas y las combina en una sola secuencia. Por ejemplo, avi Mux realiza la operación inversa del divisor AVI. Toma secuencias de audio y vídeo y genera una secuencia de bytes con formato AVI.
Las diferencias entre estas categorías no son absolutas. Por ejemplo, el filtro lector de ASF actúa como un filtro de origen y un filtro divisor.
Todos los filtros DirectShow exponen la interfaz IBaseFilter y todas las patillas exponen la interfaz IPin . DirectShow también define muchas otras interfaces que admiten funcionalidades más específicas.
Temas relacionados