Introducción a la compatibilidad con códecs de hardware en AVStream
A partir de Windows 7, Windows Media Foundation representa componentes multimedia basados en AVStream como transformaciones de Media Foundation (MFT) en modo de usuario.
Con esta característica, los proveedores pueden presentar descodificadores basados en hardware, codificadores y procesadores de vídeo como MFP que, a su vez, se pueden manipular en el nivel de aplicación.
El modelo AVStream permanece sin cambios en Windows 7 y solo requiere algunas adiciones al minidriver para habilitar esta funcionalidad.
La topología de transcodificación se muestra en el diagrama siguiente:
Para obtener el mejor rendimiento, el procesamiento multimedia que se muestra en la fila inferior del diagrama debe producirse en hardware dedicado. En este escenario, el hardware de transcodificación dedicado se conoce como Descodificador de codificador de hardware protegido (SHED). SHED se puede empaquetar como módulo de complemento para la placa base o como una característica integrada en el adaptador de pantalla.
Windows 7 sigue admitiendo la transcodificación basada en software. Sin embargo, dado que el sistema realiza el trabajo de transcodificación en hardware dedicado en lugar de la CPU, una solución basada en SHED mejora significativamente la experiencia del usuario en comparación con una solución basada en software.
Como se muestra en el diagrama anterior, los clientes en modo de usuario pueden acceder a las transformaciones en modo de usuario mediante la interfaz IMFTransform que se expone en cada MFT. IMFTransform está disponible en Vista y versiones posteriores de Windows, pero el mecanismo para exponer el procesamiento multimedia basado en hardware a las aplicaciones en modo de usuario solo está disponible a partir de Windows 7.
El proxy de dispositivo proporcionado por el sistema o Devproxy, el módulo tiene el mismo rol que KSProxy en el modelo de streaming de DirectShow. Devproxy agentes de comunicación entre Ks.sys en modo kernel y componentes de MFT en modo de usuario.
La función de procesamiento de medios de hardware ajustada resultante se denomina MFT del proxy de dispositivo. Para aprovechar este mecanismo, un minidriver AVStream debe hacer lo siguiente:
Exponga funciones de transformación como filtros KS individuales que forman parte del minidriver AVStream. Por ejemplo, si el dispositivo tiene características de descodificación, codificación y procesamiento de vídeo, estas funciones deben representarse como tres filtros KS distintos.
Codificador: se usa para convertir de un formato sin comprimir a un formato comprimido.
Descodificador: se usa para convertir de un formato comprimido a un formato sin comprimir, que debe incluir NV12.
Procesador de vídeo: se usa para realizar escalado, entrelazamiento o deslalazado y conversión de formato. No incluya compatibilidad con el procesamiento de vídeo en el filtro de descodificador o codificador.
Microsoft recomienda encarecidamente que los proveedores proporcionen compatibilidad con el escalado basado en hardware. Sin embargo, si decide no proporcionar compatibilidad con el escalado basado en hardware, puede usar el MFT de procesamiento de vídeo proporcionado por el sistema para realizar operaciones de escalado en un nivel reducido de rendimiento. Si no proporciona compatibilidad con el escalado basado en hardware, el generador de topologías de Media Foundation inserta automáticamente el MFT de escalado proporcionado por el sistema en la topología.
Registre sus filtros KS de procesamiento multimedia en una de las siguientes categorías de KS, disponibles en Windows 7 y versiones posteriores de Windows:
Además, también se definen las siguientes categorías para su uso en otros escenarios de transcodificación:
A continuación, las aplicaciones de Media Foundation pueden usar la función MFTEnumEx para enumerar los dispositivos registrados como MFT mediante las categorías mencionadas anteriormente.