కొత్త తేలికైన, లాస్లెస్ ఇమేజ్ కంప్రెషన్ ఫార్మాట్ పరిచయం చేయబడింది - QOI (చాలా ఓకే ఇమేజ్), ఇది RGB మరియు RGBA కలర్ స్పేస్లలో ఇమేజ్లను చాలా త్వరగా కుదించడానికి మిమ్మల్ని అనుమతిస్తుంది. PNG ఫార్మాట్తో పనితీరును పోల్చినప్పుడు, SIMD సూచనలు మరియు అసెంబ్లీ ఆప్టిమైజేషన్లను ఉపయోగించని C భాషలో QOI ఫార్మాట్ యొక్క సింగిల్-థ్రెడ్ రిఫరెన్స్ అమలు, libpng మరియు stb_image లైబ్రరీల కంటే ఎన్కోడింగ్ వేగంలో 20-50 రెట్లు వేగంగా ఉంటుంది మరియు 3 -డీకోడింగ్ వేగంలో 4 రెట్లు ఎక్కువ. కుదింపు సామర్థ్యం పరంగా, QOI చాలా పరీక్షలలో libpngకి దగ్గరగా ఉంటుంది (కొన్ని పరీక్షలలో ఇది కొద్దిగా ముందుంది, మరియు మరికొన్నింటిలో ఇది నాసిరకం), కానీ సాధారణంగా ఇది stb_image కంటే ముందుంది (20% వరకు లాభం).
C లో QOI యొక్క సూచన అమలు కోడ్ యొక్క 300 లైన్లు మాత్రమే. సోర్స్ కోడ్ MIT లైసెన్స్ క్రింద పంపిణీ చేయబడింది. అదనంగా, ఔత్సాహికులు గో, జిగ్ మరియు రస్ట్ భాషలలో ఎన్కోడర్లు మరియు డీకోడర్ల అమలును సిద్ధం చేశారు. MPEG1 వీడియోను డీకోడింగ్ చేయడానికి లైబ్రరీని రూపొందించడంలో అనుభవం ఉన్న గేమ్ డెవలపర్ అయిన డొమినిక్ స్జాబ్లేవ్స్కీ ఈ ప్రాజెక్ట్ను అభివృద్ధి చేస్తున్నారు. QOI ఆకృతిని ఉపయోగించి, అతి క్లిష్టతరమైన ఆధునిక ఇమేజ్ ఎన్కోడింగ్ ఫార్మాట్లకు సమర్థవంతమైన మరియు సరళమైన ప్రత్యామ్నాయాన్ని సృష్టించడం సాధ్యమవుతుందని రచయిత చూపించాలనుకున్నారు.
QOI పనితీరు ఎన్కోడ్ చేయబడిన ఇమేజ్ (O(n)) యొక్క రిజల్యూషన్ మరియు స్వభావం నుండి స్వతంత్రంగా ఉంటుంది. ఎన్కోడింగ్ మరియు డీకోడింగ్ ఒకే పాస్లో నిర్వహించబడతాయి - ప్రతి పిక్సెల్ ఒకసారి మాత్రమే ప్రాసెస్ చేయబడుతుంది మరియు మునుపటి పిక్సెల్ల విలువలను బట్టి ఎంపిక చేయబడిన 4 మార్గాలలో ఒకదానిలో ఎన్కోడ్ చేయవచ్చు. తదుపరి పిక్సెల్ మునుపటి దానితో సమానంగా ఉంటే, పునరావృత కౌంటర్ మాత్రమే పెరుగుతుంది. పిక్సెల్ 64 గత పిక్సెల్ బఫర్లోని విలువలలో ఒకదానికి సరిపోలితే, విలువ గత పిక్సెల్కు 6-బిట్ ఆఫ్సెట్ ద్వారా భర్తీ చేయబడుతుంది. మునుపటి పిక్సెల్ యొక్క రంగు కొద్దిగా భిన్నంగా ఉంటే, వ్యత్యాసం చిన్న రూపంలో సూచించబడుతుంది (2,4, 5 మరియు XNUMX బిట్లకు సరిపోయే రంగు భాగాలలో తేడాల యొక్క చిన్న ఎన్కోడింగ్). ఆప్టిమైజేషన్ వర్తించకపోతే, పూర్తి rgba విలువ అందించబడుతుంది.
మూలం: opennet.ru