Compartir a través de


Consideraciones para las MFT de controladores en cámaras de varios pines (aplicaciones de dispositivos para UWP)

Windows 8.1 ofrece a IHV y OEM del sistema la capacidad de crear complementos de procesamiento de vídeo en forma de Transformación de Media Foundation (MFT), conocido como MFT de controlador de cámara. Una vez instaladas, las aplicaciones de dispositivos para UWP pueden usar estas MFT de controlador para habilitar efectos de vídeo especiales. Algunas cámaras proporcionan pines independientes para la vista previa, la captura y las imágenes fijas. Estas cámaras de varios pines suponen desafíos únicos para los desarrolladores. En este tema se tratan algunos puntos que se deben tener en cuenta al desarrollar una MFT de controlador de cámara en una cámara de varios pines. Para obtener más información sobre cómo crear una MFT de controlador de cámara, consulte Creación de una MFT de controlador de cámara.

Introducción

La MFT de controlador MFT también se conoce como MFT0 para indicar que es la primera MFT para utilizar 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 AVStream debe admitir un pin de vista previa, un pin de captura y un pin fijo. Esto significa que puede haber tres instancias de MFT0. En este diagrama se muestra esta arquitectura, con tres copias del complemento MFT de IHV, uno para cada secuencia.

capture extension plug-in model in mf.

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

  • Analizar 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)

  • Añadir efectos de vídeo

Cámara web de un pin

Históricamente, las cámaras se han expuesto 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 según lo previsto, ya que la vista previa y las imágenes fijas se conectan en T desde el pin de captura después de aplicar el control de cámara y los efectos de vídeo. El resultado es que el archivo guardado o el compañero de chat del usuario verán los mismos efectos de vídeo que el usuario ve en su vista previa, y que solo hay una instancia de la función de control de cámara. Si hay una aplicación de dispositivo para UWP asociada, la aplicación se conecta a MFT0 en el pin de captura, por lo que MFT0 obtiene los mensajes de control de la aplicación (es decir, el usuario).

Cámara web de tres pines

Una cámara de tres pines puede tener hasta tres instancias de MFT0, según las necesidades de la aplicación. Este diagrama representa la forma en que funciona una cámara de tres pines:

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 la 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. Además de incurrir en el coste del triple de cálculos, las tres instancias de MFT0 deben comunicarse ahora de forma que se garantice que cada fotograma de vídeo tenga siempre el mismo efecto en exactamente el mismo estado. De lo contrario, lo que ve el usuario no será lo que se guarda o comparte.

Además, hay dos factores agravantes finales:

  • Cada instancia de MFT0 se puede crear o apagar en cualquier momento

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

Vídeo comprimido

Un OEM de cámara web o sistema puede optar por comprimir el vídeo antes de que se presente en el pin de captura (es decir, en la propia cámara web). Descargar la compresión en una cámara web permite a los equipos menos potentes guardar y compartir vídeo HD. Por lo general, esta secuencia de vídeo comprimido no puede analizarse para controlar la cámara ni pueden aplicarse efectos de vídeo. Esto presenta el reto de hacer que todas las instancias de MFT0 (y la aplicación del dispositivo Microsoft Store, si está allí) sepan que no se aplicarán 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 podrá aplicarlo a la secuencia de captura ni al pin fijo. 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 puede resolver la mayoría de los problemas. La forma en que estas instancias se detectan entre sí depende del IHV. Una vez que todas las 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 está transmitiendo vídeo codificado. 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 a 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 puede realizar una vez, como la detección de caras, y compartirlo con todas las instancias de MFT0.