Я изучал RFC1951 и 'puff.c', и у меня возник вопрос по поводу "неполной длины".
Насколько я могу судить, определение «динамической» кодовой таблицы Хаффмана, которая позволяет использовать больше кодов, чем указано в HLIT+257, приведет к ошибке, по крайней мере, для puff.c. Например, 'puff.c' выдает ошибку, если в качестве простого отладочного теста я должен использовать таблицу Хаффмана всех 9-битных кодов, чтобы определить только 257 lit/lens. Является ли этот результат преднамеренным или ошибкой? И могу ли я предположить, что любой "инфлятор" на основе библиотеки "zlib" будет выдавать такую же ошибку?
Я не могу найти в RFC 1951 никакой спецификации, которая ТРЕБУЕТ использования достаточно строгого кода Хаффмана. Конечно, я вижу, что использование таблицы Хаффмана с «недостаточной подпиской» может быть неэффективным с точки зрения сжатия, но я не уверен, почему такую таблицу следует запрещать использовать.
Мой интерес не просто гипотетический. Я действительно хочу использовать буквальный код Хаффмана с недостаточной подпиской (но НЕ приведенный выше пример) для сжатия некоторых изображений, специфичных для приложения, в файлы PNG. Но я хочу убедиться, что он будет работать с любым средством просмотра изображений PNG.