Compartir a través de


Cambios de formato dinámico

[La característica asociada a esta página, DirectShow, es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEnginey captura de audio y 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 captura de audio y vídeo 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, coinciden en un tipo de medio, que describe el formato de los datos que proporcionará 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, en función del estado del gráfico de filtro y del tipo de cambio necesario.

  • Si se detiene el grafo, las patillas pueden volver a conectarse y renegociar el tipo de medio. Para obtener más información, consulte de pins de reconexión.
  • Algunos filtros pueden volver a conectar patillas incluso mientras el gráfico 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 (bajada) se usa cuando un pin de salida propone un cambio de formato en su par de bajada, 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 en su elemento del mismo nivel 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 de Video Renderer