Négy év fejlesztés után elkészült a libcamera projekt első kiadása (0.0.1), amely a videokamerák, fényképezőgépek és TV-tunerek Linux, Android és ChromeOS környezetben való használatára kínál szoftveres megoldást, és folytatja a V4L2 API fejlesztését, amelyet idővel felvált. Mivel a könyvtár API-ja továbbra is változik és még nem stabilizálódott véglegesen, a projekt eddig folytonos fejlesztési modellben készült, anélkül, hogy elkülönült kiadások jöttek volna létre. A disztribúciók API-jának változásainak nyomon követésére, amelyek hatással vannak a kompatibilitásra és a könyvtár csomagokban való egyszerűsített szállítására, mostantól periódikus kiadások készítése mellett döntöttek, amelyek tükrözik az ABI és API változásainak mértékét. A projekt kódját C++ nyelven írták, és LGPLv2.1 licenc alatt terjesztik.
A projektet a Linux kernel multimédiás alrendszereiért felelős fejlesztők irányítják, együttműködve néhány kameragyártóval, annak érdekében, hogy normalizálják a helyzetet a Linux-ban a smartphone-okra és beágyazott eszközökre vonatkozó kamerák támogatásával, amelyek a proprietary meghajtókhoz kötődnek. Az már meglévő Linux kernel V4L2 API-t valamikor a hagyományos elkülönített webkamerák használatára tervezték, és rosszul van alkalmazva az utóbbi időszakban megjelent tendencia, amely a funkciók MCUs-ról a CPU-ra való áthelyezését célozza.
A hagyományos kamerákkal ellentétben, ahol a képek elsődleges feldolgozását egy beépített speciális processzor (MCU) végzi, a beágyazott eszközök esetében a költségek csökkentése érdekében ezeket a funkciókat a fő CPU végzi, és bonyolultabb meghajtót igényel, amely licenc alapján nem nyitható meg létező összetevőket tartalmaz. A libcamera projekt keretein belül a szabad szoftverek támogatói és a hardvergyártók egy kompromisszumos megoldás létrehozására törekedtek, amely egyrészt kielégíti a nyílt forráskódú fejlesztők igényeit, másrészt lehetővé teszi a kameragyártók szellemi tulajdonának megóvását.
A libcamera által javasolt verem teljesen felhasználói térben valósul meg. A meglévő programkörnyezetek és alkalmazások kompatibilitásának biztosítása érdekében API V4L, Gstreamer és Android Camera HAL kompatibilitási rétegek állnak rendelkezésre. A kamerákhoz specifikus, gyártó által biztosított hardverinterakciós komponenseket külön fázisokban, önálló folyamatokban valósítják meg, és az IPC-n keresztül lépnek kapcsolatba a könyvtárral. A modulok nem rendelkeznek közvetlen hozzáféréssel az eszközhöz, és az intermediális API-n keresztül kérik le a hardvert, ahol a kérdések ellenőrzésre, szűrésre és a kamera működtetéséhez szükséges funkciókra való korlátozásra kerülnek.
A könyvtár emellett 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ér balansz korrekció, zajszűrés, videóstabilizálás, automatikus élességállítás, expozíció kiválasztása stb.), amelyeket nyílt külső könyvtárakként vagy gyártói, elszigetelt modulokként lehet csatlakoztatni. Az API hozzáférést biztosít olyan funkciókhoz, mint a rendelkezésre álló külső és beépített kamerák működési jellemzőinek meghatározása, az eszközprofilok használata, a kamerák csatlakoztatásának és lecsatlakoztatásának eseményeinek kezelése, a kamerák adatmegfigyelésének irányítása egyes képkockák szintjén és a vaku működésével történő fényképek szinkronizálása. Lehetővé válik több kamera külön kezelésének és egy kameráról egyszerre több videófolyam rögzítésének a megszervezése (például egy alacsony felbontású videokonferenciához, egy másik azonban magas felbontású archív felvételhez).
Forrás: opennet.ru
