Hoʻokomo ʻia ke ʻano hoʻoemi kiʻi QOI

Ua hoʻokomo ʻia kahi ʻano hoʻopili kiʻi māmā a me ka pohō ʻole - QOI (Quite OK Image), e hiki ai iā ʻoe ke hoʻopaʻa wikiwiki i nā kiʻi i loko o nā wahi waihoʻoluʻu RGB a me RGBA. I ka hoʻohālikelike ʻana i ka hana me ka PNG format, ʻo ka hoʻokō ʻana i ka hōʻike QOI ma ka ʻōlelo C, ʻaʻole i hoʻohana i nā ʻōlelo aʻoaʻo SIMD a me ka hoʻoponopono ʻana i ka hui, ʻo 20-50 mau manawa wikiwiki ma mua o ka libpng a me stb_image libraries, a me 3 -4 mau manawa ʻoi aku ka wikiwiki i ka wikiwiki decoding. Ma ke ʻano o ka hoʻokō pono ʻana, ua kokoke ʻo QOI i ka libpng i ka hapa nui o nā hoʻokolohua (ma kekahi mau hoʻāʻo ʻoi aku ka liʻiliʻi ma mua, a ma nā mea ʻē aʻe he haʻahaʻa), akā ma ke ʻano maʻamau ua ʻike ʻia ma mua o stb_image (loaʻa a hiki i 20%).

ʻO ka hoʻokō kuhikuhi ʻana o QOI ma C he 300 mau laina code. Hāʻawi ʻia ke code kumu ma lalo o ka laikini MIT. Eia hou, ua hoʻomākaukau ka poʻe hoihoi i ka hoʻokō ʻana i nā encoders a me nā decoders ma nā ʻōlelo Go, Zig a me Rust. Ke hoʻomohala ʻia nei ka papahana e Dominic Szablewski, he mea hoʻomohala pāʻani me ka ʻike i ka hana ʻana i kahi waihona no ka decoding MPEG1 wikiō. Me ka hoʻohana ʻana i ke ʻano QOI, ua makemake ka mea kākau e hōʻike i hiki ke hana i kahi koho kūpono a maʻalahi hoʻi i nā ʻano hoʻopili kiʻi paʻakikī hou.

Kūʻokoʻa ka hana QOI i ka hoʻonā a me ke ʻano o ke kiʻi i hoʻopaʻa ʻia (O(n)). Hana ʻia ka hoʻopili ʻana a me ka decoding i hoʻokahi pass - ua hoʻoponopono ʻia kēlā me kēia pixel i hoʻokahi wale nō a hiki ke hoʻopili ʻia i kekahi o nā ala 4, koho ʻia ma muli o nā waiwai o nā pika mua. Inā kū like ka pika aʻe me ka mea ma mua, a laila e hoʻonui wale ʻia ka counter repetition. Inā pili ka pixel i kekahi o nā waiwai i ka 64 past pixel buffer, a laila ua hoʻololi ʻia ka waiwai e kahi 6-bit offset i ka pixel i hala. Inā ʻokoʻa iki ka waihoʻoluʻu o ka pika mua, hōʻike ʻia ka ʻokoʻa ma kahi ʻano pōkole (hoʻopili pōkole o nā ʻokoʻa o nā ʻāpana kala i kūpono i ka 2,4, 5 a me XNUMX bits). Inā ʻaʻole pili ka optimization, hāʻawi ʻia ka waiwai rgba piha.

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka