Forma berhevkirina wêneya QOI hate destnîşan kirin

Formatek nû ya sivik, bê wendakirina wêneyê hate destnîşan kirin - QOI (Wêneyek Pir OK), ku dihêle hûn pir zû wêneyan li cîhên rengîn ên RGB û RGBA berhev bikin. Dema ku performansê bi formata PNG-ê re berhev bikin, pêkanîna referansa yek-têkilî ya formata QOI bi zimanê C, ku rêwerzên SIMD û xweşbîniyên kombûnê bikar nayîne, di leza kodkirinê de ji pirtûkxaneyên libpng û stb_image 20-50 carî zûtir e, û 3 -4 caran di leza deşîfrekirinê de zûtir. Di warê karbidestiya berhevkirinê de, QOI di pir ceribandinan de nêzîkê libpng e (di hin ceribandinan de ew hinekî pêş de ye, û di hinên din de kêm e), lê bi gelemperî ew bi baldarî li pêş stb_image ye (qezenc heya 20%).

Pêkanîna referansê ya QOI di C de tenê 300 rêzikên kodê ye. Koda çavkaniyê di bin lîsansa MITê de tê belavkirin. Wekî din, dilxwazan bi zimanên Go, Zig û Rust pêkanînên enkoder û dekoderan amade kirine. Proje ji hêla Dominic Szablewski ve, pêşdebirek lîstikê ku di afirandina pirtûkxaneyek ji bo deşîfrekirina vîdyoya MPEG1 de xwedî ezmûn e, tê pêşve xistin. Bi karanîna formata QOI, nivîskar xwest ku nîşan bide ku gengaz e ku meriv alternatîfek bibandor û hêsan ji formatên şîfrekirina wêneya nûjen a pir tevlihev re biafirîne.

Performansa QOI ji çareserî û xwezaya wêneya kodkirî (O(n)) serbixwe ye. Şîfrekirin û dekodkirin bi yek derbasbûnê têne kirin - her pîxel tenê carekê tê pêvajo kirin û dikare bi yek ji 4 awayan were kod kirin, ku li gorî nirxên pixelên berê têne hilbijartin. Ger pixela paşîn bi ya berê re li hev bike, wê hingê jimareya dubarekirinê tenê zêde dibe. Ger pîxel yek ji nirxan di tampona 64 pîxela borî de bi hev re bişopîne, wê hingê nirx ji hêla pîxela paşîn ve ji hêla 6-bit veqetandî tê guhertin. Ger rengê pîxela berê hinekî cûda be, cûdahî bi rengek kurt tê destnîşan kirin (kodkirina kurt a cûdahiyên di hêmanên rengîn ên ku di 2,4, 5 û XNUMX bit de cih digirin). Ger optimîzasyon ne pêkan be, nirxa tevahî ya rgba tê peyda kirin.

Source: opennet.ru

Add a comment