Første utgivelse av libcamera, en stabel for kamerastøtte på Linux

Etter fire år med utvikling ble den første utgivelsen av libcamera-prosjektet (0.0.1) dannet, som tilbyr en programvarestabel for arbeid med videokameraer, kameraer og TV-tunere i Linux, Android og ChromeOS, som fortsetter utviklingen av V4L2 API og vil til slutt erstatte den. Siden bibliotekets API fortsatt er i endring og ennå ikke er fullstendig stabilisert, har prosjektet så langt utviklet seg uten å forgrene individuelle utgivelser ved hjelp av en kontinuerlig utviklingsmodell. Som svar på behovet for distribusjoner for å holde styr på API-endringer som påvirker kompatibilitet, og for å forenkle leveringen av biblioteker i pakker, er beslutningen nå tatt for å periodisk generere utgivelser som gjenspeiler omfanget av ABI- og API-endringer. Prosjektkoden er skrevet i C++ og distribuert under LGPLv2.1-lisensen.

Prosjektet utvikles av utviklere av multimedieundersystemer til Linux-kjernen sammen med noen kameraprodusenter for å normalisere situasjonen med Linux-støtte for kameraer for smarttelefoner og innebygde enheter som er knyttet til proprietære drivere. API V4L2, som allerede er tilgjengelig i Linux-kjernen, ble på et tidspunkt laget for å fungere med tradisjonelle separate webkameraer og er dårlig tilpasset den nylige trenden med å flytte MCU-funksjonalitet over på prosessorens skuldre.

I motsetning til tradisjonelle kameraer, der primære bildebehandlingsoperasjoner utføres på en spesialisert prosessor innebygd i kameraet (MCU), i innebygde enheter, for å redusere kostnadene, utføres disse funksjonene på skuldrene til hoved-CPU og krever en kompleks driver som inkluderer ikke-åpen kildekode-lisensierte komponenter. Som en del av libcamera-prosjektet forsøkte tilhengere av åpen kildekode-programvare og maskinvareprodusenter å lage en kompromissløsning som på den ene siden tilfredsstiller behovene til utviklere av åpen kildekode, og på den andre gjør det mulig å beskytte kameraprodusentenes intellektuelle eiendom.

Stabelen som tilbys av libcamera-biblioteket er implementert utelukkende i brukerrommet. For å sikre kompatibilitet med eksisterende programvaremiljøer og applikasjoner, leveres kompatibilitetslag for V4L API, Gstreamer og Android Camera HAL. Proprietære komponenter som er spesifikke for hvert kamera for samhandling med utstyr er utformet som moduler som kjører i separate prosesser og samhandler med biblioteket via IPC. Moduler har ikke direkte tilgang til enheten og får tilgang til utstyret gjennom en mellomliggende API, forespørsler som kontrolleres, filtreres og begrenses til kun å få tilgang til funksjonaliteten som er nødvendig for å kontrollere kameraet.

Biblioteket gir også tilgang til algoritmer for behandling og forbedring av kvaliteten på bilder og videoer (hvitbalansejustering, støyreduksjon, videostabilisering, autofokus, eksponeringsvalg osv.), som kan kobles til i form av åpne eksterne biblioteker eller proprietære isolerte moduler. API-en gir tilgang til funksjoner som å bestemme funksjonaliteten til eksisterende eksterne og innebygde kameraer, bruke enhetsprofiler, håndtere kameratilkoblings- og frakoblingshendelser, administrere kameradatafangst på individuelt bildenivå og synkronisere bilder med blits. Det er mulig å jobbe separat med flere kameraer i systemet og organisere samtidig fangst av flere videostrømmer fra ett kamera (for eksempel ett med lav oppløsning for videokonferanser, og et annet med høy oppløsning for arkivopptak til disk).

Kilde: opennet.ru

Legg til en kommentar