Primer llançament de libcamera, una pila per al suport de la càmera a Linux

Després de quatre anys de desenvolupament, es va formar la primera versió del projecte libcamera (0.0.1), que ofereix una pila de programari per treballar amb càmeres de vídeo, càmeres i sintonitzadors de TV a Linux, Android i ChromeOS, que continua amb el desenvolupament de l'API V4L2. i finalment el substituirà. Com que l'API de la biblioteca encara està canviant i encara no s'ha estabilitzat completament, el projecte s'ha desenvolupat fins ara sense ramificar-se en versions individuals utilitzant un model de desenvolupament continu. En resposta a la necessitat de distribucions per fer un seguiment dels canvis de l'API que afecten la compatibilitat i per simplificar el lliurament de biblioteques en paquets, ara s'ha pres la decisió de generar periòdicament versions que reflecteixin l'abast dels canvis d'ABI i API. El codi del projecte està escrit en C++ i es distribueix sota la llicència LGPLv2.1.

El projecte està sent desenvolupat per desenvolupadors de subsistemes multimèdia del nucli Linux juntament amb alguns fabricants de càmeres per tal de normalitzar la situació amb el suport de Linux per a càmeres per a telèfons intel·ligents i dispositius incrustats que estan lligats a controladors propietaris. L'API V4L2, ja disponible al nucli de Linux, es va crear en un moment per funcionar amb càmeres web tradicionals separades i està mal adaptada a la tendència recent de moure la funcionalitat de l'MCU a les espatlles de la CPU.

A diferència de les càmeres tradicionals, en què les operacions de processament d'imatges primàries es realitzen en un processador especialitzat integrat a la càmera (MCU), en dispositius incrustats, per reduir el cost, aquestes funcions es duen a terme a les espatlles de la CPU principal i requereixen un controlador complex que inclou components amb llicència no de codi obert. Com a part del projecte libcamera, els defensors del programari de codi obert i els fabricants de maquinari van intentar crear una solució de compromís que, d'una banda, satisfés les necessitats dels desenvolupadors de programari de codi obert i, de l'altra, permeti protegir la propietat intel·lectual dels fabricants de càmeres.

La pila que ofereix la biblioteca libcamera s'implementa completament a l'espai d'usuari. Per garantir la compatibilitat amb els entorns de programari i les aplicacions existents, es proporcionen capes de compatibilitat per a l'API V4L, Gstreamer i Android Camera HAL. Els components propietaris d'interacció amb equips específics de cada càmera estan dissenyats com a mòduls executats en processos separats i que interactuen amb la biblioteca mitjançant IPC. Els mòduls no tenen accés directe al dispositiu i accedeixen a l'equip a través d'una API intermèdia, les sol·licituds a través de la qual es revisen, es filtren i es limiten a accedir només a la funcionalitat necessària per controlar la càmera.

La biblioteca també ofereix accés a algorismes per processar i millorar la qualitat d'imatges i vídeos (ajust de balanç de blancs, reducció de soroll, estabilització de vídeo, enfocament automàtic, selecció d'exposició, etc.), que es poden connectar en forma de biblioteques externes obertes o propietat mòduls aïllats. L'API proporciona accés a funcions com ara la determinació de la funcionalitat de les càmeres externes i integrades existents, l'ús de perfils de dispositius, la gestió dels esdeveniments de connexió i desconnexió de la càmera, la gestió de la captura de dades de la càmera a nivell de fotograma individual i la sincronització d'imatges amb flaix. És possible treballar per separat amb diverses càmeres del sistema i organitzar la captura simultània de diversos fluxos de vídeo des d'una càmera (per exemple, una de baixa resolució per a videoconferència i una altra d'alta resolució per a la gravació d'arxiu en disc).

Font: opennet.ru

Afegeix comentari