Første udgivelse af libcamera, en stak til kameraunderstøttelse på Linux

Efter fire års udvikling blev den første udgivelse af libcamera-projektet (0.0.1) dannet, der tilbyder en softwarestak til at arbejde med videokameraer, kameraer og tv-tunere i Linux, Android og ChromeOS, som fortsætter udviklingen af ​​V4L2 API'en og vil i sidste ende erstatte det. Da bibliotekets API stadig er under forandring og endnu ikke er fuldt stabiliseret, har projektet indtil videre udviklet sig uden at forgrene individuelle udgivelser ved hjælp af en kontinuerlig udviklingsmodel. Som svar på behovet for distributioner for at holde styr på API-ændringer, der påvirker kompatibiliteten, og for at forenkle leveringen af ​​biblioteker i pakker, er det nu blevet besluttet at med jævne mellemrum generere udgivelser, der afspejler omfanget af ABI- og API-ændringer. Projektkoden er skrevet i C++ og distribueret under LGPLv2.1-licensen.

Projektet udvikles af udviklere af multimedieundersystemer til Linux-kernen sammen med nogle kameraproducenter for at normalisere situationen med Linux-understøttelse af kameraer til smartphones og indlejrede enheder, der er bundet til proprietære drivere. API V4L2, der allerede er tilgængelig i Linux-kernen, blev på et tidspunkt skabt til at fungere med traditionelle separate webkameraer og er dårligt tilpasset den seneste trend med at flytte MCU-funktionalitet over på CPU'ens skuldre.

I modsætning til traditionelle kameraer, hvor primære billedbehandlingsoperationer udføres på en specialiseret processor indbygget i kameraet (MCU), i indlejrede enheder, for at reducere omkostningerne, udføres disse funktioner på skuldrene af hoved-CPU'en og kræver en kompleks driver, der omfatter ikke-open source-licenserede komponenter. Som en del af libcamera-projektet forsøgte open source-softwaretilhængere og hardwareproducenter at skabe en kompromisløsning, der på den ene side tilfredsstiller behovene hos open source-softwareudviklere, og på den anden side gør det muligt at beskytte kameraproducenternes intellektuelle ejendom.

Den stak, der tilbydes af libcamera-biblioteket, er implementeret udelukkende i brugerrummet. For at sikre kompatibilitet med eksisterende softwaremiljøer og applikationer leveres kompatibilitetslag til V4L API, Gstreamer og Android Camera HAL. Proprietære komponenter, der er specifikke for hvert kamera til interaktion med udstyr, er designet som moduler, der kører i separate processer og interagerer med biblioteket via IPC. Moduler har ikke direkte adgang til enheden og får adgang til udstyret gennem en mellemliggende API, hvorigennem anmodninger kontrolleres, filtreres og begrænses til kun at få adgang til den funktionalitet, der er nødvendig for at styre kameraet.

Biblioteket giver også adgang til algoritmer til behandling og forbedring af kvaliteten af ​​billeder og videoer (hvidbalancejustering, støjreduktion, videostabilisering, autofokus, eksponeringsvalg osv.), som kan forbindes i form af åbne eksterne biblioteker eller proprietære isolerede moduler. API'en giver adgang til funktioner som f.eks. at bestemme funktionaliteten af ​​eksisterende eksterne og indbyggede kameraer, bruge enhedsprofiler, håndtere kameratilslutning og afbrydelse af hændelser, håndtering af kameradatafangst på det individuelle billedniveau og synkronisering af billeder med flash. Det er muligt at arbejde separat med flere kameraer i systemet og organisere den samtidige optagelse af flere videostreams fra ét kamera (f.eks. et med lav opløsning til videokonferencer og et andet med høj opløsning til arkivoptagelse til disk).

Kilde: opennet.ru

Tilføj en kommentar