Първата версия libcamera, стек за поддръжка на камери в Linux

След четири години разработка е оформена първата версия на проекта libcamera (0.0.1), предлагаща софтуерен стек за работа с видеокамери, фотоапарати и ТВ тунери в Linux, Android и ChromeOS, която продължава развитието на API V4L2 и с времето ще го замени. Тъй като API на библиотеката все още се променя и не е окончателно стабилизиран, проектът е развиван без клонове на отделни версии, използвайки непрекъсната моделна разработка. В отговор на нуждата на дистрибуциите да следят промените в API, влияещи на съвместимостта, и за да се улесни доставката на библиотеката в пакети, сега се взима решение периодично да се оформят издания, отразяващи степента на промяна в ABI и API. Кодът на проекта е написан на C++ и се разпространява под лиценза LGPLv2.1.

Проектът се развива от разработчици на мултимедийни подсистеми на ядрото на Linux в сътрудничество с някои производители на камери с цел нормализиране на ситуацията с поддръжката на камери за смартфони и вградени устройства в Linux, свързани с проприетарни драйвери. Вече съществуващият в ядрото на Linux API V4L2 някога е бил създаден за работа с традиционни отделни уебкамери и е слабо адаптиран към новата тенденция за прехвърляне на функционалността на MCU на основния CPU.

В отличие от традиционните камери, при които операциите за първична обработка на изображенията се извършват на вграден в камерата специализиран процесор (MCU), при вградените устройства за намаляване на разходите тези функции се прехвърлят на основния CPU и изискват сложен драйвер, включващ неоткрити лицензирани компоненти. В рамките на проекта libcamera поддръжниците на СПО и производителите на оборудване се опитват да създадат компромисно решение, от една страна удовлетворяващо нуждите на разработчиците на отворен код, а от друга — позволяващо защита на интелектуалната собственост на производителите на камери.

Предлаганият от библиотеката libcamera стек е напълно реализиран в пространството на потребителя. За осигуряване на съвместимост с съществуващите програмни среди и приложения се предоставят прослойки за съвместимост с API V4L, Gstreamer и Android Camera HAL. Специфичните за всяка камера проприетарни компоненти за взаимодействие с оборудването са оформени като модули, изпълнявани в отделни процеси и осъществяващи взаимодействие с библиотеката чрез IPC. Модулите нямат пряк достъп до устройството и се обръщат към оборудването чрез междинен API, заявки през който се проверяват, филтрират и ограничават до функционалността, необходима за управление на камерата.

Библиотеката също така предоставя достъп до алгоритми за обработка и подобряване качеството на изображения и видео (корекция на баланса на бялото, премахване на шум, стабилизация на видео, автофокус, избор на експозиция и т.н.), които могат да бъдат свързани като отворени външни библиотеки или проприетарни изолирани модули. API предоставя достъп до функции, като определяне на функционалността на наличните външни и вградени камери, използване на профили на устройства, обработка на събития за свързване и разкачване на камери, управление на захващането на данни от камерите на ниво отделни кадри и синхронизиране на снимки с работата на светкавицата. Възможна е отделна работа с множество камери в системата и организиране на захващане на няколко видеопотока едновременно от една камера (например, един с ниска резолюция за видеоконференция, а друг с висока резолюция за архивно записване на диск).

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster