Кодирование и декодирование PNG
Кодировщик PNG пишет 8-битные файлы RGB или RGBA из пикселей RGBA или BGRA с шагом строки. Декодер читает нечересстрочные изображения в градациях серого, с палитрой, RGB и RGBA в проверенный гостевой буфер.
Заметки репозитория по 10 октября 2026 г.
Кодирование
Игры передают кодировщику прямоугольник пикселей, у которого шаг строки может быть больше ширины. PS5PCEM принимает RGBA и BGRA с шагом и пишет стандартный 8-битный PNG в RGB или RGBA. Вызывающий выбирает фильтры строк развёртки и уровень сжатия от 0 до 9. Записи на выход ограничены буфером, который дала игра.
Кодировщик — программная реализация формата файла. Он не обращается к системной библиотеке изображений и не заявляет конкретную скорость относительно аппаратного кодировщика консоли.
Декодирование
libScePngDec разбирает метаданные PNG и декодирует нечересстрочные изображения в градациях серого, с палитрой, RGB и RGBA в проверенные гостевые буферы RGBA или BGRA. Фильтры строк развёртки применяются, прозрачность палитры учитывается. Назначение проверяется до записи пикселей.
Чересстрочный вход Adam7 распознаётся и отвергается, а не декодируется в неверное изображение. Поэтому чересстрочные значки и снимки экрана молча не становятся испорченным буфером.
Где это находится
PNG — одна из небольших служб прошивки, к которым игра обращается при запуске: значки, атласы и миниатюры сохранений. Она независима от пути фильмов AvPlayer, который использует FFmpeg для H.264, и независима от растеризатора шрифтов.
Отчёт о прошивке от 9 октября группирует кодировщик с часами и запросами размера завершения AMPR. Эти три закрыли пробелы импорта. Сами по себе они не меняют измеренное время кадра.
Что реализовано
- Вход RGBA и BGRA с шагом в 8-битный PNG RGB или RGBA при уровнях сжатия 0–9.
- Декодирование нечересстрочных изображений в градациях серого, с палитрой, RGB и RGBA, включая фильтры и альфу палитры.
- Проверенные буферы назначения и ограниченный выход кодировщика.
Чего ещё нет
- Чересстрочный PNG Adam7 распознаётся и не декодируется.
- 16-битные изображения и экзотические вспомогательные чанки вне реализованного подмножества.
- Аппаратного блока PNG нет. Обе стороны работают на CPU.
Связанные механизмы
Чему посвящены эти страницы