QOI เช‡เชฎเซ‡เชœ เช•เชฎเซเชชเซเชฐเซ‡เชถเชจ เชซเซ‹เชฐเซเชฎเซ‡เชŸ เชฐเชœเซ‚ เช•เชฐเซเชฏเซเช‚

เชจเชตเซเช‚ เชฒเชพเช‡เชŸเชตเซ‡เช‡เชŸ, เชฒเซ‹เชธเชฒเซ‡เชธ เช‡เชฎเซ‡เชœ เช•เชฎเซเชชเซเชฐเซ‡เชถเชจ เชซเซ‹เชฐเซเชฎเซ‡เชŸ เชฐเชœเซ‚ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡ - QOI (เชเช•เชฆเชฎ เชฌเชฐเชพเชฌเชฐ เช‡เชฎเซ‡เชœ), เชœเซ‡ เชคเชฎเชจเซ‡ RGB เช…เชจเซ‡ RGBA เช•เชฒเชฐ เชธเซเชชเซ‡เชธเชฎเชพเช‚ เช‡เชฎเซ‡เชœเชจเซ‡ เช–เซ‚เชฌ เชœ เชเชกเชชเชฅเซ€ เชธเช‚เช•เซเชšเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. PNG เชซเซ‹เชฐเซเชฎเซ‡เชŸ เชธเชพเชฅเซ‡ เชชเซเชฐเชฆเชฐเซเชถเชจเชจเซ€ เชธเชฐเช–เชพเชฎเชฃเซ€ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡, C เชญเชพเชทเชพเชฎเชพเช‚ QOI เชซเซ‹เชฐเซเชฎเซ‡เชŸเชจเซเช‚ เชธเชฟเช‚เช—เชฒ-เชฅเซเชฐเซ‡เชกเซ‡เชก เชธเช‚เชฆเชฐเซเชญ เช…เชฎเชฒเซ€เช•เชฐเชฃ, เชœเซ‡ SIMD เชธเซ‚เชšเชจเชพเช“ เช…เชจเซ‡ เชเชธเซ‡เชฎเซเชฌเชฒเซ€ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เชเซ‡เชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเซเช‚ เชจเชฅเซ€, libpng เช…เชจเซ‡ stb_image เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เช“ เช•เชฐเชคเชพเช‚ เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชเชกเชชเชฎเชพเช‚ 20-50 เช—เชฃเซ€ เชเชกเชชเซ€ เช›เซ‡, เช…เชจเซ‡ 3. เชกเซ€เช•เซ‹เชกเชฟเช‚เช— เชเชกเชชเชฎเชพเช‚ -4 เช—เชฃเซ€ เชเชกเชชเซ€. เช•เชฎเซเชชเซเชฐเซ‡เชถเชจ เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพเชจเชพ เชธเช‚เชฆเชฐเซเชญเชฎเชพเช‚, เชฎเซ‹เชŸเชพเชญเชพเช—เชจเชพ เชชเชฐเซ€เช•เซเชทเชฃเซ‹เชฎเชพเช‚ QOI libpng เชจเซ€ เชจเชœเซ€เช• เช›เซ‡ (เช•เซ‡เชŸเชฒเชพเช• เชชเชฐเซ€เช•เซเชทเชฃเซ‹เชฎเชพเช‚ เชคเซ‡ เชธเชนเซ‡เชœ เช†เช—เชณ เช›เซ‡, เช…เชจเซ‡ เช…เชจเซเชฏเชฎเชพเช‚ เชคเซ‡ เชนเชฒเช•เซ€ เช—เซเชฃเชตเชคเซเชคเชพเชตเชพเชณเชพ เช›เซ‡), เชชเชฐเช‚เชคเซ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชคเซ‡ stb_image (20% เชธเซเชงเซ€เชจเซ‹ เชซเชพเชฏเชฆเซ‹) เช•เชฐเชคเชพเช‚ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชฐเซ€เชคเซ‡ เช†เช—เชณ เช›เซ‡.

C เชฎเชพเช‚ QOI เชจเซ‹ เชธเช‚เชฆเชฐเซเชญ เช…เชฎเชฒเซ€เช•เชฐเชฃ เช•เซ‹เชกเชจเซ€ เชฎเชพเชคเซเชฐ 300 เชฐเซ‡เช–เชพเช“ เช›เซ‡. เชธเซเชคเซเชฐเซ‹เชค เช•เซ‹เชก MIT เชฒเชพเชฏเชธเชจเซเชธ เชนเซ‡เช เชณ เชตเชฟเชคเชฐเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชตเชงเซเชฎเชพเช‚, เช‰เชคเซเชธเชพเชนเซ€เช“เช เช—เซ‹, เชเชฟเช— เช…เชจเซ‡ เชฐเชธเซเชŸ เชญเชพเชทเชพเช“เชฎเชพเช‚ เชเชจเซเช•เซ‹เชกเชฐ เช…เชจเซ‡ เชกเซ€เช•เซ‹เชกเชฐเชจเชพ เช…เชฎเชฒเซ€เช•เชฐเชฃเซ‹ เชคเซˆเชฏเชพเชฐ เช•เชฐเซเชฏเชพ เช›เซ‡. เช† เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชกเซ‹เชฎเชฟเชจเชฟเช• Szablewski เชฆเซเชตเชพเชฐเชพ เชตเชฟเช•เชธเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชฐเชนเซเชฏเซ‹ เช›เซ‡, เชœเซ‡ MPEG1 เชตเชฟเชกเชฟเชฏเซ‹เชจเซ‡ เชกเซ€เช•เซ‹เชก เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เชฌเชจเชพเชตเชตเชพเชจเซ‹ เช…เชจเซเชญเชต เชงเชฐเชพเชตเชคเชพ เช—เซ‡เชฎ เชกเซ‡เชตเชฒเชชเชฐ เช›เซ‡. QOI เชซเซ‹เชฐเซเชฎเซ‡เชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡, เชฒเซ‡เช–เช• เช เชฌเชคเชพเชตเชตเชพ เชฎเชพเช—เซ‡ เช›เซ‡ เช•เซ‡ เชตเชงเซ เชœเชŸเชฟเชฒ เช†เชงเซเชจเชฟเช• เช‡เชฎเซ‡เชœ เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชซเซ‹เชฐเซเชฎเซ‡เชŸเชจเซ‹ เช…เชธเชฐเช•เชพเชฐเช• เช…เชจเซ‡ เชธเชฐเชณ เชตเชฟเช•เชฒเซเชช เชฌเชจเชพเชตเชตเซ‹ เชถเช•เซเชฏ เช›เซ‡.

QOI เชชเซเชฐเชฆเชฐเซเชถเชจ เชเชจเซเช•เซ‹เชกเซ‡เชก เชˆเชฎเซ‡เชœ (O(n)) เชจเชพ เชฐเซ€เชเซ‹เชฒเซเชฏเซเชถเชจ เช…เชจเซ‡ เชชเซเชฐเช•เซƒเชคเชฟเชฅเซ€ เชธเซเชตเชคเช‚เชคเซเชฐ เช›เซ‡. เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เช…เชจเซ‡ เชกเซ€เช•เซ‹เชกเชฟเช‚เช— เชเช• เชชเชพเชธเชฎเชพเช‚ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ - เชฆเชฐเซ‡เช• เชชเชฟเช•เซเชธเซ‡เชฒ เชฎเชพเชคเซเชฐ เชเช• เชœ เชตเชพเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช…เชจเซ‡ 4เชฎเชพเช‚เชฅเซ€ เชเช• เชฐเซ€เชคเซ‡ เชเชจเซเช•เซ‹เชก เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡, เชœเซ‡ เช…เช—เชพเช‰เชจเชพ เชชเชฟเช•เซเชธเซ‡เชฒเซเชธเชจเชพ เชฎเซ‚เชฒเซเชฏเซ‹เชจเชพ เช†เชงเชพเชฐเซ‡ เชชเชธเช‚เชฆ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชœเซ‹ เช†เช—เชฒเซเช‚ เชชเชฟเช•เซเชธเซ‡เชฒ เชชเชพเช›เชฒเชพ เชเช• เชธเชพเชฅเซ‡ เชเช•เชฐเซเชช เชนเซ‹เชฏ, เชคเซ‹ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจ เช•เชพเช‰เชจเซเชŸเชฐ เชฎเชพเชคเซเชฐ เชตเชงเซ‡ เช›เซ‡. เชœเซ‹ เชชเชฟเช•เซเชธเซ‡เชฒ 64 เชญเซ‚เชคเช•เชพเชณเชจเชพ เชชเชฟเช•เซเชธเซ‡เชฒ เชฌเชซเชฐเชจเชพ เชฎเซ‚เชฒเซเชฏเซ‹เชฎเชพเช‚เชฅเซ€ เชเช• เชธเชพเชฅเซ‡ เชฎเซ‡เชณ เช–เชพเชฏ เช›เซ‡, เชคเซ‹ เชฎเซ‚เชฒเซเชฏเชจเซ‡ เชญเซ‚เชคเช•เชพเชณเชจเชพ เชชเชฟเช•เซเชธเซ‡เชฒเชฎเชพเช‚ 6-เชฌเซ€เชŸ เช‘เชซเชธเซ‡เชŸ เชฆเซเชตเชพเชฐเชพ เชฌเชฆเชฒเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชœเซ‹ เชชเชพเช›เชฒเชพ เชชเชฟเช•เซเชธเซ‡เชฒเชจเซ‹ เชฐเช‚เช— เชฅเซ‹เชกเซ‹ เช…เชฒเช— เชนเซ‹เชฏ, เชคเซ‹ เชคเชซเชพเชตเชค เชŸเซ‚เช‚เช•เชพ เชธเซเชตเชฐเซ‚เชชเชฎเชพเช‚ เชธเซ‚เชšเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ (เชฐเช‚เช— เช˜เชŸเช•เซ‹เชจเชพ เชคเชซเชพเชตเชคเซ‹เชจเซเช‚ เชŸเซ‚เช‚เช•เซเช‚ เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชœเซ‡ 2,4, 5 เช…เชจเซ‡ XNUMX เชฌเชฟเชŸเซเชธเชฎเชพเช‚ เชซเชฟเชŸ เช›เซ‡). เชœเซ‹ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เชเซ‡เชถเชจ เชฒเชพเช—เซ เชจ เชนเซ‹เชฏ, เชคเซ‹ เชธเช‚เชชเซ‚เชฐเซเชฃ rgba เชฎเซ‚เชฒเซเชฏ เชชเซเชฐเชฆเชพเชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

เชธเซ‹เชฐเซเชธ: opennet.ru

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹