Cambios de formato dinámico

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

Cuando se conectan dos filtros, aceptan un tipo de medio, que describe el formato de los datos que entregará el filtro ascendente. En la mayoría de los casos, el tipo de medio se fija durante la conexión. Sin embargo, DirectShow ofrece compatibilidad limitada con filtros para cambiar el tipo de medio. Cuando un filtro cambia los tipos de medios, se denomina cambio de formato dinámico. Si va a escribir un filtro DirectShow, debe tener en cuenta los mecanismos para los cambios de formato dinámico. Incluso si el filtro no admite estos cambios, debe responder correctamente si otro filtro solicita un nuevo formato.

DirectShow define varios mecanismos distintos para los cambios de formato dinámico, según el estado del gráfico de filtro y el tipo de cambio necesario.

  • Si se detiene el gráfico, las patillas pueden volver a conectarse y renegociar el tipo de medio. Para obtener más información, consulte Reconexión de patillas.
  • Algunos filtros pueden volver a conectar patillas incluso mientras el grafo está activo (en ejecución o en pausa). Para obtener más información sobre este mecanismo, consulte Reconexión dinámica.

De lo contrario, si el gráfico está activo, pero los filtros en cuestión no admiten reconexión de patillas dinámicas, hay tres mecanismos posibles para cambiar el formato:

  • QueryAccept (Downstream) se usa cuando un pin de salida propone un cambio de formato en su nivel inferior, pero solo si el nuevo formato no requiere un búfer mayor.
  • QueryAccept (Upstream) se usa cuando un pin de entrada propone un cambio de formato a su par ascendente. El nuevo formato puede tener el mismo tamaño o puede ser mayor.
  • ReceiveConnection se usa cuando un pin de salida propone un cambio de formato en su par de bajada y el nuevo formato requiere un búfer mayor.

Control de los cambios de formato del representador de vídeo