Lëshimi i parë i libcamera, një pirg për mbështetjen e kamerës në Linux

Pas katër vitesh zhvillimi, u formua lëshimi i parë i projektit libcamera (0.0.1), duke ofruar një grumbull softuerësh për të punuar me kamera video, kamera dhe akordues TV në Linux, Android dhe ChromeOS, i cili vazhdon zhvillimin e API-së V4L2 dhe përfundimisht do ta zëvendësojë atë. Meqenëse API-ja e bibliotekës është ende në ndryshim dhe ende nuk është stabilizuar plotësisht, projekti deri më tani është zhvilluar pa degëzuar botimet individuale duke përdorur një model zhvillimi të vazhdueshëm. Në përgjigje të nevojës që shpërndarjet të mbajnë gjurmët e ndryshimeve të API që ndikojnë në përputhshmërinë dhe për të thjeshtuar shpërndarjen e bibliotekave në paketa, tani është marrë vendimi për të gjeneruar periodikisht lëshime që pasqyrojnë shtrirjen e ndryshimeve ABI dhe API. Kodi i projektit është shkruar në C++ dhe shpërndahet nën licencën LGPLv2.1.

Projekti është duke u zhvilluar nga zhvilluesit e nënsistemeve multimediale të kernelit Linux së bashku me disa prodhues kamerash për të normalizuar situatën me mbështetjen e Linux për kamerat për telefonat inteligjentë dhe pajisjet e integruara që janë të lidhura me drejtuesit e pronarit. API V4L2, tashmë i disponueshëm në kernelin Linux, u krijua në një kohë për të punuar me kamerat tradicionale të veçanta të internetit dhe është përshtatur dobët me trendin e fundit të lëvizjes së funksionalitetit MCU mbi supet e CPU.

Ndryshe nga kamerat tradicionale, në të cilat operacionet parësore të përpunimit të imazhit kryhen në një procesor të specializuar të integruar në kamerë (MCU), në pajisjet e integruara, për të ulur koston, këto funksione kryhen mbi supet e CPU-së kryesore dhe kërkojnë një drejtues kompleks që përfshin komponentë të licencuar jo me burim të hapur. Si pjesë e projektit libcamera, përkrahësit e softuerit me burim të hapur dhe prodhuesit e pajisjeve u përpoqën të krijonin një zgjidhje kompromisi që, nga njëra anë, plotëson nevojat e zhvilluesve të softuerit me burim të hapur dhe nga ana tjetër, lejon mbrojtjen e pronës intelektuale të prodhuesve të kamerave.

Stacki i ofruar nga biblioteka libcamera zbatohet tërësisht në hapësirën e përdoruesit. Për të siguruar përputhshmërinë me mjediset dhe aplikacionet ekzistuese të softuerit, ofrohen shtresa të përputhshmërisë për V4L API, Gstreamer dhe Android Camera HAL. Komponentët pronësor të ndërveprimit me pajisjet specifike për secilën kamerë janë projektuar si module të ekzekutuara në procese të veçanta dhe që ndërveprojnë me bibliotekën nëpërmjet IPC. Modulet nuk kanë akses të drejtpërdrejtë në pajisje dhe aksesojnë pajisjen përmes një API të ndërmjetme, kërkesat përmes të cilave kontrollohen, filtrohen dhe kufizohen vetëm në aksesin në funksionalitetin e nevojshëm për të kontrolluar kamerën.

Biblioteka gjithashtu ofron akses në algoritme për përpunimin dhe përmirësimin e cilësisë së imazheve dhe videove (rregullimi i bilancit të bardhë, reduktimi i zhurmës, stabilizimi i videos, fokusimi automatik, përzgjedhja e ekspozimit, etj.), të cilat mund të lidhen në formën e bibliotekave të jashtme të hapura ose të pronarit module të izoluara. API ofron akses në veçori të tilla si përcaktimi i funksionalitetit të kamerave ekzistuese të jashtme dhe të integruara, përdorimi i profileve të pajisjes, trajtimi i ngjarjeve të lidhjes dhe shkëputjes së kamerës, menaxhimi i kapjes së të dhënave të kamerës në nivelin individual të kornizës dhe sinkronizimi i imazheve me blicin. Është e mundur të punohet veçmas me disa kamera në sistem dhe të organizohet kapja e njëkohshme e disa transmetimeve video nga një aparat fotografik (për shembull, një me rezolucion të ulët për videokonferenca dhe një tjetër me rezolucion të lartë për regjistrim arkivor në disk).

Burimi: opennet.ru

Shto një koment