libcamera биринчи чыгарылышы, Linux камерасын колдоо үчүн стек

Төрт жылдык өнүгүүдөн кийин, V0.0.1L4 API иштеп чыгууну уланткан Linux, Android жана ChromeOSто видеокамералар, камералар жана ТВ тюнерлери менен иштөө үчүн программалык стекти сунуш кылган libcamera долбоорунун биринчи релизи (2) түзүлдү. жана акыры аны алмаштырат. Китепкананын API дагы эле өзгөрүп жаткандыктан жана али толук турукташа элек болгондуктан, долбоор үзгүлтүксүз өнүгүү моделин колдонуу менен жеке релиздерди бутактабастан иштеп чыкты. Шайкештикке таасир этүүчү API өзгөрүүлөрүнө көз салып туруу жана топтомдордогу китепканаларды жеткирүүнү жөнөкөйлөтүү үчүн бөлүштүрүүнүн зарылдыгына жооп катары, азыр ABI жана API өзгөрүүлөрүнүн көлөмүн чагылдырган релиздерди мезгил-мезгили менен түзүү чечими кабыл алынды. Долбоордун коду C++ тилинде жазылган жана LGPLv2.1 лицензиясынын алкагында таратылган.

Долбоор Linux ядросунун мультимедиалык подсистемаларын иштеп чыгуучулары менен кээ бир камера өндүрүүчүлөрү менен бирдикте жеке драйверлерге байланган смартфондор үчүн камераларды жана орнотулган түзүлүштөрдү Linux колдоосуна байланыштуу кырдаалды нормалдаштыруу максатында иштелип чыгууда. Linux ядросунда мурунтан эле жеткиликтүү болгон API V4L2 бир убакта салттуу өзүнчө веб-камералар менен иштөө үчүн түзүлгөн жана MCU функционалдуулугун CPU'нун ийиндерине жылдыруунун акыркы тенденциясына начар ыңгайлашкан.

Баасын төмөндөтүү үчүн камерага (MCU) орнотулган адистештирилген процессордо (MCU) орнотулган сүрөттөрдү иштетүү боюнча негизги операциялар аткарылган салттуу камералардан айырмаланып, бул функциялар негизги процессордун ийиндеринде аткарылат жана татаал драйверди талап кылат. ачык эмес лицензияланган компоненттерди камтыйт. Libcamera долбоорунун алкагында, ачык булактуу программалык камсыздоону колдоочулар жана аппараттык камсыздоо өндүрүүчүлөр, бир жагынан, ачык булактуу программалык камсыздоону иштеп чыгуучулардын керектөөлөрүн канааттандырган, экинчи жагынан, камера өндүрүүчүлөрдүн интеллектуалдык менчигин коргоого мүмкүндүк берген компромисстик чечимди түзүүгө аракет кылышкан.

Libcamera китепканасы сунуштаган стек толугу менен колдонуучу мейкиндигинде ишке ашырылат. Учурдагы программалык чөйрөлөр жана тиркемелер менен шайкештикти камсыз кылуу үчүн V4L API, Gstreamer жана Android Camera HAL үчүн шайкештик катмарлары каралган. Ар бир камерага тиешелүү жабдуулар менен өз ара аракеттенүүнүн менчик компоненттери өзүнчө процесстерде аткарылган жана IPC аркылуу китепкана менен өз ара аракеттенүүчү модулдар катары иштелип чыккан. Модулдардын аппаратка түз кирүү мүмкүнчүлүгү жок жана жабдууларга орто API аркылуу кирүү мүмкүнчүлүгү жок, алар аркылуу сурамдар текшерилет, чыпкаланат жана камераны башкаруу үчүн зарыл болгон функцияларга жетүү менен гана чектелет.

Китепкана ошондой эле ачык тышкы китепканалар же менчик формасында туташтырылган сүрөттөр менен видеолордун сапатын (ак балансын жөндөө, ызы-чууну азайтуу, видеону турукташтыруу, автофокус, экспозицияны тандоо ж.б.) иштетүү жана жакшыртуу алгоритмдерине мүмкүнчүлүк берет. изоляцияланган модулдар. API учурдагы тышкы жана орнотулган камералардын функционалдуулугун аныктоо, түзмөк профилдерин колдонуу, камераны туташтыруу жана ажыратуу окуяларын башкаруу, жеке кадр деңгээлинде камеранын маалыматтарын тартууну башкаруу жана сүрөттөрдү жарк менен синхрондоштуруу сыяктуу мүмкүнчүлүктөрдү камсыз кылат. Системада бир нече камералар менен өзүнчө иштөөгө жана бир камерадан бир эле учурда бир нече видео агымдарды тартууну уюштурууга болот (мисалы, видеоконференция өткөрүү үчүн бирөөсү төмөн, ал эми экинчиси дискке архивдик жазуу үчүн жогорку резолюциялуу).

Source: opennet.ru

Комментарий кошуу