Линукс дээр камерын дэмжлэг үзүүлэх стек болох libcamera-ийн анхны хувилбар

Дөрвөн жилийн турш хөгжүүлсний дараа libcamera төслийн анхны хувилбар (0.0.1) бий болсон бөгөөд энэ нь V4L2 API-г үргэлжлүүлэн хөгжүүлж буй Linux, Android болон ChromeOS дээр видео камер, камер, ТВ тааруулагчтай ажиллах програм хангамжийн стекийг санал болгож байна. эцэст нь түүнийг орлуулах болно. Номын сангийн API өөрчлөгдсөөр байгаа бөгөөд хараахан бүрэн тогтворжоогүй байгаа тул төсөл нь тасралтгүй хөгжүүлэлтийн загварыг ашиглан тусдаа хувилбаруудыг салбаралгүйгээр өнөөг хүртэл хөгжиж ирсэн. Тохиромжтой байдалд нөлөөлж буй API-ийн өөрчлөлтийг хянах, номын сангуудыг багц хэлбэрээр хүргэх ажлыг хялбарчлахын тулд түгээлтийн хэрэгцээ шаардлагад нийцүүлэн ABI болон API-ийн өөрчлөлтүүдийн цар хүрээг тусгасан хувилбаруудыг үе үе гаргах шийдвэр гаргасан. Төслийн код нь C++ хэл дээр бичигдсэн бөгөөд LGPLv2.1 лицензийн дагуу түгээгддэг.

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

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

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

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

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх