QOI bildkunprema formato enkondukita

Nova malpeza, senperda bildkunprema formato estis enkondukita - QOI (Sufiĉe OK Bildo), kiu permesas vin tre rapide kunpremi bildojn en la kolorspacoj RGB kaj RGBA. Komparante rendimenton kun la PNG-formato, la unufadena referenca efektivigo de la QOI-formato en C-lingvo, kiu ne uzas SIMD-instrukciojn kaj asembleajn optimumojn, estas 20-50 fojojn pli rapida en kodirapideco ol la libpng kaj stb_image bibliotekoj, kaj 3 -4 fojojn pli rapide en malkoda rapideco. Koncerne kunpreman efikecon, QOI estas proksima al libpng en la plej multaj testoj (en iuj testoj ĝi estas iomete antaŭen, kaj en aliaj ĝi estas malsupera), sed ĝenerale ĝi estas rimarkeble antaŭ stb_image (gajno de ĝis 20%).

La referenca efektivigo de QOI en C estas nur 300 linioj de kodo. La fontkodo estas distribuita sub la MIT-licenco. Aldone, entuziasmuloj preparis realigojn de kodiloj kaj malĉifriloj en la lingvoj Go, Zig kaj Rust. La projekto estas disvolvita de Dominic Szablewski, ludprogramisto kun sperto pri kreado de biblioteko por malkodi videon MPEG1. Uzante la QOI-formaton, la aŭtoro volis montri, ke eblas krei efikan kaj simplan alternativon al tro komplikaj modernaj bildkodigaj formatoj.

QOI-efikeco estas sendependa de la rezolucio kaj naturo de la ĉifrita bildo (O(n)). Kodigado kaj malkodado estas faritaj en unu paŝo - ĉiu pikselo estas prilaborita nur unufoje kaj povas esti kodita en unu el 4 manieroj, elektitaj laŭ la valoroj de antaŭaj pikseloj. Se la sekva pikselo koincidas kun la antaŭa, tiam la ripeta nombrilo nur pliiĝas. Se la pikselo kongruas kun unu el la valoroj en la 64 pasinta piksela bufro, tiam la valoro estas anstataŭigita per 6-bita ofseto al la pasinta pikselo. Se la koloro de la antaŭa pikselo estas iomete malsama, la diferenco estas indikita en mallonga formo (mallonga kodigo de la diferencoj en kolorkomponentoj kiuj konvenas en 2,4, 5 kaj XNUMX bitoj). Se optimumigo ne aplikeblas, la plena rgba valoro estas provizita.

fonto: opennet.ru

Aldoni komenton