QOI ifomathi yoxinzelelo lomfanekiso yaziswa

Ifomati entsha yokunyanzeliswa kwemifanekiso ekhaphukhaphu, engalahlekiyo iye yaziswa - QOI (Umfanekiso Olungileyo Kakhulu), okuvumela ukuba ucinezele ngokukhawuleza imifanekiso kwi-RGB kunye ne-RGBA yezithuba zombala. Xa uthelekisa ukusebenza kunye nefomathi ye-PNG, ukuphunyezwa kwereferensi enentambo enye yefomathi ye-QOI kulwimi lwe-C, engasebenzisi imiyalelo ye-SIMD kunye nokulungiswa kwendibano, ngamaxesha angama-20-50 ngokukhawuleza kwi-encoding speed kune-libpng kunye ne-stb_image library, kunye ne-3 -4 amaxesha ngokukhawuleza kwisantya decoding. Ngokubhekiselele ekusebenzeni koxinzelelo, i-QOI isondele kwi-libpng kwiimvavanyo ezininzi (kwezinye iimvavanyo zingaphambili kancinci, kwaye kwezinye zingaphantsi), kodwa ngokubanzi zibonakala ziphambi kwe-stb_image (inzuzo ukuya kwi-20%).

Ukuphunyezwa reference of QOI in C kuphela 300 imizila yekhowudi. Ikhowudi yomthombo isasazwa phantsi kwelayisenisi ye-MIT. Ukongeza, abanomdla balungiselele ukuphunyezwa kweekhowudi kunye neekhowuda kwiilwimi zeGo, Zig kunye neRust. Iprojekthi iphuhliswa nguDominic Szablewski, umphuhlisi womdlalo onamava ekwenzeni ithala leencwadi lokuchaza ividiyo yeMPEG1. Ukusebenzisa ifomathi ye-QOI, umbhali wayefuna ukubonisa ukuba kunokwenzeka ukwenza enye indlela esebenzayo nelula kwiifomati ezintsonkothileyo zanamhlanje.

Ukusebenza kwe-QOI kuzimele kwisisombululo kunye nohlobo lomfanekiso ofakwe ngekhowudi (O(n)). Ukufakwa kweekhowudi kunye nokubhalwa kweekhowudi kuyenziwa kwipasi enye - ipixel nganye icutshungulwa kube kanye kuphela kwaye inokufakwa ngekhowudi ngenye yeendlela ezi-4, ezikhethiweyo ngokuxhomekeke kumaxabiso eepikseli zangaphambili. Ukuba i-pixel elandelayo ingqamana nedluleyo, ikhawuntari yokuphindaphinda iyanda kuphela. Ukuba i-pixel ihambelana nelinye lamaxabiso kwi-pixel buffer engama-64 edluleyo, ixabiso lithatyathelwa indawo yi-6-bit offset kwi-pixel yexesha elidlulileyo. Ukuba umbala wepikseli yangaphambili uhluke kancinane, umahluko uboniswa kwifom emfutshane (i-encoding emfutshane yokwahlukana kumacandelo ombala angena kwi-2,4, 5 kunye ne-XNUMX bits). Ukuba ulungiselelo alusebenzi, ixabiso elipheleleyo le-rgba linikiwe.

umthombo: opennet.ru

Yongeza izimvo