Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Программная инженерия > Безопасность, Шифрование
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2014, 12:44   #1
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию Deflate

Написал кодер Deflate. При построении кодов Хаффмана, если наибольшая длина кодов меньше или равна максимально допустимой для Deflate, все хорошо. В противном случае мне было лень вращать дерево, поэтому все символы с длиной кода большей максимально разрешенной просто добавил к символам максимально разрешенной длины, в общем сделал такое

колво_кодов_максимальной_длины += колво_кодов_длиной_больше_максималь ной;

фор (и=1;;и++) {
колво_кодов_максимальной_длины += колво_кодов_длиной_(максимальная_дл ина - и);
колво_кодов_длиной_(максимальная_дл ина - и) = 0;

если емкость_кодов_максимальной_длины >= колво_кодов_максимальной_длины брейк;
}

и проблема тут в том, при таком раскладе, чужие декодеры меня не понимают. Может кто знает, что не так? Что я тут упустил? Какие требования выносятся к кодам Хаффмана в данном случае?
f.hump вне форума Ответить с цитированием
Старый 22.01.2014, 21:08   #2
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

повращал дерево честно и дело пошло на лад. вопрос закрыт.
f.hump вне форума Ответить с цитированием
Старый 23.01.2014, 16:34   #3
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

спрашивается зачем в PNG используется ZLIB? из-за двух байт заголовка? как это ни странно, ADLER32 в PNG не используется.
f.hump вне форума Ответить с цитированием
Старый 23.01.2014, 17:32   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от f.hump Посмотреть сообщение
спрашивается зачем в PNG используется ZLIB? из-за двух байт заголовка? как это ни странно, ADLER32 в PNG не используется.
а зачем им реализовывать еще одну реализацию сжатия если есть готовая?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.01.2014, 18:04   #5
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

сори, это я просто о наболевшем писал.
сделал кодер PNG, согласно вот этому http://www.ietf.org/rfc/rfc1950.txt правильный zlib стрим должен заканчиваться чек-суммой ADLER32, но софтина (Corel, XnView) по всей видимости использующая опен-сорс декодеры, отказывалась принимать мои PNG пока я не выкинул ADLER32 из zlib стрима, что на мой взгляд лишено смысла. в итоге от zlib отсталось только два байта заголовка, и поскольку единственный метод сжатия, который на данный момент поддерживается zlib это Deflate, я не понимаю зачем тогда вообще использовать zlib заголовок.
f.hump вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DEFLATE alexxx_1992 Помощь студентам 2 20.05.2010 22:25