Ensimmäinen julkaisu libcamerasta, pino kameratukea varten Linuxissa

Neljän vuoden kehitystyön jälkeen syntyi libcamera-projektin ensimmäinen julkaisu (0.0.1), joka tarjoaa ohjelmistopinon videokameroiden, kameroiden ja TV-virittimien kanssa työskentelyyn Linuxissa, Androidissa ja ChromeOS:ssä, mikä jatkaa V4L2 API:n kehitystä. ja korvaa sen lopulta. Koska kirjaston API on vielä muuttumassa eikä ole vielä täysin vakiintunut, projekti on toistaiseksi kehittynyt ilman yksittäisten julkaisujen haaroittumista jatkuvan kehitysmallin avulla. Vastauksena jakelujen tarpeeseen pitää kirjaa yhteensopivuuteen vaikuttavista API-muutoksista ja yksinkertaistaa kirjastojen toimittamista paketeissa, nyt on tehty päätös luoda määräajoin julkaisuja, jotka kuvastavat ABI- ja API-muutosten laajuutta. Projektikoodi on kirjoitettu C++-kielellä ja jaettu LGPLv2.1-lisenssillä.

Projektia kehittävät Linux-ytimen multimediaalijärjestelmien kehittäjät yhdessä joidenkin kameravalmistajien kanssa tilanteen normalisoimiseksi Linux-tuella älypuhelimien ja sulautettujen laitteiden kameroille, jotka on sidottu omiin ajureihin. API V4L2, joka on jo saatavilla Linux-ytimessä, luotiin aikoinaan toimimaan perinteisten erillisten web-kameroiden kanssa, ja se on huonosti mukautettu viimeaikaiseen trendiin siirtää MCU-toiminnallisuus CPU:n harteille.

Toisin kuin perinteiset kamerat, joissa ensisijaiset kuvankäsittelytoiminnot suoritetaan kameraan sisäänrakennetulla erikoisprosessorilla (MCU), sulautetuissa laitteissa kustannusten alentamiseksi, nämä toiminnot suoritetaan pääprosessorin harteilla ja vaativat monimutkaisen ajurin, joka sisältää ei-avoimen lähdekoodin lisensoituja komponentteja. Osana libcamera-projektia avoimen lähdekoodin ohjelmistojen kannattajat ja laitevalmistajat yrittivät luoda kompromissiratkaisun, joka toisaalta tyydyttää avoimen lähdekoodin ohjelmistokehittäjien tarpeet ja toisaalta mahdollistaa kameravalmistajien immateriaalioikeuksien suojaamisen.

Libcamera-kirjaston tarjoama pino on toteutettu kokonaan käyttäjätilassa. Yhteensopivuuden varmistamiseksi olemassa olevien ohjelmistoympäristöjen ja sovellusten kanssa V4L API:lle, Gstreamerille ja Android Camera HAL:lle tarjotaan yhteensopivuuskerroksia. Jokaiselle kameralle ominaiset vuorovaikutuksen komponentit on suunniteltu erillisissä prosesseissa suoritettaviksi moduuleiksi, jotka ovat vuorovaikutuksessa kirjaston kanssa IPC:n kautta. Moduuleilla ei ole suoraa pääsyä laitteeseen ja ne pääsevät laitteeseen välitason API:n kautta, jonka kautta pyynnöt tarkistetaan, suodatetaan ja rajoitetaan vain kameran ohjaamiseen tarvittaviin toimintoihin.

Kirjasto tarjoaa myös pääsyn algoritmeihin kuvien ja videoiden käsittelyä ja laadun parantamista varten (valkotasapainon säätö, kohinanvaimennus, videon stabilointi, automaattitarkennus, valotuksen valinta jne.), jotka voidaan liittää avoimien ulkoisten kirjastojen tai patentoitujen kirjastojen muodossa. eristetyt moduulit. API tarjoaa pääsyn ominaisuuksiin, kuten olemassa olevien ulkoisten ja sisäänrakennettujen kameroiden toiminnallisuuden määrittämiseen, laiteprofiilien käyttämiseen, kameran kytkentä- ja katkaisutapahtumien käsittelyyn, kameran tietojen kaappauksen hallintaan yksittäisten ruutujen tasolla ja kuvien synkronoimiseen salaman kanssa. Järjestelmässä on mahdollista työskennellä erikseen useiden kameroiden kanssa ja järjestää useiden videovirtojen samanaikainen sieppaus yhdestä kamerasta (esimerkiksi yksi matalaresoluutioinen videoneuvottelua varten ja toinen korkearesoluutioinen arkistointia varten levylle).

Lähde: opennet.ru

Lisää kommentti