Erste Veröffentlichung von libcamera, einem Stack zur Kameraunterstützung unter Linux

Nach vierjähriger Entwicklungszeit wurde die erste Version des libcamera-Projekts (0.0.1) erstellt, das einen Software-Stack für die Arbeit mit Videokameras, Kameras und TV-Tunern unter Linux, Android und ChromeOS bietet und die Entwicklung der V4L2-API fortsetzt und werde es irgendwann ersetzen. Da sich die API der Bibliothek immer noch verändert und noch nicht vollständig stabilisiert ist, wurde das Projekt bisher ohne Verzweigung einzelner Releases mithilfe eines kontinuierlichen Entwicklungsmodells entwickelt. Als Reaktion auf die Notwendigkeit für Distributionen, API-Änderungen, die sich auf die Kompatibilität auswirken, im Auge zu behalten und die Bereitstellung von Bibliotheken in Paketen zu vereinfachen, wurde nun die Entscheidung getroffen, regelmäßig Releases zu generieren, die den Umfang der ABI- und API-Änderungen widerspiegeln. Der Projektcode ist in C++ geschrieben und wird unter der LGPLv2.1-Lizenz vertrieben.

Das Projekt wird von Entwicklern multimedialer Subsysteme des Linux-Kernels gemeinsam mit einigen Kameraherstellern entwickelt, um die Situation mit der Linux-Unterstützung für Kameras für Smartphones und eingebettete Geräte, die an proprietäre Treiber gebunden sind, zu normalisieren. API V4L2, bereits im Linux-Kernel verfügbar, wurde einst für die Arbeit mit herkömmlichen separaten Webcams entwickelt und ist schlecht an den jüngsten Trend angepasst, die MCU-Funktionalität auf die Schultern der CPU zu verlagern.

Im Gegensatz zu herkömmlichen Kameras, bei denen primäre Bildverarbeitungsvorgänge auf einem speziellen, in die Kamera integrierten Prozessor (MCU) ausgeführt werden, werden diese Funktionen bei eingebetteten Geräten aus Kostengründen auf der Haupt-CPU ausgeführt und erfordern einen komplexen Treiber Enthält nicht-Open-Source-lizenzierte Komponenten. Im Rahmen des libcamera-Projekts haben Open-Source-Software-Befürworter und Hardware-Hersteller versucht, eine Kompromisslösung zu schaffen, die einerseits den Bedürfnissen von Open-Source-Software-Entwicklern gerecht wird und andererseits den Schutz des geistigen Eigentums von Kameraherstellern ermöglicht.

Der von der libcamera-Bibliothek angebotene Stack ist vollständig im Userspace implementiert. Um die Kompatibilität mit vorhandenen Softwareumgebungen und Anwendungen sicherzustellen, werden Kompatibilitätsebenen für die V4L-API, Gstreamer und Android Camera HAL bereitgestellt. Proprietäre, für jede Kamera spezifische Komponenten für die Interaktion mit Geräten sind als Module konzipiert, die in separaten Prozessen ausgeführt werden und über IPC mit der Bibliothek interagieren. Module haben keinen direkten Zugriff auf das Gerät und greifen auf die Ausrüstung über eine Zwischen-API zu, über die Anfragen überprüft, gefiltert und auf den Zugriff auf die zur Steuerung der Kamera erforderlichen Funktionen beschränkt werden.

Die Bibliothek bietet außerdem Zugriff auf Algorithmen zur Verarbeitung und Verbesserung der Qualität von Bildern und Videos (Weißabgleichanpassung, Rauschunterdrückung, Videostabilisierung, Autofokus, Belichtungsauswahl usw.), die in Form von offenen externen Bibliotheken oder proprietär angebunden werden können isolierte Module. Die API bietet Zugriff auf Funktionen wie die Bestimmung der Funktionalität vorhandener externer und integrierter Kameras, die Verwendung von Geräteprofilen, die Verarbeitung von Kameraverbindungs- und -trennungsereignissen, die Verwaltung der Kameradatenerfassung auf Einzelbildebene und die Synchronisierung von Bildern mit Blitz. Es ist möglich, mit mehreren Kameras im System separat zu arbeiten und die gleichzeitige Erfassung mehrerer Videostreams von einer Kamera zu organisieren (z. B. eine mit niedriger Auflösung für Videokonferenzen und eine andere mit hoher Auflösung für die Archivaufzeichnung auf Festplatte).

Source: opennet.ru

Kommentar hinzufügen