Transportes

[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.

Para mover los datos multimedia a través del gráfico de filtros, un filtro DirectShow debe admitir uno de varios protocolos posibles. Estos protocolos se denominan transportes. Cuando dos filtros se conectan, deben admitir el mismo transporte; de lo contrario, no pueden intercambiar datos multimedia. Normalmente, un transporte requiere que uno de los pines admita una interfaz determinada. Cuando los filtros se conectan, una patilla consulta la otra para la interfaz.

La mayoría de los filtros DirectShow contienen datos multimedia en la memoria principal y los entregan a otros filtros entre conexiones de patillas. Este tipo de transporte se denomina transporte de memoria local. Aunque el transporte de memoria local es el transporte más común en DirectShow, no todos los filtros lo usan. Por ejemplo, algunos filtros envían datos multimedia a lo largo de una ruta de acceso de hardware y usan patillas solo para entregar información de control. Por ejemplo, vea la interfaz IOverlay .

DirectShow define dos mecanismos para el transporte de memoria local, el modelo de inserción y el modelo de extracción. En el modelo de inserción, un filtro de origen genera datos y los entrega al siguiente filtro de bajada. Ese filtro recibe pasivamente los datos, los procesa y los envía más abajo. En el modelo de extracción, el filtro de origen está conectado a un filtro de analizador. El filtro del analizador solicita datos del filtro de origen. El filtro de origen responde a las solicitudes mediante la entrega de datos. El modelo de inserción usa la interfaz IMemInputPin y el modelo de extracción usa la interfaz IAsyncReader .

El modelo de inserción es más común que el modelo de extracción. Por lo tanto, los artículos siguientes asumen un modelo de inserción. En el último artículo de esta sección, Pull Model, se describe cómo difiere la interfaz IAsyncReader de IMemInputPin.

Data Flow en el gráfico de filtros