Cruth teannachaidh ìomhaigh QOI air a thoirt a-steach

Chaidh cruth teannachaidh ìomhaigh aotrom, gun chall a thoirt a-steach - QOI (Ìomhaigh gu math ceart), a leigeas leat ìomhaighean a dhlùthadh gu sgiobalta anns na raointean dath RGB agus RGBA. Nuair a thathar a’ dèanamh coimeas eadar coileanadh le cruth PNG, tha buileachadh iomraidh aon-snàithleach an cruth QOI ann an cànan C, nach bi a’ cleachdadh stiùireadh SIMD agus optimizations cruinneachaidh, 20-50 uair nas luaithe ann an astar còdaidh na leabharlannan libpng agus stb_image, agus 3 -4 tursan nas luaithe ann an astar dì-chòdachadh. A thaobh èifeachdas teannachaidh, tha QOI faisg air libpng anns a 'mhòr-chuid de dheuchainnean (ann an cuid de dheuchainnean tha e beagan air thoiseach, agus ann an cuid eile tha e nas ìsle), ach san fharsaingeachd tha e gu math air thoiseach air stb_image (buannachd suas ri 20%).

Chan eil ann am buileachadh iomraidh QOI ann an C ach 300 loidhne de chòd. Tha an còd tùsail air a sgaoileadh fo chead MIT. A bharrachd air an sin, tha luchd-dealasach air buileachadh de chòdairean agus decoders ullachadh anns na cànanan Go, Zig agus Rust. Tha am pròiseact ga leasachadh le Dominic Szablewski, leasaiche geama le eòlas ann a bhith a’ cruthachadh leabharlann airson bhidio MPEG1 a dhì-chòdachadh. A’ cleachdadh cruth QOI, bha an t-ùghdar airson sealltainn gu bheil e comasach roghainn èifeachdach is sìmplidh a chruthachadh seach cruthan còdachadh ìomhaighean ùr-nodha a tha ro iom-fhillte.

Tha coileanadh QOI neo-eisimeileach bho rùn agus nàdar na h-ìomhaigh còdaichte (O(n)). Bithear a ’dèanamh còdachadh agus còdachadh ann an aon bhealaich - chan eil gach piogsail air a phròiseasadh ach aon turas agus faodar a chòdachadh ann an aon de 4 dòighean, air a thaghadh a rèir luachan piogsail roimhe. Ma tha an ath piogsail aig an aon àm ris an fhear roimhe, chan eil an àireamhair ath-aithris ag àrdachadh ach. Ma tha am piogsail a’ maidseadh aon de na luachan anns a’ bhufair 64 piogsail a chaidh seachad, thèid 6-bit a chuir an àite an luach chun na piogsail a dh’ fhalbh. Ma tha dath na piogsail roimhe beagan eadar-dhealaichte, tha an eadar-dhealachadh air a chomharrachadh ann an cruth goirid (còdachadh goirid air na h-eadar-dhealachaidhean ann an co-phàirtean dath a tha a’ freagairt air pìosan 2,4, 5 agus XNUMX). Mura h-eil optimization iomchaidh, tha an luach rgba iomlan air a thoirt seachad.

Source: fosgailtenet.ru

Cuir beachd ann