Anclar conexiones

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

Los filtros se conectan en sus patillas, a través de la interfaz IPin . Las patillas de salida se conectan a los patillas de entrada. Cada conexión de patilla tiene un tipo de medio, descrito por la estructura AM_MEDIA_TYPE .

Una aplicación conecta filtros mediante una llamada a métodos en filter Graph Manager, nunca llamando a métodos en los filtros o anclados por sí mismos. La aplicación puede especificar directamente qué filtros se van a conectar llamando al método IFilterGraph::ConnectDirect o IGraphBuilder::Connect ; o bien puede conectar filtros indirectamente, mediante un método de creación de grafos como IGraphBuilder::RenderFile.

Para que la conexión se realice correctamente, ambos filtros deben estar en el gráfico de filtros. La aplicación puede agregar un filtro al grafo llamando al método IFilterGraph::AddFilter . El Administrador de gráficos de filtros también puede agregar filtros al grafo. Cuando se agrega un filtro, Filter Graph Manager llama al método IBaseFilter::JoinFilterGraph del filtro para notificar al filtro.

El esquema general del proceso de conexión es el siguiente:

  1. El Administrador de gráficos de filtros llama a IPin::Connect en el pin de salida, pasando un puntero al pin de entrada.
  2. Si el pin de salida acepta la conexión, llama a IPin::ReceiveConnection en el pin de entrada.
  3. Si el pin de entrada también acepta la conexión, el intento de conexión se realiza correctamente y las patillas están conectadas.

Algunas patillas se pueden desconectar y volver a conectar mientras el filtro está activo. Este tipo de reconexión se denomina reconexión dinámica . Para obtener más información, vea Dynamic Graph Building. Sin embargo, la mayoría de los filtros no admiten la reconexión dinámica.

Normalmente, los filtros se conectan en orden de bajada; es decir, las patillas de entrada del filtro se conectan antes de que sus patillas de salida. Un filtro siempre debe admitir este orden de conexión. Algunos filtros también admiten conexiones en el orden opuesto: primero los pines de salida, seguidos de los pines de entrada. Por ejemplo, puede ser posible conectar el pin de salida de un filtro MUX al filtro de escritor de archivos, antes de conectar las patillas de entrada del filtro MUX.

Cuando se llama al método Connect o ReceiveConnection de un pin, el pin debe comprobar que puede admitir la conexión. Los detalles dependen del filtro concreto. Entre las tareas más comunes se incluyen las siguientes:

  • Compruebe que el tipo de medio es aceptable.
  • Negociar un asignador
  • Consulte el otro pin para las interfaces necesarias.