По четири години развој, објавена е првата верзија на проектот libcamera (0.0.1), која нуди софтверски пакет за работа со видеокамери, фотоапарати и ТВ приемници во Linux, Android и ChromeOS, кој продолжува да го развива V4L2 API и на крајот ќе го замени. Бидејќи API-то на библиотеката сè уште е во развој и не е целосно стабилизирано, проектот е развиен без разгранување на посебни изданија, користејќи модел на континуиран развој. Како одговор на потребата на дистрибуциите да ги следат промените на API што влијаат на компатибилноста и да го поедностават пакувањето на библиотеката, сега е донесена одлука периодично да се креираат изданија што го одразуваат обемот на промените на ABI и API. Кодот на проектот е напишан во C++ и е лиценциран под лиценцата LGPLv2.1.
Проектот го развиваат развивачи на мултимедијални јадрови подсистеми. Linux заедно со некои производители на фотоапарати со цел нормализирање на ситуацијата со поддршка во Linux камери за паметни телефони и вградени уреди кои се поврзани со сопствени драјвери. Веќе во јадрото Linux API-то V4L2 првично беше дизајнирано да работи со традиционални самостојни веб-камери и е слабо адаптирано на неодамнешниот тренд на преместување на функционалноста на MCU на процесорот.
За разлика од традиционалните камери, во кои примарните операции за обработка на слика се вршат на специјализиран процесор вграден во камерата (MCU), во вградени уреди, за да се намалат трошоците, овие функции се извршуваат на рамениците на главниот процесор и бараат сложен двигател кој вклучува компоненти кои не се лиценцирани со отворен код. Како дел од проектот libcamera, поддржувачите на софтвер со отворен код и производителите на хардвер се обидоа да создадат компромисно решение кое, од една страна, ги задоволува потребите на развивачите на софтвер со отворен код, а од друга, овозможува заштита на интелектуалната сопственост на производителите на камери.
Стекот што го нуди libcamera е целосно имплементиран во корисничкиот простор. За да се обезбеди компатибилност со постојните софтверски средини и апликации, обезбедени се слоеви на интероперабилност за V4L, Gstreamer и други API-ја. Android HAL на камерата. Компонентите за интеракција со хардвер специфични за камерата се имплементирани како модули кои работат во посебни процеси и комуницираат со библиотеката преку IPC. Модулите немаат директен пристап до уредот и пристапуваат до хардверот преку посреднички API, каде што барањата се потврдуваат, филтрираат и се ограничени на пристап само до функционалноста потребна за контрола на камерата.
Библиотеката обезбедува и пристап до алгоритми за обработка и подобрување на квалитетот на сликите и видеата (прилагодување на балансот на белата боја, намалување на шумот, видео стабилизација, автофокус, избор на експозиција итн.), кои можат да се поврзат во форма на отворени надворешни библиотеки или сопственички изолирани модули. API обезбедува пристап до функции како што се одредување на функционалноста на постојните надворешни и вградени камери, користење на профили на уреди, справување со настани за поврзување и исклучување на камерата, управување со снимање на податоците од камерата на ниво на индивидуална рамка и синхронизирање слики со блиц. Можно е да се работи одделно со неколку камери во системот и да се организира истовремено снимање на неколку видео преноси од една камера (на пример, една со мала резолуција за видео конференции, а друга со висока резолуција за архивско снимање на диск).
Извор: opennet.ru
