A libcamera első kiadása, egy verem a kamera támogatásához Linuxon

Négy év fejlesztés után megalakult a libcamera projekt első kiadása (0.0.1), amely szoftvercsomagot kínál videokamerákkal, kamerákkal és TV tunerekkel való munkavégzéshez Linux, Android és ChromeOS operációs rendszereken, amely folytatja a V4L2 API fejlesztését. és végül felváltja. Mivel a könyvtár API-ja még mindig változik, és még nem stabilizálódott teljesen, a projekt eddig az egyes kiadások elágazása nélkül, folyamatos fejlesztési modell segítségével fejlődött. Válaszul arra az igényre, hogy a disztribúciók nyomon kövessék a kompatibilitást befolyásoló API-módosításokat, és leegyszerűsítsék a könyvtárak csomagokban történő kézbesítését, az a döntés született, hogy időszakonként olyan kiadásokat generálnak, amelyek tükrözik az ABI- és API-módosítások mértékét. A projekt kódja C++ nyelven íródott és LGPLv2.1 licenc alatt terjeszthető.

A projektet a Linux kernel multimédiás alrendszereinek fejlesztői fejlesztik néhány kameragyártóval közösen annak érdekében, hogy normalizálják a helyzetet az okostelefonok és a beágyazott eszközök kameráinak Linux támogatásával, amelyek saját meghajtókhoz vannak kötve. A Linux kernelben már elérhető API V4L2 egy időben úgy jött létre, hogy hagyományos különálló webkamerákkal működjön együtt, és rosszul alkalmazkodik az MCU-funkciókat a CPU vállaira költöztető közelmúltbeli trendhez.

Ellentétben a hagyományos kamerákkal, amelyekben az elsődleges képfeldolgozási műveleteket a kamerába épített speciális processzoron (MCU) végzik, a beágyazott eszközökben a költségek csökkentése érdekében ezeket a funkciókat a fő CPU vállán hajtják végre, és összetett meghajtót igényelnek, nem nyílt forráskódú licencelt összetevőket tartalmaz. A libcamera projekt keretében a nyílt forráskódú szoftverek támogatói és hardvergyártók olyan kompromisszumos megoldást próbáltak kidolgozni, amely egyrészt kielégíti a nyílt forráskódú szoftverfejlesztők igényeit, másrészt lehetővé teszi a kameragyártók szellemi tulajdonának védelmét.

A libcamera könyvtár által kínált verem teljes mértékben a felhasználói térben van megvalósítva. A meglévő szoftverkörnyezetekkel és -alkalmazásokkal való kompatibilitás biztosítása érdekében kompatibilitási rétegek állnak rendelkezésre a V4L API, a Gstreamer és az Android Camera HAL számára. Az egyes kamerákra jellemző, a berendezésekkel való interakciót biztosító, szabadalmaztatott komponensek modulokként vannak kialakítva, amelyek külön folyamatokban futnak, és IPC-n keresztül lépnek kapcsolatba a könyvtárral. A modulok nem férnek hozzá közvetlenül az eszközhöz, és egy köztes API-n keresztül érik el a berendezést, amelyen keresztül a kéréseket ellenőrzik, szűrik, és csak a kamera vezérléséhez szükséges funkciók elérésére korlátozódnak.

A könyvtár hozzáférést biztosít a képek és videók feldolgozására és minőségének javítására szolgáló algoritmusokhoz (fehéregyensúly-beállítás, zajcsökkentés, videóstabilizálás, autofókusz, expozícióválasztás stb.), amelyek nyitott külső könyvtárak vagy szabadalmaztatottak formájában kapcsolhatók össze. elszigetelt modulok. Az API hozzáférést biztosít olyan funkciókhoz, mint a meglévő külső és beépített kamerák funkcionalitásának meghatározása, eszközprofilok használata, kamera csatlakozási és leválasztási események kezelése, kamera adatrögzítésének kezelése az egyes képkockák szintjén, valamint a képek vakuval történő szinkronizálása. Lehetőség van a rendszerben több kamerával külön-külön is dolgozni, és megszervezni több videofolyam egyidejű rögzítését egy kameráról (például egy alacsony felbontású videokonferenciához, egy másik pedig nagy felbontású archív felvételhez lemezre).

Forrás: opennet.ru

Hozzászólás