Pirmā libcamera izlaidums, steks kameras atbalstam operētājsistēmā Linux

Pēc četru gadu izstrādes tika izveidots pirmais libcamera projekta izlaidums (0.0.1), kas piedāvā programmatūras steku darbam ar videokamerām, kamerām un TV uztvērējiem operētājsistēmās Linux, Android un ChromeOS, kas turpina V4L2 API izstrādi. un galu galā to aizstās. Tā kā bibliotēkas API joprojām mainās un tā vēl nav pilnībā stabilizēta, projekts līdz šim ir attīstījies bez atsevišķu izlaidumu sazarošanas, izmantojot nepārtrauktas izstrādes modeli. Reaģējot uz vajadzību izplatīšanām sekot līdzi API izmaiņām, kas ietekmē saderību, un vienkāršot bibliotēku piegādi pakotnēs, tagad ir pieņemts lēmums periodiski ģenerēt laidienus, kas atspoguļo ABI un API izmaiņu apjomu. Projekta kods ir rakstīts C++ valodā un tiek izplatīts saskaņā ar LGPLv2.1 licenci.

Projektu izstrādā Linux kodola multivides apakšsistēmu izstrādātāji kopā ar dažiem kameru ražotājiem, lai normalizētu situāciju ar Linux atbalstu viedtālruņu kamerām un iegultajām ierīcēm, kas ir piesaistītas patentētiem draiveriem. API V4L2, kas jau ir pieejams Linux kodolā, savulaik tika izveidots darbam ar tradicionālajām atsevišķām tīmekļa kamerām un ir vāji pielāgots nesenajai tendencei pārvietot MCU funkcionalitāti uz CPU pleciem.

Atšķirībā no tradicionālajām kamerām, kurās primārās attēlu apstrādes darbības tiek veiktas ar specializētu kamerā iebūvētu procesoru (MCU), iegultās ierīcēs, lai samazinātu izmaksas, šīs funkcijas tiek veiktas uz galvenā CPU pleciem un prasa sarežģītu draiveri, kas ietver neatvērtā pirmkoda licencētus komponentus. Libcamera projekta ietvaros atvērtā pirmkoda programmatūras piekritēji un aparatūras ražotāji centās radīt kompromisa risinājumu, kas, no vienas puses, apmierina atvērtā koda programmatūras izstrādātāju vajadzības, no otras puses, ļauj aizsargāt kameru ražotāju intelektuālo īpašumu.

Libcamera bibliotēkas piedāvātā kaudze ir pilnībā ieviesta lietotāja telpā. Lai nodrošinātu saderību ar esošajām programmatūras vidēm un lietojumprogrammām, V4L API, Gstreamer un Android Camera HAL ir nodrošināti saderības slāņi. Patentētie komponenti, kas raksturīgi katrai kamerai mijiedarbībai ar aprīkojumu, ir veidoti kā moduļi, kas darbojas atsevišķos procesos un mijiedarbojas ar bibliotēku, izmantojot IPC. Moduļiem nav tiešas piekļuves ierīcei, un tie piekļūst aprīkojumam, izmantojot starpposma API, caur kuru pieprasījumi tiek pārbaudīti, filtrēti un ierobežoti, lai piekļūtu tikai funkcionalitātei, kas nepieciešama kameras vadīšanai.

Bibliotēka nodrošina arī piekļuvi algoritmiem attēlu un video apstrādei un kvalitātes uzlabošanai (baltā balansa regulēšana, trokšņu samazināšana, video stabilizācija, autofokuss, ekspozīcijas izvēle utt.), kurus var pieslēgt atvērtu ārējo bibliotēku vai patentētu bibliotēku veidā. izolēti moduļi. API nodrošina piekļuvi tādām funkcijām kā esošo ārējo un iebūvēto kameru funkcionalitātes noteikšana, ierīču profilu izmantošana, kameras pievienošanas un atvienošanas notikumu apstrāde, kameras datu uztveršanas pārvaldība atsevišķu kadru līmenī un attēlu sinhronizēšana ar zibspuldzi. Sistēmā ir iespējams strādāt atsevišķi ar vairākām kamerām un organizēt vairāku video straumju vienlaicīgu uzņemšanu no vienas kameras (piemēram, viena ar zemu izšķirtspēju video konferencēm, bet otra ar augstu izšķirtspēju arhīva ierakstīšanai diskā).

Avots: opennet.ru

Pievieno komentāru