Eerste vrystelling van libcamera, 'n stapel vir kamera-ondersteuning op Linux

Na vier jaar van ontwikkeling is die eerste vrystelling van die libcamera-projek (0.0.1) gevorm, wat 'n sagtewarestapel bied om met videokameras, kameras en TV-ontvangers in Linux, Android en ChromeOS te werk, wat die ontwikkeling van die V4L2 API voortsit. en sal dit uiteindelik vervang. Aangesien die biblioteek se API steeds verander en nog nie ten volle gestabiliseer is nie, het die projek tot dusver ontwikkel sonder om individuele vrystellings te vertak met behulp van 'n deurlopende ontwikkelingsmodel. In reaksie op die behoefte aan verspreidings om tred te hou met API-veranderinge wat versoenbaarheid beïnvloed, en om die aflewering van biblioteke in pakkette te vereenvoudig, is die besluit nou geneem om periodiek vrystellings te genereer wat die omvang van ABI- en API-veranderinge weerspieël. Die projekkode is in C++ geskryf en onder die LGPLv2.1-lisensie versprei.

Die projek word ontwikkel deur ontwikkelaars van multimedia-substelsels van die Linux-kern saam met sommige kameravervaardigers om die situasie te normaliseer met Linux-ondersteuning vir kameras vir slimfone en ingebedde toestelle wat aan eie drywers gekoppel is. API V4L2, wat reeds in die Linux-kern beskikbaar is, is op 'n tyd geskep om met tradisionele aparte webkameras te werk en is swak aangepas by die onlangse neiging om MCU-funksionaliteit op die skouers van die SVE te skuif.

Anders as tradisionele kameras, waarin primêre beeldverwerkingsbewerkings uitgevoer word op 'n gespesialiseerde verwerker wat in die kamera (MCU) ingebou is, in ingebedde toestelle, om koste te verminder, word hierdie funksies op die skouers van die hoof-SVE uitgevoer en vereis 'n komplekse drywer wat sluit nie-oopbron-gelisensieerde komponente in. As deel van die libcamera-projek het oopbronsagteware-voorstanders en hardewarevervaardigers probeer om 'n kompromie-oplossing te skep wat aan die een kant die behoeftes van oopbronsagteware-ontwikkelaars bevredig, en andersyds die beskerming van die intellektuele eiendom van kameravervaardigers moontlik maak.

Die stapel wat deur die libcamera-biblioteek aangebied word, word geheel en al in gebruikersruimte geïmplementeer. Om versoenbaarheid met bestaande sagteware-omgewings en toepassings te verseker, word versoenbaarheidslae vir die V4L API, Gstreamer en Android Camera HAL verskaf. Eiendomskomponente spesifiek vir elke kamera vir interaksie met toerusting is ontwerp as modules wat in afsonderlike prosesse loop en met die biblioteek in wisselwerking tree via IPC. Modules het nie direkte toegang tot die toestel nie en kry toegang tot die toerusting deur middel van 'n intermediêre API, versoeke waardeur gekontroleer, gefiltreer en beperk word tot slegs toegang tot die funksionaliteit wat nodig is om die kamera te beheer.

Die biblioteek bied ook toegang tot algoritmes vir die verwerking en verbetering van die kwaliteit van beelde en video's (witbalansaanpassing, geraasvermindering, videostabilisering, outofokus, blootstellingseleksie, ens.), wat in die vorm van oop eksterne biblioteke of eie eiendom gekoppel kan word. geïsoleerde modules. Die API bied toegang tot kenmerke soos die bepaling van die funksionaliteit van bestaande eksterne en ingeboude kameras, die gebruik van toestelprofiele, die hantering van kameraverbinding en ontkoppelingsgebeurtenisse, die bestuur van kameradatavaslegging op die individuele raamvlak, en die sinchronisering van beelde met flits. Dit is moontlik om afsonderlik met verskeie kameras in die stelsel te werk en die gelyktydige vaslegging van verskeie videostrome vanaf een kamera te organiseer (byvoorbeeld een met lae resolusie vir videokonferensies, en 'n ander met hoë resolusie vir argiefopname na skyf).

Bron: opennet.ru

Voeg 'n opmerking