Po štirih letih razvoja je bil oblikovan prvi izdelek projekta libcamera (0.0.1), ki ponuja programski sklop za delo z video kamerami, fotokamerami in TV-tunerji v Linuxu, Androidu in ChromeOS, kar nadaljuje razvoj API V4L2 in ga bo sčasoma nadomestilo. Ker se API knjižnice še naprej spreminja in še ni dokončno stabiliziran, je projekt še vedno potekal brez ločevanja posameznih izdaj z uporabo nenehnega modela razvoja. V odgovor na potrebo distribucij po sledenju spremembam API, ki vplivajo na združljivost, in za poenostavitev dostave knjižnice v paketih, je zdaj sprejeta odločitev o občasnem oblikovanju izdaj, ki odražajo stopnjo spremembe ABI in API. Kodo projekta je treba napisati v C++ in se distribuira pod licenco LGPLv2.1.
Projekt razvijajo razvijalci multimedičnih sistemov jedra Linux v sodelovanju z nekaterimi proizvajalci kamer z namenom normalizacije situacije s podporo kamer za pametne telefone in vgrajene naprave v Linuxu, ki so vezane na proprietarne gonilnike. API V4L2, ki že obstaja v jedru Linux, je bil sprva ustvarjen za delo s tradicionalnimi ločenimi spletnih kamerami in je slabo prilagojen za nedavno prisotno tendenco prenosa funkcionalnosti MCU na ramena CPU.
V nasprotju s tradicionalnimi kamerami, kjer se osnovne operacije obdelave slik izvajajo na vgrajenem specializiranem procesorju (MCU), v vgrajenih napravah za zmanjšanje stroškov te funkcije prenesejo na glavni CPU in zahtevajo zapleteno gonilnik, ki vključuje licenčne komponente, ki niso predmet odprtja. V okviru projekta libcamera so podporniki odprte programske opreme in proizvajalci opreme poskušali ustvariti kompromisno rešitev, ki na eni strani zadostuje potrebam razvijalcev odprte programske opreme, na drugi strani pa omogoča zaščito intelektualne lastnine proizvajalcev kamer.
Predlagani libcamera sklop je v celoti implementiran v uporabniškem prostoru. Za zagotovitev združljivosti z obstoječimi programskimi okolji in aplikacijami so na voljo vmesniki za združljivost z API V4L, Gstreamer in Android Camera HAL. Specifične za vsako kamero lastniške komponente interakcije s strojno opremo so oblikovane kot moduli, ki delujejo v ločenih procesih in komunicirajo z knjižnico preko IPC. Moduli nimajo neposrednega dostopa do naprave in se nanašajo na strojno opremo preko vmesnega API, katerih zahteve se preverjajo, filtrirajo in omejujejo samo na funkcionalnosti, potrebne za upravljanje kamere.
Knjižnica prav tako nudi dostop do algoritmov za obdelavo in izboljšanje kakovosti slik in videov (prilagoditev beline, zmanjšanje šuma, stabilizacija videa, samodejno ostrenje, izbira ekspozicije itd.), ki se lahko povezujejo kot odprtokodne zunanje knjižnice ali lastniški izolirani moduli. API nudi dostop do takšnih funkcij, kot so določitev funkcionalnosti obstoječih zunanjih in vgrajenih kamer, uporaba profilov naprav, obdelava dogodkov povezovanja in odklapljanja kamer, ter upravljanje zajema podatkov iz kamer na ravni posameznih sličic in sinhronizacija posnetkov z delovanjem bliskavice. Možno je ločeno delo z več kamerami v sistemu in organizacija zajema hkrati več video tokov z ene kamere (na primer, en z nizko ločljivostjo za videokonference in drugi z visoko ločljivostjo za arhivski zapis na disk).
Izvor: opennet.ru
