První vydání libcamera, zásobníku pro podporu kamer v Linuxu

Po čtyřech letech vývoje vznikla první verze projektu libcamera (0.0.1), která nabízí softwarový balík pro práci s videokamerami, kamerami a TV tunery v Linuxu, Androidu a ChromeOS, který pokračuje ve vývoji V4L2 API. a nakonec ho nahradí. Vzhledem k tomu, že se API knihovny stále mění a ještě není plně stabilizované, projekt se zatím vyvíjel bez větvení jednotlivých verzí pomocí modelu kontinuálního vývoje. V reakci na potřebu distribucí sledovat změny API, které ovlivňují kompatibilitu, a zjednodušit doručování knihoven v balíčcích, bylo nyní učiněno rozhodnutí pravidelně generovat vydání odrážející rozsah změn ABI a API. Kód projektu je napsán v C++ a distribuován pod licencí LGPLv2.1.

Projekt vyvíjejí vývojáři multimediálních subsystémů linuxového jádra spolu s některými výrobci fotoaparátů s cílem normalizovat situaci s podporou Linuxu pro fotoaparáty pro chytré telefony a embedded zařízení, která jsou vázána na proprietární ovladače. API V4L2, již dostupné v linuxovém jádře, bylo svého času vytvořeno pro práci s tradičními samostatnými webovými kamerami a je špatně přizpůsobeno nedávnému trendu přesouvat funkčnost MCU na ramena CPU.

Na rozdíl od tradičních kamer, ve kterých se primární operace zpracování obrazu provádějí na specializovaném procesoru zabudovaném do kamery (MCU), ve vestavěných zařízeních, aby se snížily náklady, jsou tyto funkce prováděny na bedrech hlavního CPU a vyžadují komplexní ovladač, který zahrnuje ne-open source licencované komponenty. V rámci projektu libcamera se zastánci open source softwaru a výrobci hardwaru pokusili vytvořit kompromisní řešení, které na jedné straně uspokojuje potřeby vývojářů open source softwaru a na druhé straně umožňuje chránit duševní vlastnictví výrobců kamer.

Zásobník nabízený knihovnou libcamera je plně implementován v uživatelském prostoru. Pro zajištění kompatibility se stávajícími softwarovými prostředími a aplikacemi jsou k dispozici vrstvy kompatibility pro V4L API, Gstreamer a Android Camera HAL. Proprietární komponenty specifické pro každou kameru pro interakci se zařízením jsou navrženy jako moduly, které běží v samostatných procesech a interagují s knihovnou prostřednictvím IPC. Moduly nemají přímý přístup k zařízení a přistupují k zařízení prostřednictvím zprostředkujícího API, jehož požadavky jsou kontrolovány, filtrovány a omezeny pouze na přístup k funkcím nezbytným pro ovládání kamery.

Knihovna také poskytuje přístup k algoritmům pro zpracování a zlepšování kvality snímků a videí (nastavení vyvážení bílé, redukce šumu, stabilizace videa, automatické ostření, výběr expozice atd.), které lze připojit formou otevřených externích knihoven nebo proprietárních izolované moduly. Rozhraní API poskytuje přístup k funkcím, jako je určování funkčnosti stávajících externích a vestavěných kamer, používání profilů zařízení, zpracování událostí připojení a odpojení kamery, správa snímání dat kamery na úrovni jednotlivých snímků a synchronizace snímků s bleskem. Je možné pracovat samostatně s několika kamerami v systému a organizovat současné snímání několika video streamů z jedné kamery (například jedna s nízkým rozlišením pro videokonference a druhá s vysokým rozlišením pro archivní záznam na disk).

Zdroj: opennet.ru

Přidat komentář