Compartir a través de


Consideraciones para las MFT de controladores en cámaras multi-pin (aplicaciones de dispositivos para UWP)

Important

Los metadatos de dispositivo están obsoletos y se eliminarán en una futura versión de Windows. Para obtener información sobre el reemplazo de esta funcionalidad, vea Driver Package Container Metadata.

Windows ofrece IMV y OEM del sistema la capacidad de crear complementos de procesamiento de vídeo en forma de media Foundation Transform (MFT), conocido como el controlador de cámara MFT. Una vez instalados, las aplicaciones de dispositivos para UWP usan estas MFT de controladores para habilitar efectos de vídeo especiales. Algunas cámaras proporcionan pines independientes para la vista previa, captura e imágenes fijas. Estas cámaras multipin suponen desafíos únicos para los desarrolladores. En este artículo se describen algunos puntos que se deben tener en cuenta al desarrollar un controlador de cámara MFT en una cámara de múltiples patillas. Para obtener más información sobre cómo crear un controlador MFT, consulta Creación de un controlador de cámara MFT.

Introduction

El controlador MFT también se conoce como MFT0 para indicar que es el primer MFT para operar en el lector de origen. Se adjunta una instancia independiente de MFT0 a cada pin del origen de captura. Para algunos OEM del sistema, el controlador de captura de AVStream debe admitir un pin de vista previa, un pin de captura y un pin todavía. Esto significa que puede haber tres instancias de MFT0. En este diagrama se muestra esta arquitectura, con tres copias del complemento IHV MFT, una para cada secuencia.

modelo de complemento de extensión de captura en mf.

Los escenarios típicos de MFT0 pueden presentar desafíos. Dos funciones populares para MFT0 son:

  • Análisis de la secuencia de vídeo para proporcionar comentarios a la cámara para una captura mejorada (como el enfoque automático basado en host y la exposición automática)

  • Adición de efectos de vídeo

One-pin webcam

Históricamente, las cámaras se exponen a Windows como un solo pin de captura. Este diagrama representa la forma en que funciona una cámara web de un solo pin:

one-pin webcam.

En este caso, tanto el control de cámara como los efectos de vídeo funcionan tal y como están diseñados porque la vista previa y todavía se tete del pin de captura después de que se apliquen los efectos de vídeo y control de cámara. El resultado es que el archivo guardado o el compañero de chat del usuario ve los mismos efectos de vídeo que el usuario ve en su vista previa y que solo hay una instancia de la característica de control de cámara. Si hay una aplicación de dispositivo UWP asociada, la aplicación está conectada a MFT0 en el pin de captura, por lo que MFT0 obtiene los mensajes de control de la aplicación (es decir, el usuario).

Three-pin webcam

Una cámara de tres patillas podría tener hasta tres instancias de MFT0, en función de las necesidades de la aplicación. Este diagrama representa la forma en que funciona una cámara de tres patillas:

three-pin webcam.

Esta situación presenta varios desafíos. En primer lugar, en el caso de una solución de exposición automática basada en host, que requiere el control directo del sensor de cámara y la configuración de ISP, es posible que tres MFT0 intenten controlar la cámara al mismo tiempo. Esto interrumpe el sistema de control.

En segundo lugar, puede haber tres instancias de efectos de vídeo. Más allá de incurrir en el costo de tres veces los cálculos, las tres instancias del MFT0 ahora deben comunicarse de una manera que garantiza que cada fotograma de vídeo siempre tenga el mismo efecto en el mismo estado exacto. De lo contrario, lo que ve el usuario no será lo que se guarda o comparte.

Además, hay dos factores compuestos finales:

  • Cada instancia de MFT0 se podría crear o apagar en cualquier momento

  • La aplicación de dispositivo para UWP solo está conectada a una instancia de MFT0

Compressed video

Un OEM de cámara web o sistema podría optar por comprimir el vídeo antes de que se presente en el pin de captura (es decir, en la propia cámara web). La descarga de la compresión en una cámara web permite que los equipos con tecnología inferior guarden y compartan vídeo HD. Por lo general, esta secuencia de vídeo comprimida no se puede analizar para admitir el control de cámara ni se pueden aplicar efectos de vídeo. Este escenario presenta el desafío de hacer que todas las instancias de MFT0 (y la aplicación de dispositivo de Microsoft Store, si está ahí) sean conscientes de que no se aplican efectos a la secuencia de captura. Este diagrama representa vídeo comprimido:

compressed video.

Si un usuario aplica un efecto de vídeo a la secuencia de vista previa, no se puede aplicar a la secuencia de captura ni a la anclar. Por lo tanto, el usuario ve un efecto de vídeo que no se aplica al vídeo guardado o transmitido. Si se detiene la secuencia de vista previa, la aplicación de dispositivo de Microsoft Store intentará conectarse a la secuencia de captura. Cuando un usuario transmite vídeo comprimido, esto no permite muchas características.

Comunicación entre instancias de MFT0

Si las tres instancias de MFT0 pueden comunicarse entre sí, esto podría resolver la mayoría de los problemas. La forma en que estas instancias se detectan entre sí es hasta el IHV. Una vez que todos los MFT0 pueden comunicarse, la instancia de MFT0 conectada a la aplicación de dispositivo de Microsoft Store puede permitir que otras instancias sepan qué efecto se aplica y su estado actual. Además, las tres instancias pueden determinar qué instancia aplica el control de cámara. Por último, el pin de vista previa puede determinar si el pin de captura es el vídeo codificado en streaming. Después, el pin de vista previa puede deshabilitar los efectos de vídeo.

Aunque la comunicación entre instancias de MFT0 resuelve los principales problemas de la experiencia del usuario, tres instancias de efectos de vídeo deben seguir ejecutándose simultáneamente. Algunos efectos de vídeo pueden usar la mayoría de los recursos de CPU disponibles, especialmente cuando el vídeo de pantalla completa se está previsualizando y capturando al mismo tiempo. Estos son problemas graves. Por motivos de rendimiento, cada ISV debe tener en cuenta qué procesamiento se podría realizar una vez y compartirlo con todas las instancias de MFT0, como la detección de caras.