Πρώτη έκδοση του libcamera, μια στοίβα για υποστήριξη κάμερας στο Linux

Μετά από τέσσερα χρόνια ανάπτυξης, δημιουργήθηκε η πρώτη έκδοση του έργου libcamera (0.0.1), που προσφέρει μια στοίβα λογισμικού για εργασία με βιντεοκάμερες, κάμερες και δέκτες τηλεόρασης σε Linux, Android και ChromeOS, το οποίο συνεχίζει την ανάπτυξη του V4L2 API και τελικά θα το αντικαταστήσει. Δεδομένου ότι το API της βιβλιοθήκης εξακολουθεί να αλλάζει και δεν έχει ακόμη σταθεροποιηθεί πλήρως, το έργο μέχρι στιγμής έχει αναπτυχθεί χωρίς διακλάδωση μεμονωμένων εκδόσεων χρησιμοποιώντας ένα μοντέλο συνεχούς ανάπτυξης. Ως απάντηση στην ανάγκη των διανομών να παρακολουθούν τις αλλαγές του API που επηρεάζουν τη συμβατότητα και να απλοποιούν την παράδοση των βιβλιοθηκών σε πακέτα, έχει ληφθεί τώρα η απόφαση να δημιουργούνται περιοδικά εκδόσεις που αντικατοπτρίζουν την έκταση των αλλαγών ABI και API. Ο κώδικας του έργου είναι γραμμένος σε C++ και διανέμεται με την άδεια LGPLv2.1.

Το έργο αναπτύσσεται από προγραμματιστές υποσυστημάτων πολυμέσων του πυρήνα Linux μαζί με ορισμένους κατασκευαστές καμερών προκειμένου να ομαλοποιηθεί η κατάσταση με την υποστήριξη Linux για κάμερες για smartphone και ενσωματωμένες συσκευές που συνδέονται με ιδιόκτητα προγράμματα οδήγησης. Το API V4L2, που είναι ήδη διαθέσιμο στον πυρήνα του Linux, δημιουργήθηκε κάποτε για να λειτουργεί με παραδοσιακές ξεχωριστές κάμερες web και δεν έχει προσαρμοστεί ελάχιστα στην πρόσφατη τάση μετακίνησης της λειτουργικότητας MCU στους ώμους της CPU.

Σε αντίθεση με τις παραδοσιακές κάμερες, στις οποίες οι λειτουργίες κύριας επεξεργασίας εικόνας εκτελούνται σε έναν εξειδικευμένο επεξεργαστή ενσωματωμένο στην κάμερα (MCU), σε ενσωματωμένες συσκευές, για μείωση του κόστους, αυτές οι λειτουργίες εκτελούνται στους ώμους της κύριας CPU και απαιτούν ένα πολύπλοκο πρόγραμμα οδήγησης που περιλαμβάνει στοιχεία χωρίς άδεια χρήσης ανοιχτού κώδικα. Ως μέρος του έργου libcamera, οι υποστηρικτές του λογισμικού ανοιχτού κώδικα και οι κατασκευαστές υλικού προσπάθησαν να δημιουργήσουν μια συμβιβαστική λύση που, αφενός, ικανοποιεί τις ανάγκες των προγραμματιστών λογισμικού ανοιχτού κώδικα και, αφετέρου, επιτρέπει την προστασία της πνευματικής ιδιοκτησίας των κατασκευαστών καμερών.

Η στοίβα που προσφέρει η βιβλιοθήκη libcamera υλοποιείται εξ ολοκλήρου στο χώρο του χρήστη. Για να διασφαλιστεί η συμβατότητα με υπάρχοντα περιβάλλοντα λογισμικού και εφαρμογές, παρέχονται επίπεδα συμβατότητας για το V4L API, το Gstreamer και το Android Camera HAL. Τα ιδιόκτητα εξαρτήματα ειδικά για κάθε κάμερα για αλληλεπίδραση με εξοπλισμό έχουν σχεδιαστεί ως μονάδες που εκτελούνται σε ξεχωριστές διαδικασίες και αλληλεπιδρούν με τη βιβλιοθήκη μέσω IPC. Οι μονάδες δεν έχουν άμεση πρόσβαση στη συσκευή και έχουν πρόσβαση στον εξοπλισμό μέσω ενός ενδιάμεσου API, τα αιτήματα μέσω του οποίου ελέγχονται, φιλτράρονται και περιορίζονται στην πρόσβαση μόνο στη λειτουργικότητα που απαιτείται για τον έλεγχο της κάμερας.

Η βιβλιοθήκη παρέχει επίσης πρόσβαση σε αλγόριθμους επεξεργασίας και βελτίωσης της ποιότητας εικόνων και βίντεο (ρύθμιση ισορροπίας λευκού, μείωση θορύβου, σταθεροποίηση βίντεο, αυτόματη εστίαση, επιλογή έκθεσης κ.λπ.), οι οποίοι μπορούν να συνδεθούν με τη μορφή ανοιχτών εξωτερικών βιβλιοθηκών ή ιδιόκτητων απομονωμένες ενότητες. Το API παρέχει πρόσβαση σε λειτουργίες όπως ο προσδιορισμός της λειτουργικότητας των υπαρχουσών εξωτερικών και ενσωματωμένων καμερών, η χρήση προφίλ συσκευών, ο χειρισμός συμβάντων σύνδεσης και αποσύνδεσης κάμερας, διαχείριση λήψης δεδομένων κάμερας σε επίπεδο μεμονωμένου καρέ και συγχρονισμός εικόνων με φλας. Είναι δυνατό να εργαστείτε χωριστά με πολλές κάμερες στο σύστημα και να οργανώσετε την ταυτόχρονη λήψη πολλών ροών βίντεο από μια κάμερα (για παράδειγμα, μια με χαμηλή ανάλυση για τηλεδιάσκεψη και μια άλλη με υψηλή ανάλυση για αρχειακή εγγραφή σε δίσκο).

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο