Primer lanzamiento de libcamera, una pila para soporte de cámaras en Linux

Después de cuatro años de desarrollo, se formó la primera versión del proyecto libcamera (0.0.1), que ofrece una pila de software para trabajar con cámaras de video, cámaras y sintonizadores de TV en Linux, Android y ChromeOS, que continúa el desarrollo de la API V4L2. y eventualmente lo reemplazará. Dado que la API de la biblioteca aún está cambiando y aún no se ha estabilizado por completo, el proyecto hasta ahora se ha desarrollado sin ramificar versiones individuales utilizando un modelo de desarrollo continuo. En respuesta a la necesidad de que las distribuciones realicen un seguimiento de los cambios de API que afectan la compatibilidad y para simplificar la entrega de bibliotecas en paquetes, ahora se ha tomado la decisión de generar periódicamente versiones que reflejen el alcance de los cambios de ABI y API. El código del proyecto está escrito en C++ y distribuido bajo la licencia LGPLv2.1.

El proyecto lo están desarrollando desarrolladores de subsistemas multimedia del kernel de Linux junto con algunos fabricantes de cámaras para normalizar la situación con el soporte de Linux para cámaras para teléfonos inteligentes y dispositivos integrados vinculados a controladores propietarios. API V4L2, ya disponible en el kernel de Linux, fue creada en un momento para funcionar con cámaras web tradicionales independientes y está mal adaptada a la tendencia reciente de trasladar la funcionalidad de MCU a la CPU.

A diferencia de las cámaras tradicionales, en las que las operaciones de procesamiento primario de imágenes se realizan en un procesador especializado integrado en la cámara (MCU), en los dispositivos integrados, para reducir costos, estas funciones se llevan a cabo sobre los hombros de la CPU principal y requieren un controlador complejo que incluye componentes con licencia que no son de código abierto. Como parte del proyecto libcamera, los defensores del software de código abierto y los fabricantes de hardware intentaron crear una solución de compromiso que, por un lado, satisfaga las necesidades de los desarrolladores de software de código abierto y, por otro, permita proteger la propiedad intelectual de los fabricantes de cámaras.

La pila que ofrece la biblioteca libcamera se implementa completamente en el espacio del usuario. Para garantizar la compatibilidad con aplicaciones y entornos de software existentes, se proporcionan capas de compatibilidad para V4L API, Gstreamer y Android Camera HAL. Los componentes propietarios específicos de cada cámara para interactuar con el equipo están diseñados como módulos que se ejecutan en procesos separados e interactúan con la biblioteca a través de IPC. Los módulos no tienen acceso directo al dispositivo y acceden al equipo a través de una API intermedia, cuyas solicitudes son revisadas, filtradas y limitadas a acceder únicamente a la funcionalidad necesaria para controlar la cámara.

La biblioteca también brinda acceso a algoritmos para procesar y mejorar la calidad de imágenes y videos (ajuste del balance de blancos, reducción de ruido, estabilización de video, enfoque automático, selección de exposición, etc.), que se pueden conectar en forma de bibliotecas externas abiertas o propietarias. Módulos aislados. La API brinda acceso a funciones como determinar la funcionalidad de las cámaras externas e integradas existentes, usar perfiles de dispositivos, manejar eventos de conexión y desconexión de la cámara, administrar la captura de datos de la cámara a nivel de fotograma individual y sincronizar imágenes con flash. Es posible trabajar por separado con varias cámaras en el sistema y organizar la captura simultánea de varias transmisiones de video desde una cámara (por ejemplo, una con baja resolución para videoconferencias y otra con alta resolución para grabación de archivos en disco).

Fuente: opennet.ru

Añadir un comentario