Я изучаю, как работает png, и пытаюсь создать простой декодер PNG с «чистым» С++.
Моя проблема в том, что я не знаю, как заголовки zlib хранятся в нескольких блоках IDAT-PNG. Первый фрагмент IDAT выглядит нормально — обычные «CM» и «CINFO», но когда я читаю следующий фрагмент IDAT, заголовок zlib выглядит странно, «CM» может быть случайным числом, а не 8 по умолчанию, а «CINFO» может быть выше 7 - я читал, что "CINFO" с номером выше 7 помечен как поврежденный/неприемлемый. Итак, где я могу найти информацию об этом? - Я не нашел в Интернете ничего об обработке нескольких фрагментов IDAT. (Э-э, я нашел кое-что здесь - в «StackOverFlow», но, похоже, он не описывает, как заголовки zlib хранятся в нескольких фрагментах IDAT, поэтому он не отвечает на мой вопрос)
Я прочитал RFC 1950 о zlib. https://tools.ietf.org/html/rfc1950