Efter fyra Ärs utveckling har den första versionen av projektet libcamera (0.0.1) slÀppts, vilket erbjuder en programvarustack för videokameror, digitalkameror och TV-mottagare för Linux, Android och ChromeOS, som fortsÀtter att utveckla API:et V4L2 och sÄ smÄningom kommer att ersÀtta det. Eftersom API:et fortfarande Àr under förÀndring och Ànnu inte Àr stabiliserat har projektet utvecklats utan avgreningar av specifika versioner, med en kontinuerlig utvecklingsmodell. Som svar pÄ distributionsbehovet av att spÄra Àndringar i API:et som pÄverkar kompatibiliteten, och för att förenkla leveransen av biblioteket i paket, har beslutet fattats att regelbundet skapa releaser som speglar graden av förÀndring av ABI och API. Projektkoden Àr skriven i C++ och sprids under licensen LGPLv2.1.
Projektet utvecklas av utvecklare inom multimediaunderavdelningarna av Linux-kÀrnan tillsammans med nÄgra kameratillverkare för att normalisera situationen för kamerastöd i Linux för smartphones och inbyggda enheter som Àr kopplade till proprietÀra drivrutiner. Det API V4L2 som redan finns i Linux-kÀrnan skapades ursprungligen för arbete med traditionella separata webbkameror och Àr dÄligt anpassat för den senaste trenden att överföra funktionaliteten frÄn MCU till CPU.
Till skillnad frÄn traditionella kameror, dÀr primÀr bildbehandling utförs av en specialiserad processor (MCU) inuti kameran, flyttas dessa funktioner i inbyggda enheter för att sÀnka kostnaderna till den primÀra CPU:n och krÀver en mer komplex drivrutin som inkluderar licensierade komponenter som inte kan öppnas. Inom ramen för projektet libcamera försökte föresprÄkarna för öppen programvara och hÄrdvarutillverkare skapa en kompromisslösning som Ä ena sidan uppfyller behoven hos utvecklare av öppen programvara och Ä andra sidan skyddar kameratillverkarnas immateriella rÀttigheter.
Det föreslagna libcamera-biblioteket implementeras helt i anvÀndarutrymmet. För att sÀkerstÀlla kompatibilitet med befintliga programmiljöer och applikationer tillhandahÄlls lager för kompatibilitet med API:er som V4L, Gstreamer och Android Camera HAL. Specifika proprietÀra komponenter för varje kamera interagerar med hÄrdvaran som moduler som körs i separata processer och kommunicerar med biblioteket via IPC. Modulerna har ingen direkt Ätkomst till enheten och interagerar med hÄrdvaran via ett mellanliggande API, vars begÀrningar verifieras, filtreras och begrÀnsas till att endast omfatta den funktionalitet som Àr nödvÀndig för att styra kameran.
Biblioteket erbjuder ocksÄ tillgÄng till algoritmer för bild- och videokvalitetsbehandling och förbÀttring (justering av vitbalans, brusreducering, videostabilisering, autofokus, exponering osv.), som kan kopplas in som öppna externa bibliotek eller proprietÀra isolerade moduler. API:et ger Ätkomst till funktioner som att identifiera funktionalitet för befintliga externa och inbyggda kameror, anvÀnda enhetsprofiler, hantera hÀndelser för anslutning och frÄnkoppling av kameror, styra datainsamling frÄn kameror pÄ nivÄ med enskilda ramar och synkronisera bilder med blixtens arbete. Det Àr möjligt att arbeta separat med flera kameror i systemet och organisera fÄngsten av flera videoströmmar samtidigt frÄn en kamera (till exempel en med lÄg upplösning för videokonferens och en annan med hög upplösning för arkivering pÄ disk).
KĂ€lla: opennet.ru
