Erster Release von libcamera, einem Stack zur UnterstĂŒtzung von Kameras in Linux

Nach vier Jahren Entwicklung wurde die erste Version des Projekts libcamera (0.0.1) veröffentlicht, die einen Software-Stack fĂŒr die Arbeit mit Videokameras, Digitalkameras und TV-Tunern unter Linux, Android und ChromeOS anbietet und die Entwicklung der API V4L2 fortsetzt und sie schließlich ersetzen wird. Da die API der Bibliothek weiterhin im Wandel ist und noch nicht endgĂŒltig stabilisiert wurde, wurde das Projekt bis jetzt ohne Abspaltung einzelner Versionen mit einem kontinuierlichen Entwicklungsmodell entwickelt. Um den BedĂŒrfnissen der Distributionen nachzuverfolgen, welche Änderungen an der API betreffen, die die KompatibilitĂ€t beeinflussen, und um die Bereitstellung der Bibliothek in Paketen zu vereinfachen, wurde nun beschlossen, regelmĂ€ĂŸig Releases zu erstellen, die den Grad der VerĂ€nderung von ABI und API widerspiegeln. Der Code des Projekts ist in C++ geschrieben und wird unter der Lizenz LGPLv2.1 verbreitet.

Das Projekt wird von Entwicklern der Multimedia-Subsysteme des Linux-Kernels zusammen mit einigen Kameraherstellern weiterentwickelt, um die UnterstĂŒtzung fĂŒr Kameras in Linux fĂŒr Smartphones und eingebettete GerĂ€te, die an proprietĂ€re Treiber gebunden sind, zu normalisieren. Die bereits im Linux-Kernel vorhandene API V4L2 wurde zu einer Zeit geschaffen, als man hauptsĂ€chlich mit traditionellen, isolierten Webcams arbeitete, und ist schlecht an die neuere Tendenz angepasst, die FunktionalitĂ€ten des MCU auf den CPU zu verlagern.

Im Gegensatz zu traditionellen Kameras, in denen die primĂ€re Bildverarbeitung von einem spezialisierten Prozessor (MCU) in der Kamera durchgefĂŒhrt wird, werden in eingebetteten GerĂ€ten diese Funktionen zur Kostensenkung auf den Haupt-CPU verlagert und erfordern einen komplexeren Treiber, der nicht öffentlicher lizenzierten Komponenten umfasst. Im Rahmen des Projekts libcamera haben BefĂŒrworter von OSS und Hardware-Hersteller versucht, eine Kompromisslösung zu schaffen, die einerseits die BedĂŒrfnisse der Entwickler von Open-Source-Software erfĂŒllt und andererseits es den Kameraherstellern ermöglicht, ihr geistiges Eigentum zu schĂŒtzen.

Die von der libcamera-Bibliothek vorgeschlagene Implementierung erfolgt vollstĂ€ndig im Benutzerspeicher. Um die KompatibilitĂ€t mit bestehenden Softwareumgebungen und Anwendungen zu gewĂ€hrleisten, werden KompatibilitĂ€tsschichten fĂŒr die APIs V4L, Gstreamer und Android Camera HAL bereitgestellt. Spezifische proprietĂ€re Komponenten zur Interaktion mit der Hardware werden in Form von Modulen ausgefĂŒhrt, die in separaten Prozessen laufen und ĂŒber IPC mit der Bibliothek kommunizieren. Die Module haben keinen direkten Zugriff auf das GerĂ€t und greifen ĂŒber eine Zwischen-API auf die Hardware zu, wobei die Anfragen ĂŒberprĂŒft, gefiltert und auf die fĂŒr die Kamerasteuerung benötigte FunktionalitĂ€t beschrĂ€nkt werden.

Die Bibliothek bietet auch Zugang zu Algorithmen zur Verarbeitung und Verbesserung der Bild- und VideoqualitĂ€t (Weißabgleichkorrektur, RauschunterdrĂŒckung, Videostabilisierung, Autofokus, Belichtungsauswahl usw.), die in Form von offenen externen Bibliotheken oder proprietĂ€ren isolierten Modulen eingebunden werden können. Die API bietet Zugang zu Funktionen wie der Erkennung der FunktionalitĂ€t von vorhandenen externen und integrierten Kameras, der Nutzung von GerĂ€teeinstellungen, der Verarbeitung von Anschluss- und Trennungsevents der Kameras, der Steuerung der Datenerfassung von Kameras auf Frame-Ebene sowie der Synchronisierung von Bildern mit dem Betrieb des Blitzes. Eine separate Arbeit mit mehreren Kameras im System und die gleichzeitige Erfassung mehrerer Video-Streams von einer Kamera (z. B. einen mit niedriger Auflösung fĂŒr Videokonferenzen und einen anderen mit hoher Auflösung fĂŒr die Archivierung auf der Festplatte) sind möglich.

Quelle: opennet.ru

60GB SSD 8Gb DDR4