Prima versione di libcamera, uno stack per il supporto della fotocamera su Linux

Dopo quattro anni di sviluppo è stata creata la prima versione del progetto libcamera (0.0.1), che offre uno stack software per lavorare con videocamere, fotocamere e sintonizzatori TV in Linux, Android e ChromeOS, che continua lo sviluppo dell'API V4L2 e alla fine lo sostituirà. Poiché l'API della libreria è ancora in evoluzione e non è stata ancora completamente stabilizzata, il progetto finora si è sviluppato senza ramificazioni delle singole versioni utilizzando un modello di sviluppo continuo. In risposta alla necessità per le distribuzioni di tenere traccia delle modifiche API che incidono sulla compatibilità e di semplificare la distribuzione delle librerie nei pacchetti, è stata ora presa la decisione di generare periodicamente rilasci che riflettano l'entità delle modifiche ABI e API. Il codice del progetto è scritto in C++ e distribuito sotto la licenza LGPLv2.1.

Il progetto è stato sviluppato dagli sviluppatori di sottosistemi multimediali del kernel Linux insieme ad alcuni produttori di fotocamere al fine di normalizzare la situazione con il supporto Linux per fotocamere per smartphone e dispositivi integrati legati a driver proprietari. L'API V4L2, già disponibile nel kernel Linux, è stata creata un tempo per funzionare con le tradizionali webcam separate ed è poco adatta alla recente tendenza di spostare la funzionalità MCU sulle spalle della CPU.

A differenza delle fotocamere tradizionali, in cui le operazioni primarie di elaborazione delle immagini vengono eseguite su un processore specializzato integrato nella fotocamera (MCU), nei dispositivi embedded, per ridurre i costi, queste funzioni vengono svolte sulle spalle della CPU principale e richiedono un driver complesso che include componenti con licenza non open source. Nell'ambito del progetto libcamera, i sostenitori del software open source e i produttori di hardware hanno cercato di creare una soluzione di compromesso che, da un lato, soddisfi le esigenze degli sviluppatori di software open source e, dall'altro, consenta di proteggere la proprietà intellettuale dei produttori di fotocamere.

Lo stack offerto dalla libreria libcamera è implementato interamente nello spazio utente. Per garantire la compatibilità con gli ambienti software e le applicazioni esistenti, vengono forniti livelli di compatibilità per l'API V4L, Gstreamer e Android Camera HAL. I componenti proprietari di interazione con le apparecchiature specifiche per ciascuna telecamera sono progettati come moduli eseguiti in processi separati e interagenti con la libreria tramite IPC. I moduli non hanno accesso diretto al dispositivo e accedono all'apparecchiatura tramite un'API intermedia, le richieste attraverso le quali vengono controllate, filtrate e limitate all'accesso solo alle funzionalità necessarie per controllare la telecamera.

La libreria fornisce inoltre l'accesso ad algoritmi per l'elaborazione e il miglioramento della qualità di immagini e video (regolazione del bilanciamento del bianco, riduzione del rumore, stabilizzazione video, autofocus, selezione dell'esposizione, ecc.), che possono essere collegati sotto forma di librerie esterne aperte o proprietarie moduli isolati. L'API fornisce l'accesso a funzionalità quali la determinazione della funzionalità delle fotocamere esterne e integrate esistenti, l'utilizzo dei profili del dispositivo, la gestione degli eventi di connessione e disconnessione della fotocamera, la gestione dell'acquisizione dei dati della fotocamera a livello di singolo fotogramma e la sincronizzazione delle immagini con il flash. È possibile lavorare separatamente con più telecamere nel sistema e organizzare l'acquisizione simultanea di più flussi video da una telecamera (ad esempio, uno a bassa risoluzione per le videoconferenze e un altro ad alta risoluzione per la registrazione di archivio su disco).

Fonte: opennet.ru

Aggiungi un commento