Unua eldono de libcamera, stako por fotila subteno en Linukso

Post kvar jaroj da evoluo, la unua eldono de la libcamera projekto (0.0.1) estis formita, ofertante programaron por labori kun vidbendaj fotiloj, fotiloj kaj televidagordiloj en Linukso, Android kaj ChromeOS, kiu daŭrigas la evoluon de la V4L2 API. kaj poste anstataŭigos ĝin. Ĉar la API de la biblioteko daŭre ŝanĝiĝas kaj ankoraŭ ne estis plene stabiligita, la projekto ĝis nun disvolviĝis sen branĉigi individuajn eldonojn uzante kontinuan evoluan modelon. En respondo al la bezono de distribuoj por konservi trakon de API-ŝanĝoj kiuj influas kongruecon, kaj por simpligi la liveron de bibliotekoj en pakaĵoj, la decido nun estis farita por periode generi eldonojn reflektantajn la amplekson de ABI kaj API-ŝanĝoj. La projektkodo estas skribita en C++ kaj distribuita sub la permesilo LGPLv2.1.

La projekto estas disvolvita de programistoj de plurmediaj subsistemoj de la Linukso-kerno kune kun kelkaj fotilproduktantoj por normaligi la situacion kun Linukso-subteno por fotiloj por saĝtelefonoj kaj enkonstruitaj aparatoj kiuj estas ligitaj al proprietaj ŝoforoj. API V4L2, jam havebla en la Linukso-kerno, estis iam kreita por labori kun tradiciaj apartaj retaj fotiloj kaj estas malbone adaptita al la lastatempa tendenco movi MCU-funkciecon sur la ŝultrojn de la CPU.

Male al tradiciaj fotiloj, en kiuj primaraj bildpretigaj operacioj estas faritaj sur specialeca procesoro enkonstruita en la fotilon (MCU), en enkonstruitaj aparatoj, por redukti koston, ĉi tiuj funkcioj estas efektivigitaj sur la ŝultroj de la ĉefa CPU kaj postulas kompleksan ŝoforon kiu inkluzivas ne-malfermfontajn licencajn komponantojn. Kadre de la projekto libcamera, proponantoj de malfermkoda programaro kaj fabrikantoj de aparataro provis krei kompromisan solvon, kiu unuflanke kontentigas la bezonojn de liberkodaj programistoj, kaj aliflanke, ebligas protekti la intelektan proprieton de fotilproduktantoj.

La stako ofertita de la libcamera biblioteko estas efektivigita tute en uzantspaco. Por certigi kongruon kun ekzistantaj programaj medioj kaj aplikoj, kongruaj tavoloj estas provizitaj por la V4L API, Gstreamer kaj Android Camera HAL. Propraj komponentoj specifaj por ĉiu fotilo por interagado kun ekipaĵo estas dizajnitaj kiel moduloj kiuj funkcias en apartaj procezoj kaj interagas kun la biblioteko per IPC. Moduloj ne havas rektan aliron al la aparato kaj aliras la ekipaĵon per meza API, petoj per kiuj estas kontrolitaj, filtritaj kaj limigitaj al nur aliri la funkciojn necesajn por kontroli la fotilon.

La biblioteko ankaŭ disponigas aliron al algoritmoj por prilaborado kaj plibonigado de la kvalito de bildoj kaj vidbendoj (ĝustigo de blankekvilibro, bruoredukto, videostabiligo, aŭtomata fokuso, ekspona elekto, ktp.), kiuj povas esti konektitaj en la formo de malfermitaj eksteraj bibliotekoj aŭ proprietaj. izolitaj moduloj. La API disponigas aliron al funkcioj kiel determini la funkciecon de ekzistantaj eksteraj kaj enkonstruitaj fotiloj, uzi aparatajn profilojn, pritrakti fotilkonekton kaj malkonekti okazaĵojn, administri fotildatumkapton ĉe la individua kadronivelo, kaj sinkronigi bildojn per fulmo. Eblas labori aparte kun pluraj fotiloj en la sistemo kaj organizi la samtempan kapton de pluraj videofluoj de unu fotilo (ekzemple, unu kun malalta rezolucio por videokonferenco, kaj alia kun alta rezolucio por arkiva registrado al disko).

fonto: opennet.ru

Aldoni komenton