Linux'ta kamera desteğine yönelik bir yığın olan libcamera'nın ilk sürümü

Dört yıllık geliştirme sürecinin ardından, Linux, Android ve ChromeOS'ta video kameralar, kameralar ve TV alıcılarıyla çalışmaya yönelik bir yazılım yığını sunan ve V0.0.1L4 API'nin geliştirilmesine devam eden libcamera projesinin ilk sürümü (2) oluşturuldu. ve sonunda onun yerini alacak. Kütüphanenin API'si hala değiştiğinden ve henüz tam olarak stabil hale getirilmediğinden, proje şu ana kadar sürekli bir geliştirme modeli kullanarak bireysel sürümleri dallara ayırmadan geliştirildi. Uyumluluğu etkileyen API değişikliklerini takip etmek ve kitaplıkların paketler halinde teslimini basitleştirmek için dağıtımlara duyulan ihtiyaç karşısında, artık ABI ve API değişikliklerinin kapsamını yansıtan sürümlerin periyodik olarak oluşturulmasına karar verildi. Proje kodu C++ dilinde yazılmıştır ve LGPLv2.1 lisansı altında dağıtılmaktadır.

Proje, akıllı telefonlar ve özel sürücülere bağlı gömülü cihazlar için kameralara yönelik Linux desteğiyle durumu normalleştirmek amacıyla, bazı kamera üreticileriyle birlikte Linux çekirdeğinin multimedya alt sistemlerinin geliştiricileri tarafından geliştiriliyor. Linux çekirdeğinde zaten mevcut olan API V4L2, bir zamanlar geleneksel ayrı web kameralarıyla çalışmak üzere oluşturulmuştu ve MCU işlevselliğini CPU'nun omuzlarına taşıma yönündeki son trende yeterince uyarlanamadı.

Birincil görüntü işleme işlemlerinin, maliyeti azaltmak için gömülü cihazlarda kameraya (MCU) yerleşik özel bir işlemci üzerinde gerçekleştirildiği geleneksel kameraların aksine, bu işlevler ana CPU'nun omuzlarında gerçekleştirilir ve karmaşık bir sürücü gerektirir. açık kaynak olmayan lisanslı bileşenleri içerir. Libcamera projesinin bir parçası olarak, açık kaynak yazılım savunucuları ve donanım üreticileri, bir yandan açık kaynak yazılım geliştiricilerinin ihtiyaçlarını karşılayan, diğer yandan kamera üreticilerinin fikri mülkiyetinin korunmasına olanak tanıyan bir uzlaşma çözümü oluşturmaya çalıştı.

Libcamera kütüphanesinin sunduğu yığın tamamen kullanıcı alanında uygulanır. Mevcut yazılım ortamları ve uygulamalarıyla uyumluluğu sağlamak amacıyla V4L API, Gstreamer ve Android Kamera HAL için uyumluluk katmanları sağlanmıştır. Ekipmanla etkileşim için her kameraya özel özel bileşenler, ayrı süreçlerde çalışan ve IPC aracılığıyla kitaplık ile etkileşime giren modüller olarak tasarlanmıştır. Modüllerin cihaza doğrudan erişimi yoktur ve donanıma bir ara API aracılığıyla erişim sağlanır; bu API aracılığıyla istekler kontrol edilir, filtrelenir ve yalnızca kamerayı kontrol etmek için gerekli işlevselliğe erişimle sınırlıdır.

Kütüphane aynı zamanda açık harici kütüphaneler veya tescilli olarak bağlanabilen görüntü ve videoların işlenmesi ve kalitesinin iyileştirilmesi (beyaz dengesi ayarı, gürültü azaltma, video sabitleme, otomatik odaklama, pozlama seçimi vb.) için algoritmalara erişim sağlar. izole modüller. API, mevcut harici ve yerleşik kameraların işlevselliğini belirleme, cihaz profillerini kullanma, kamera bağlantı ve bağlantı kesme olaylarını yönetme, bireysel kare düzeyinde kamera veri yakalamayı yönetme ve görüntüleri flaşla senkronize etme gibi özelliklere erişim sağlar. Sistemdeki birkaç kamerayla ayrı ayrı çalışmak ve bir kameradan birden fazla video akışının eşzamanlı yakalanmasını düzenlemek mümkündür (örneğin, biri video konferans için düşük çözünürlüklü, diğeri ise diske arşiv kaydı için yüksek çözünürlüklü).

Kaynak: opennet.ru

Yorum ekle