Otettiin käyttöön QOI-kuvanpakkausmuoto

Uusi kevyt, häviötön kuvanpakkausmuoto on otettu käyttöön - QOI (Guite OK Image), jonka avulla voit pakata kuvia erittäin nopeasti RGB- ja RGBA-väriavaruudessa. Kun suorituskykyä verrataan PNG-muotoon, yksisäikeinen QOI-muodon viitetoteutus C-kielellä, joka ei käytä SIMD-käskyjä ja kokoonpanooptimointeja, on koodausnopeudeltaan 20-50 kertaa nopeampi kuin libpng- ja stb_image-kirjastot, ja 3 -4 kertaa nopeampi dekoodausnopeudessa. Pakkaustehokkuuden suhteen QOI on useimmissa testeissä lähellä libpng:tä (joissakin testeissä se on hieman edellä ja toisissa huonompi), mutta yleisesti ottaen se on huomattavasti edellä stb_imagea (vahvistus jopa 20 %).

QOI:n viitetoteutus C:ssä on vain 300 koodiriviä. Lähdekoodia jaetaan MIT-lisenssillä. Lisäksi harrastajat ovat valmistaneet enkooderi- ja dekooderitoteutuksia Go-, Zig- ja Rust-kielillä. Projektia kehittää Dominic Szablewski, pelikehittäjä, jolla on kokemusta MPEG1-videon dekoodauksen kirjaston luomisesta. QOI-formaatilla kirjoittaja halusi osoittaa, että on mahdollista luoda tehokas ja yksinkertainen vaihtoehto liian monimutkaisille nykyaikaisille kuvankoodausformaateille.

QOI-suorituskyky on riippumaton koodatun kuvan resoluutiosta ja luonteesta (O(n)). Koodaus ja dekoodaus suoritetaan yhdellä kertaa - jokainen pikseli käsitellään vain kerran ja se voidaan koodata yhdellä neljästä tavasta, jotka valitaan aiempien pikselien arvojen mukaan. Jos seuraava pikseli on sama kuin edellinen, toistolaskuri vain kasvaa. Jos pikseli vastaa jotakin 4 aiemman pikselin puskurin arvoista, arvo korvataan 64-bittisellä siirtymällä menneeseen pikseliin. Jos edellisen pikselin väri on hieman erilainen, ero ilmoitetaan lyhyessä muodossa (lyhyt koodaus värikomponenttien eroista, jotka sopivat 6, 2,4 ja 5 bittiin). Jos optimointia ei voida soveltaa, koko rgba-arvo annetaan.

Lähde: opennet.ru

Lisää kommentti