Ewebata usoro mkpakọ onyonyo QOI

Ewebata usoro mkpakọ onyonyo dị fechaa ọhụrụ na-enweghị efu - QOI (Onyinye dị mma), nke na-enye gị ohere ịpịkọta onyonyo ngwa ngwa na oghere RGB na RGBA. Mgbe ị na-atụnyere arụmọrụ na usoro PNG, mmejuputa ntụaka otu-threaded nke usoro QOI n'asụsụ C, nke na-adịghị eji ntuziaka SIMD na njikarịcha mgbakọ, na-agba ọsọ ugboro 20-50 na ntinye koodu karịa ụlọ akwụkwọ libpng na stb_image, yana 3. -4 ugboro ọsọ ọsọ na ngbanwe ọsọ. N'ihe gbasara arụmọrụ mkpakọ, QOI dị nso na libpng n'ọtụtụ ule (n'ule ụfọdụ ọ dị ntakịrị n'ihu, na ndị ọzọ ọ dị ala), mana n'ozuzu ọ na-apụta n'ihu stb_image (uru ruru 20%).

Ntinye ntụaka nke QOI na C bụ naanị ahịrị koodu 300. A na-ekesa koodu isi mmalite n'okpuru ikike MIT. Na mgbakwunye, ndị na-anụ ọkụ n'obi akwadola mmejuputa ntinye koodu na ihe ngbanwe n'asụsụ Go, Zig na Rust. Dominic Szablewski, onye nrụpụta egwuregwu nwere ahụmịhe n'ịmepụta ọbá akwụkwọ maka imezi vidiyo MPEG1 na-arụ ọrụ a. N'iji usoro QOI, onye odee chọrọ igosi na ọ ga-ekwe omume ịmepụta ụzọ dị irè ma dị mfe na usoro ntinye ihe oyiyi ọgbara ọhụrụ gbagwojuru anya.

Ọrụ QOI na-adabereghị na mkpebi na ọdịdị nke onyonyo etinyere (O(n)). A na-eme ntinye koodu na ngbanwe n'otu ngafe - a na-ahazi pixel ọ bụla naanị otu ugboro, enwere ike itinye ya n'otu ụzọ anọ, ahọpụtara dabere na ụkpụrụ nke pikselụ gara aga. Ọ bụrụ na pikselụ na-esote dabara na nke gara aga, mgbe ahụ counter nkwugharị na-abawanye naanị. Ọ bụrụ na pikselụ dakọtara otu n'ime ụkpụrụ dị na 4 gara aga pixel buffer, mgbe ahụ uru a na-eji 64-bit dechie ya na pixel gara aga. Ọ bụrụ na agba nke pikselụ gara aga dịtụ iche, a na-egosipụta ọdịiche ahụ n'ụdị dị nkenke (ngbanwe dị mkpirikpi nke ọdịiche dị na ngwa agba dabara na 6, 2,4 na 5 bits). Ọ bụrụ na njikarịcha adịghị, a na-enye uru rgba zuru ezu.

isi: opennet.ru

Tinye a comment