Першы выпуск libcamera, стэка для падтрымкі камер у Linux

Пасля чатырох гадоў распрацоўкі сфарміраваны першы выпуск праекта libcamera (0.0.1), які прапануе праграмны стэк для працы з відэакамерамі, фотакамерамі і TV-цюнэрамі ў Linux, Android і ChromeOS, які працягвае развіццё API V4L2 і з часам заменіць яго. Так як API бібліятэкі яшчэ працягвае мяняцца і канчаткова не стабілізаваны, да гэтага часу праект развіваўся без адгалінавання асобных выпускаў з выкарыстаннем бесперапыннай мадэлі распрацоўкі. У адказ на запатрабаванне дыстрыбутываў у адсочванні змен API, якія ўплываюць на сумяшчальнасць, і для спрашчэння пастаўкі бібліятэкі ў пакетах зараз прынята рашэнне перыядычна фармаваць рэлізы, якія адлюстроўваюць ступень змены ABI і API. Код праекту напісаны на C++ і распаўсюджваецца пад ліцэнзіяй LGPLv2.1.

Праект развіваецца распрацоўшчыкамі мультымедыйных падсістэм ядра Linux сумесна з некаторымі вытворцамі камер з мэтай нармалізацыі сітуацыі з падтрымкай у Linux камер для смартфонаў і ўбудавальных прылад, якія прывязаныя да прапрыетарных драйвераў. Ужо наяўны ў ядры Linux API V4L2 у свой час быў створаны ў разліку на працу з традыцыйнымі адасобленымі web-камерамі і дрэнна адаптаваны для якая з'явілася ў апошні час тэндэнцыі вынасу функцыянальнасці MCU на плечы CPU.

У адрозненне ад традыцыйных камер, у якіх аперацыі першаснай апрацоўкі малюнкаў вырабляюцца на ўбудаваным у камеру спецыялізаваным працэсары (MCU), ва ўбудавальных прыладах для скарачэння кошту гэтыя функцыі выносяцца на плечы асноўнага CPU і патрабуюць ускладненага драйвера, які ўключае не падлягаюць адкрыццю ліцэнзаваныя кампаненты. У рамках праекта libcamera прыхільнікі ВПЗ і вытворцы абсталявання паспрабавалі стварыць кампраміснае рашэнне, з аднаго боку якое задавальняе запатрабаванні распрацоўнікаў адчыненага ПА, а з іншай — якое дазваляе абараніць інтэлектуальную ўласнасць вытворцаў камер.

Прапанаваны бібліятэкай libcamera стэк рэалізаваны цалкам у прасторы карыстача. Для забеспячэння сумяшчальнасці з існуючымі праграмнымі асяроддзямі і праграмамі прадастаўляюцца праслойкі для сумяшчальнасці з API V4L, Gstreamer і Android Camera HAL. Спецыфічныя для кожнай камеры прапрыетарныя кампаненты ўзаемадзеяння з абсталяваннем афармляюцца ў выглядзе модуляў, якія выконваюцца ў асобных працэсах і ўзаемадзейнічаюць з бібліятэкай праз IPC. Модулі не маюць прамога доступу да прылады і звяртаюцца да абсталявання праз прамежкавы API, запыты праз які правяраюцца, фільтруюцца і абмяжоўваюцца толькі зваротам да функцыянальнасці, неабходнай для кіравання камерай.

Бібліятэка таксама дае доступ да алгарытмаў для апрацоўкі і паляпшэння якасці малюнкаў і відэа (карэктаванне балансу белага, ухіленне шуму, стабілізацыя відэа, аўтафокус, выбар экспазіцыі і да т.п.), якія могуць падлучацца ў выглядзе адкрытых знешніх бібліятэк або прапрыетарных ізаляваных модуляў. API дае доступ да такіх функцый, як вызначэнне функцыянальнасці наяўных вонкавых і ўбудаваных камер, выкарыстанне профіляў прылад, апрацоўка падзей падлучэння і адключэнні камер, кіраванне захопам дадзеных з камер на ўзроўні асобных кадраў і сінхранізацыя здымкаў з працай выбліску. Магчымая паасобная праца з некалькімі камерамі ў сістэме і арганізацыя захопу адначасова некалькіх відэаструменяў з адной камеры (напрыклад, адзін з нізкім дазволам для відэаканферэнцыі, а іншы з высокім дазволам для архіўнага запісу на дыск).

Крыніца: opennet.ru

Дадаць каментар