Eerste release van libcamera, een stapel voor camera-ondersteuning op Linux

Na vier jaar ontwikkeling werd de eerste release van het libcamera-project (0.0.1) gevormd, die een softwarestack biedt voor het werken met videocamera's, camera's en tv-tuners in Linux, Android en ChromeOS, waarmee de ontwikkeling van de V4L2 API wordt voortgezet en zal deze uiteindelijk vervangen. Omdat de API van de bibliotheek nog steeds aan het veranderen is en nog niet volledig gestabiliseerd is, heeft het project zich tot nu toe ontwikkeld zonder afzonderlijke releases te vertakken met behulp van een continu ontwikkelingsmodel. Als reactie op de noodzaak voor distributies om API-wijzigingen bij te houden die de compatibiliteit beïnvloeden, en om de levering van bibliotheken in pakketten te vereenvoudigen, is nu besloten om periodiek releases te genereren die de omvang van ABI- en API-wijzigingen weerspiegelen. De projectcode is geschreven in C++ en gedistribueerd onder de LGPLv2.1-licentie.

Het project wordt ontwikkeld door ontwikkelaars van multimediasubsystemen van de Linux-kernel samen met enkele camerafabrikanten om de situatie te normaliseren met Linux-ondersteuning voor camera's voor smartphones en ingebedde apparaten die zijn gekoppeld aan eigen stuurprogramma's. API V4L2, al beschikbaar in de Linux-kernel, is ooit gemaakt om te werken met traditionele afzonderlijke webcamera's en is slecht aangepast aan de recente trend om MCU-functionaliteit naar de schouders van de CPU te verplaatsen.

In tegenstelling tot traditionele camera's, waarbij primaire beeldverwerkingsbewerkingen worden uitgevoerd op een gespecialiseerde processor die in de camera (MCU) is ingebouwd, worden deze functies, om de kosten te verlagen, in ingebedde apparaten uitgevoerd op de schouders van de hoofd-CPU en vereisen ze een complexe driver die bevat niet-open-source gelicentieerde componenten. Als onderdeel van het libcamera-project probeerden voorstanders van open source-software en hardwarefabrikanten een compromisoplossing te creëren die enerzijds voldoet aan de behoeften van open source-softwareontwikkelaars en anderzijds de bescherming van het intellectuele eigendom van camerafabrikanten mogelijk maakt.

De stapel die door de libcamera-bibliotheek wordt aangeboden, wordt volledig in de gebruikersruimte geïmplementeerd. Om compatibiliteit met bestaande softwareomgevingen en applicaties te garanderen, zijn er compatibiliteitslagen voorzien voor de V4L API, Gstreamer en Android Camera HAL. Eigen componenten die specifiek zijn voor elke camera voor interactie met apparatuur zijn ontworpen als modules die in afzonderlijke processen draaien en via IPC met de bibliotheek communiceren. Modules hebben geen directe toegang tot het apparaat en hebben toegang tot de apparatuur via een tussenliggende API, waardoor verzoeken worden gecontroleerd, gefilterd en beperkt tot alleen toegang tot de functionaliteit die nodig is om de camera te besturen.

De bibliotheek biedt ook toegang tot algoritmen voor het verwerken en verbeteren van de kwaliteit van afbeeldingen en video's (aanpassing van de witbalans, ruisonderdrukking, videostabilisatie, autofocus, belichtingsselectie, enz.), die kunnen worden aangesloten in de vorm van open externe bibliotheken of eigen geïsoleerde modules. De API biedt toegang tot functies zoals het bepalen van de functionaliteit van bestaande externe en ingebouwde camera's, het gebruik van apparaatprofielen, het afhandelen van camera-aansluit- en ontkoppelingsgebeurtenissen, het beheren van het vastleggen van cameragegevens op individueel frameniveau en het synchroniseren van beelden met flitsbediening. Het is mogelijk om afzonderlijk met meerdere camera's in het systeem te werken en de gelijktijdige opname van meerdere videostreams van één camera te organiseren (bijvoorbeeld één met een lage resolutie voor videoconferenties en een andere met hoge resolutie voor archiefopname op schijf).

Bron: opennet.ru

Voeg een reactie