Prima lansare a libcamera, o stivă pentru suport pentru camere pe Linux

După patru ani de dezvoltare, s-a format prima versiune a proiectului libcamera (0.0.1), oferind o stivă de software pentru lucrul cu camere video, camere și tuner TV în Linux, Android și ChromeOS, care continuă dezvoltarea API-ului V4L2 și în cele din urmă îl va înlocui. Deoarece API-ul bibliotecii încă se schimbă și nu a fost încă pe deplin stabilizat, proiectul s-a dezvoltat până acum fără a ramifica versiunile individuale folosind un model de dezvoltare continuă. Ca răspuns la nevoia ca distribuțiile să țină evidența modificărilor API care afectează compatibilitatea și să simplifice livrarea bibliotecilor în pachete, acum a fost luată decizia de a genera periodic versiuni care să reflecte amploarea modificărilor ABI și API. Codul proiectului este scris în C++ și distribuit sub licența LGPLv2.1.

Proiectul este dezvoltat de dezvoltatorii de subsisteme multimedia ale nucleului Linux împreună cu unii producători de camere pentru a normaliza situația cu suportul Linux pentru camere pentru smartphone-uri și dispozitive încorporate care sunt legate de drivere proprietare. API V4L2, deja disponibil în kernel-ul Linux, a fost la un moment dat creat pentru a funcționa cu camere web tradiționale separate și este slab adaptat la tendința recentă de mutare a funcționalității MCU pe umerii CPU.

Spre deosebire de camerele tradiționale, în care operațiunile de procesare primară a imaginii sunt efectuate pe un procesor specializat încorporat în cameră (MCU), în dispozitivele încorporate, pentru a reduce costurile, aceste funcții sunt efectuate pe umerii CPU principal și necesită un driver complex care include componente licențiate non-open-source. Ca parte a proiectului libcamera, susținătorii de software open source și producătorii de hardware au încercat să creeze o soluție de compromis care, pe de o parte, satisface nevoile dezvoltatorilor de software open source și, pe de altă parte, permite protejarea proprietății intelectuale a producătorilor de camere.

Stiva oferită de biblioteca libcamera este implementată în întregime în spațiul utilizatorului. Pentru a asigura compatibilitatea cu mediile și aplicațiile software existente, sunt furnizate straturi de compatibilitate pentru API-ul V4L, Gstreamer și Android Camera HAL. Componentele proprietare specifice fiecărei camere pentru interacțiunea cu echipamentele sunt proiectate ca module care rulează în procese separate și interacționează cu biblioteca prin IPC. Modulele nu au acces direct la dispozitiv și accesează echipamentul printr-un API intermediar, solicitări prin care sunt verificate, filtrate și limitate la doar accesarea funcționalității necesare controlului camerei.

Biblioteca oferă, de asemenea, acces la algoritmi de procesare și îmbunătățire a calității imaginilor și videoclipurilor (ajustarea balansului de alb, reducerea zgomotului, stabilizarea video, focalizarea automată, selectarea expunerii etc.), care pot fi conectate sub formă de biblioteci externe deschise sau proprietare. module izolate. API-ul oferă acces la funcții precum determinarea funcționalității camerelor externe și încorporate existente, utilizarea profilurilor dispozitivelor, gestionarea evenimentelor de conectare și deconectare a camerei, gestionarea captării datelor camerei la nivel individual de cadru și sincronizarea imaginilor cu blițul. Este posibil să lucrați separat cu mai multe camere din sistem și să organizați captarea simultană a mai multor fluxuri video de la o cameră (de exemplu, unul cu rezoluție scăzută pentru conferințe video și altul cu rezoluție mare pentru înregistrarea de arhivă pe disc).

Sursa: opennet.ru

Adauga un comentariu