Unang release ng libcamera, isang stack para sa suporta sa camera sa Linux

Pagkatapos ng apat na taon ng pag-develop, nabuo ang unang release ng libcamera project (0.0.1), na nag-aalok ng software stack para sa pagtatrabaho sa mga video camera, camera at TV tuner sa Linux, Android at ChromeOS, na nagpapatuloy sa pagbuo ng V4L2 API at sa huli ay papalitan ito. Dahil ang API ng library ay nagbabago pa rin at hindi pa ganap na nagpapatatag, ang proyekto ay hanggang ngayon ay nabuo nang hindi sumasanga sa mga indibidwal na paglabas gamit ang isang tuluy-tuloy na modelo ng pag-unlad. Bilang tugon sa pangangailangan ng mga distribusyon na subaybayan ang mga pagbabago sa API na nakakaapekto sa compatibility, at para pasimplehin ang paghahatid ng mga library sa mga package, ginawa na ngayon ang desisyon na pana-panahong bumuo ng mga release na sumasalamin sa lawak ng mga pagbabago sa ABI at API. Ang code ng proyekto ay nakasulat sa C++ at ipinamahagi sa ilalim ng lisensyang LGPLv2.1.

Ang proyekto ay binuo ng mga developer ng multimedia subsystem ng Linux kernel kasama ang ilang mga tagagawa ng camera upang gawing normal ang sitwasyon sa suporta ng Linux para sa mga camera para sa mga smartphone at naka-embed na device na nakatali sa pagmamay-ari na mga driver. Ang API V4L2, na available na sa Linux kernel, ay nilikha sa isang pagkakataon upang gumana sa tradisyonal na magkakahiwalay na mga web camera at hindi gaanong inangkop sa kamakailang trend ng paglipat ng functionality ng MCU sa mga balikat ng CPU.

Hindi tulad ng mga tradisyunal na camera, kung saan ang mga pangunahing operasyon sa pagpoproseso ng imahe ay isinasagawa sa isang dalubhasang processor na binuo sa camera (MCU), sa mga naka-embed na aparato, upang mabawasan ang gastos, ang mga function na ito ay isinasagawa sa mga balikat ng pangunahing CPU at nangangailangan ng isang kumplikadong driver na kabilang ang mga non-open-source na lisensyadong bahagi. Bilang bahagi ng proyekto ng libcamera, sinubukan ng mga tagapagtaguyod ng open source na software at mga tagagawa ng hardware na lumikha ng solusyon sa kompromiso na, sa isang banda, ay nakakatugon sa mga pangangailangan ng mga developer ng open source na software, at sa kabilang banda, ay nagbibigay-daan sa pagprotekta sa intelektwal na pag-aari ng mga tagagawa ng camera.

Ang stack na inaalok ng library ng libcamera ay ganap na ipinatupad sa espasyo ng gumagamit. Upang matiyak ang pagiging tugma sa mga umiiral nang software environment at application, ibinibigay ang mga layer ng compatibility para sa V4L API, Gstreamer at Android Camera HAL. Ang mga proprietary na bahagi na partikular sa bawat camera para sa pakikipag-ugnayan sa kagamitan ay idinisenyo bilang mga module na tumatakbo sa magkakahiwalay na proseso at nakikipag-ugnayan sa library sa pamamagitan ng IPC. Ang mga module ay walang direktang pag-access sa device at pag-access sa kagamitan sa pamamagitan ng isang intermediate na API, ang mga kahilingan kung saan sinusuri, sinasala at limitado lamang sa pag-access sa functionality na kinakailangan para makontrol ang camera.

Nagbibigay din ang library ng access sa mga algorithm para sa pagproseso at pagpapabuti ng kalidad ng mga imahe at video (white balance adjustment, noise reduction, video stabilization, autofocus, exposure selection, atbp.), na maaaring konektado sa anyo ng mga bukas na panlabas na library o proprietary. nakahiwalay na mga module. Ang API ay nagbibigay ng access sa mga function tulad ng pagtukoy sa functionality ng mga umiiral na external at built-in na camera, gamit ang mga profile ng device, paghawak ng koneksyon sa camera at mga kaganapan sa pagdiskonekta, pamamahala ng pagkuha ng data ng camera sa indibidwal na antas ng frame, at pag-synchronize ng mga larawan sa pagpapatakbo ng flash. Posibleng magtrabaho nang hiwalay sa ilang mga camera sa system at ayusin ang sabay-sabay na pagkuha ng ilang mga video stream mula sa isang camera (halimbawa, isa na may mababang resolution para sa video conferencing, at isa pa na may mataas na resolution para sa pag-record ng archival sa disk).

Pinagmulan: opennet.ru

Magdagdag ng komento