Prvo izdanje libcamera, skupa za podršku kamere na Linuxu

Nakon četiri godine razvoja formirano je prvo izdanje projekta libcamera (0.0.1) koje nudi softverski paket za rad sa video kamerama, kamerama i TV tjunerima u Linuxu, Androidu i ChromeOS-u, čime se nastavlja razvoj V4L2 API-ja i na kraju će ga zamijeniti. Budući da se API biblioteke još uvijek mijenja i još uvijek nije u potpunosti stabiliziran, projekt se do sada razvijao bez grananja pojedinačnih izdanja koristeći model kontinuiranog razvoja. Kao odgovor na potrebu za distribucijama da prate promjene API-ja koje utiču na kompatibilnost i da pojednostave isporuku biblioteka u paketima, sada je donesena odluka da se periodično generiraju izdanja koja odražavaju opseg promjena ABI-ja i API-ja. Kod projekta je napisan u C++ i distribuiran pod licencom LGPLv2.1.

Projekat razvijaju programeri multimedijalnih podsistema Linux kernela zajedno s nekim proizvođačima kamera kako bi se normalizirala situacija s podrškom za Linux za kamere za pametne telefone i ugrađene uređaje koji su vezani za vlasničke drajvere. API V4L2, koji je već dostupan u Linux kernelu, svojevremeno je kreiran za rad s tradicionalnim zasebnim web kamerama i slabo je prilagođen nedavnom trendu premještanja MCU funkcionalnosti na ramena CPU-a.

Za razliku od tradicionalnih kamera, u kojima se primarne operacije obrade slike izvode na specijaliziranom procesoru ugrađenom u kameru (MCU), u ugrađenim uređajima, radi smanjenja troškova, ove funkcije se izvode na ramenima glavnog CPU-a i zahtijevaju složen drajver koji uključuje licencirane komponente koje nisu otvorenog koda. U sklopu projekta libcamera, zagovornici softvera otvorenog koda i proizvođači hardvera pokušali su stvoriti kompromisno rješenje koje, s jedne strane, zadovoljava potrebe programera softvera otvorenog koda, as druge, omogućava zaštitu intelektualnog vlasništva proizvođača kamera.

Stog koji nudi biblioteka libcamera implementiran je u potpunosti u korisničkom prostoru. Kako bi se osigurala kompatibilnost sa postojećim softverskim okruženjima i aplikacijama, slojevi kompatibilnosti su predviđeni za V4L API, Gstreamer i Android Camera HAL. Vlasničke komponente interakcije sa opremom specifičnom za svaku kameru su dizajnirane kao moduli koji se izvode u odvojenim procesima i u interakciji sa bibliotekom preko IPC-a. Moduli nemaju direktan pristup uređaju i pristupaju opremi preko posrednog API-ja, zahtjevi preko kojeg se provjeravaju, filtriraju i ograničavaju samo na pristup funkcionalnosti koja je neophodna za kontrolu kamere.

Biblioteka takođe pruža pristup algoritmima za obradu i poboljšanje kvaliteta slika i video zapisa (podešavanje balansa belog, smanjenje šuma, stabilizacija videa, autofokus, izbor ekspozicije, itd.), koji se mogu povezati u obliku otvorenih eksternih biblioteka ili sopstvenih izolovani moduli. API omogućava pristup funkcijama kao što su određivanje funkcionalnosti postojećih eksternih i ugrađenih kamera, korištenje profila uređaja, rukovanje događajima povezivanja i prekida veze kamere, upravljanje snimanjem podataka kamere na nivou pojedinačnog kadra i sinhronizacija slika sa blicem. Moguće je raditi odvojeno sa više kamera u sistemu i organizovati istovremeno hvatanje više video tokova sa jedne kamere (na primer, jedne niske rezolucije za video konferencije, a druge visoke rezolucije za arhivsko snimanje na disk).

izvor: opennet.ru

Dodajte komentar