QOI кескінін қысу пішімі енгізілді

Кескінді сығудың жаңа жеңіл, жоғалтпай пішімі енгізілді - QOI (өте жақсы сурет), ол RGB және RGBA түс кеңістігіндегі кескіндерді өте жылдам сығуға мүмкіндік береді. PNG пішімімен өнімділікті салыстыру кезінде SIMD нұсқаулары мен құрастыруды оңтайландыруды пайдаланбайтын C тіліндегі QOI пішімінің бір ағынды анықтамалық орындалуы libpng және stb_image кітапханаларына қарағанда кодтау жылдамдығында 20-50 есе жылдамырақ және 3 - Декодтау жылдамдығында 4 есе жылдам. Сығымдау тиімділігі бойынша QOI көптеген сынақтарда libpng-ге жақын (кейбір сынақтарда ол сәл алда, ал басқаларында ол төмен), бірақ тұтастай алғанда stb_image-тен айтарлықтай алда (20%-ға дейін өсу).

C тілінде QOI анықтамалық орындалуы тек 300 код жолын құрайды. Бастапқы код MIT лицензиясы бойынша таратылады. Сонымен қатар, энтузиастар Go, Zig және Rust тілдерінде кодтауыштар мен декодерлерді іске асыруды дайындады. Жобаны MPEG1 бейнесін декодтау үшін кітапхана құру тәжірибесі бар ойын әзірлеушісі Доминик Шаблвски әзірлеуде. QOI пішімін пайдалана отырып, автор тым күрделі заманауи кескін кодтау форматтарына тиімді және қарапайым балама жасауға болатынын көрсеткісі келді.

QOI өнімділігі кодталған кескіннің (O(n)) ажыратымдылығы мен сипатына тәуелсіз. Кодтау және декодтау бір өтуде орындалады - әрбір пиксел тек бір рет өңделеді және алдыңғы пикселдердің мәндеріне байланысты таңдалған 4 жолдың бірімен кодталуы мүмкін. Егер келесі пиксел алдыңғымен сәйкес келсе, қайталау есептегіші тек артады. Егер пиксель өткен 64 пиксель буферіндегі мәндердің біріне сәйкес келсе, мән өткен пиксельге 6 биттік ығысумен ауыстырылады. Алдыңғы пикселдің түсі сәл өзгеше болса, айырмашылық қысқа түрде көрсетіледі (2,4, 5 және XNUMX биттерге сәйкес келетін түс құрамдастарының айырмашылықтарын қысқаша кодтау). Оңтайландыру қолданылмаса, толық rgba мәні беріледі.

Ақпарат көзі: opennet.ru

пікір қалдыру