Po štyroch rokoch vývoja bolo vytvorené prvé vydanie projektu libcamera (0.0.1), ktoré poskytuje softvérový stack pre prácu s videokamerami, fotoaparátmi a TV tunerami v Linuxe, Android a ChromeOS, pričom pokračuje vo vývoji API V4L2 a postupom času ho nahradí. Keďže API knižnice sa stále vyvíja a nie je úplne stabilizované, projekt sa doposiaľ vyvíjal bez rozdelenia na jednotlivé vydania s využitím nepretržitého modelu vývoja. V reakcii na potrebu distribúcií sledovať zmeny API ovplyvňujúce kompatibilitu a pre zjednodušenie dodávky knižnice v balíčkoch, bolo teraz prijaté rozhodnutie pravidelne vytvárať vydania, ktoré odrážajú stupeň zmeny ABI a API. Kód projektu je napísaný v C++ a je distribuovaný pod licenciou LGPLv2.1.
Projekt je vyvíjaný vývojármi multimediálnych subsystémov jadra Linuxu spolu s niekoľkými výrobcami kamier s cieľom normalizovať situáciu s podporou kamier pre smartfóny a zabudované zariadenia v Linuxe, ktoré sú viazané na proprietárne ovládače. Existujúce API V4L2 v jadre Linuxu bolo pôvodne vytvorené s ohľadom na prácu s tradičnými samostatnými webovými kamerami a je zle prispôsobené nedávnym trendom presunu funkčnosti MCU na hlavný CPU.
Na rozdiel od tradičných kamier, v ktorých sa operácie primárne spracovania obrazov vykonávajú na špecializovanom procesore zabudovanom v kamere (MCU), v zabudovaných zariadeniach sú tieto funkcie prenesené na plecia hlavného CPU, aby sa znížili náklady, a vyžadujú zložené ovládače, ktoré obsahujú licencované komponenty, ktoré nemožno sprístupniť. V rámci projektu libcamera sa zástupcovia otvoreného softvéru a výrobcovia hardvéru snažili vytvoriť vyvážené riešenie, ktoré na jednej strane vyhovuje potrebám vývojárov otvoreného softvéru, a na druhej strane umožňuje chrániť duševné vlastníctvo výrobcov kamier.
Navrhovaná knižnica libcamera je plne implementovaná v užívateľskom priestore. Aby bola zabezpečená kompatibilita s existujúcimi softvérovými prostrediami a aplikáciami, sú poskytnuté vrstvy pre kompatibilitu s API V4L, Gstreamer a Android Camera HAL. Špecifické pre každú kameru proprietárne komponenty pre interakciu s hardvérom sú vytvorené ako moduly, ktoré bežia v samostatných procesoch a komunikujú s knižnicou prostredníctvom IPC. Moduly nemajú priamy prístup k zariadeniu a obráťte sa na hardvér cez medzivrstvový API, ktorého požiadavky sú kontrolované, filtrované a obmedzené len na funkčnosť potrebnú na ovládanie kamery.
Knižnica tiež poskytuje prístup k algoritmom na spracovanie a zlepšenie kvality obrazov a videí (nastavenie vyváženia bielej, odstránenie šumu, stabilizácia videa, automatické zaostrenie, nastavenie expozície a pod.), ktoré sa môžu pripojiť ako otvorené externé knižnice alebo proprietárne izolované moduly. API umožňuje prístup k takým funkciám, ako je identifikácia funkčnosti existujúcich externých a vstavaných kamier, využívanie profilov zariadení, spracovanie udalostí pripojenia a odpojenia kamier, riadenie snímania údajov z kamier na úrovni jednotlivých snímok a synchronizácia snímok so činnosťou blesku. Možná je samostatná práca s viacerými kamerami v systéme a organizácia súbežného záznamu viacerých videostreamov z jednej kamery (napríklad jeden s nízkym rozlíšením pre videokonferenciu a druhý s vysokým rozlíšením pre archiváciu na disku).
Zdroj: opennet.ru
