Primeira versión de libcamera, unha pila para soporte de cámara en Linux

Despois de catro anos de desenvolvemento, formouse a primeira versión do proxecto libcamera (0.0.1), que ofrece unha pila de software para traballar con cámaras de vídeo, cámaras e sintonizadores de TV en Linux, Android e ChromeOS, que continúa co desenvolvemento da API V4L2. e eventualmente substituirá. Dado que a API da biblioteca aínda está cambiando e aínda non se estabilizou por completo, o proxecto desenvolveuse ata agora sen ramificar versións individuais utilizando un modelo de desenvolvemento continuo. En resposta á necesidade de distribucións para facer un seguimento dos cambios da API que afectan á compatibilidade e para simplificar a entrega de bibliotecas en paquetes, agora tomouse a decisión de xerar periodicamente versións que reflictan a extensión dos cambios na ABI e na API. O código do proxecto está escrito en C++ e distribúese baixo a licenza LGPLv2.1.

O proxecto está a ser desenvolvido por desenvolvedores de subsistemas multimedia do núcleo de Linux xunto con algúns fabricantes de cámaras co fin de normalizar a situación co soporte de Linux para cámaras para teléfonos intelixentes e dispositivos integrados que están ligados a controladores propietarios. A API V4L2, xa dispoñible no núcleo de Linux, creouse nun tempo para funcionar con cámaras web tradicionais separadas e está mal adaptada á recente tendencia de mover a funcionalidade da MCU aos ombreiros da CPU.

A diferenza das cámaras tradicionais, nas que as operacións de procesamento de imaxes primarias se realizan nun procesador especializado integrado na cámara (MCU), nos dispositivos integrados, para reducir o custo, estas funcións realízanse nos ombreiros da CPU principal e requiren un controlador complexo que inclúe compoñentes con licenza non de código aberto. Como parte do proxecto libcamera, os defensores do software de código aberto e os fabricantes de hardware intentaron crear unha solución de compromiso que, por unha banda, satisfaga as necesidades dos desenvolvedores de software de código aberto e, por outra, permita protexer a propiedade intelectual dos fabricantes de cámaras.

A pila que ofrece a biblioteca libcamera está implementada integramente no espazo do usuario. Para garantir a compatibilidade cos contornos e aplicacións de software existentes, ofrécense capas de compatibilidade para a API V4L, Gstreamer e Android Camera HAL. Os compoñentes propietarios específicos de cada cámara para interactuar cos equipos están deseñados como módulos que se executan en procesos separados e interactúan coa biblioteca mediante IPC. Os módulos non teñen acceso directo ao dispositivo e acceden ao equipo a través dunha API intermedia, solicitudes a través da cal se verifican, filtran e limitan a acceder só á funcionalidade necesaria para controlar a cámara.

A biblioteca tamén ofrece acceso a algoritmos para procesar e mellorar a calidade de imaxes e vídeos (axuste do balance de brancos, redución de ruído, estabilización de vídeo, enfoque automático, selección de exposición, etc.), que se poden conectar en forma de bibliotecas externas abertas ou propietarias. módulos illados. A API proporciona acceso a funcións como determinar a funcionalidade das cámaras externas e integradas existentes, usar perfís de dispositivos, xestionar eventos de conexión e desconexión da cámara, xestionar a captura de datos da cámara a nivel de fotograma individual e sincronizar imaxes con flash. É posible traballar por separado con varias cámaras do sistema e organizar a captura simultánea de varios fluxos de vídeo desde unha cámara (por exemplo, unha con baixa resolución para videoconferencia e outra con alta resolución para a gravación de arquivos en disco).

Fonte: opennet.ru

Engadir un comentario