|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.01.2014, 12:44 | #1 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
Deflate
Написал кодер Deflate. При построении кодов Хаффмана, если наибольшая длина кодов меньше или равна максимально допустимой для Deflate, все хорошо. В противном случае мне было лень вращать дерево, поэтому все символы с длиной кода большей максимально разрешенной просто добавил к символам максимально разрешенной длины, в общем сделал такое
колво_кодов_максимальной_длины += колво_кодов_длиной_больше_максималь ной; фор (и=1;;и++) { колво_кодов_максимальной_длины += колво_кодов_длиной_(максимальная_дл ина - и); колво_кодов_длиной_(максимальная_дл ина - и) = 0; если емкость_кодов_максимальной_длины >= колво_кодов_максимальной_длины брейк; } и проблема тут в том, при таком раскладе, чужие декодеры меня не понимают. Может кто знает, что не так? Что я тут упустил? Какие требования выносятся к кодам Хаффмана в данном случае? |
22.01.2014, 21:08 | #2 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
повращал дерево честно и дело пошло на лад. вопрос закрыт.
|
23.01.2014, 16:34 | #3 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
спрашивается зачем в PNG используется ZLIB? из-за двух байт заголовка? как это ни странно, ADLER32 в PNG не используется.
|
23.01.2014, 17:32 | #4 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
а зачем им реализовывать еще одну реализацию сжатия если есть готовая?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
23.01.2014, 18:04 | #5 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
сори, это я просто о наболевшем писал.
сделал кодер PNG, согласно вот этому http://www.ietf.org/rfc/rfc1950.txt правильный zlib стрим должен заканчиваться чек-суммой ADLER32, но софтина (Corel, XnView) по всей видимости использующая опен-сорс декодеры, отказывалась принимать мои PNG пока я не выкинул ADLER32 из zlib стрима, что на мой взгляд лишено смысла. в итоге от zlib отсталось только два байта заголовка, и поскольку единственный метод сжатия, который на данный момент поддерживается zlib это Deflate, я не понимаю зачем тогда вообще использовать zlib заголовок. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
DEFLATE | alexxx_1992 | Помощь студентам | 2 | 20.05.2010 22:25 |