Page 2 of 2
Re: Использование archiver.obj
Posted: Thu Oct 27, 2016 3:57 pm
by IgorA
rev 6617
Сделал в папке с fkfar папку для zlib с примером. Думаю что в дальнейшем нужно будет объединить библиотеки archiver и zlib, но пока что сделано отдельной библиотекой.
Распаковка происходит правильно, но есть 2 проблемы, из-за которых я не спешу объединять библиотеки:
1) В crc почему-то пишутся 0, посмотрел в исходном коде там в большинстве случаев при вызове функции crc вместо буфера передается Z_NULL. Не пойму почему не передается нормальный указатель на буфер, может я что-то не так использую.
2) Размер распакованных данных я беру из переменной.
Re: Использование archiver.obj
Posted: Thu Oct 27, 2016 4:43 pm
by Leency
Как насчет сделать программу-распаковщик zip архивов? Вроде
kunzip "/sys/arc.zip" "/tmp0/1/"
Рисует только окно с процессом распаковки: имя распаковуемого файла, полоса прогресса.
Re: Использование archiver.obj
Posted: Tue Nov 01, 2016 4:17 pm
by hidnplayr
For network applications, it would be useful to have deflate function which works on streams.
I have tried hacking the archiver library to do this in the past but could not master.
(Applications/protocols which come to mind: HTTP, VNC, SSH,...)
Re: Использование archiver.obj
Posted: Tue Nov 01, 2016 6:57 pm
by IgorA
Leency wrote:Как насчет сделать программу-распаковщик zip архивов? Вроде
kunzip "/sys/arc.zip" "/tmp0/1/"
Рисует только окно с процессом распаковки: имя распаковуемого файла, полоса прогресса.
Идея хорошая но думаю что с полосой прогресса могут быть проблемы. Дело в том что распаковка архива идет за один вызов функции deflate_unpack потому полоса прогресса будет или пустой или сразу полной.
hidnplayr wrote:For network applications, it would be useful to have deflate function which works on streams. I have tried hacking the archiver library to do this in the past but could not master.
Apparently the compression is working properly. But I would like to further develop neotroye function of the library. For example, in the source code 'longest_match' function was 2 version. If you set the FASTEST == 0 and make the code of the function for this parameter, it will be possible to establish different degrees of compression. I think that even though it is already possible to use the library.
Re: Использование archiver.obj
Posted: Tue Nov 01, 2016 8:09 pm
by Leency
Полоса может отображать количество распакованных файлов относительно всех файлов в архиве, ех. 10/134.
Re: Использование archiver.obj
Posted: Wed Nov 02, 2016 4:19 pm
by IgorA
Обнаружил что функция deflate (из zlib.obj) почему-то не работает с параметром Z_NO_FLUSH. Потому если кто захочет использовать ее, то пусть всегда ставит Z_FINISH, до выяснения причины почему не работает. Это может немного ухудшить качество сжатия, но сжимать всеравно должно.
Re: Использование archiver.obj
Posted: Fri Nov 11, 2016 8:42 pm
by 0CodErr
IgorA, а ты zlib "с нуля" что ли переписываешь на ассемблере?
Есть ведь zlib уже
http://websvn.kolibrios.org/listing.php ... 86eb580ba9
Re: Использование archiver.obj
Posted: Wed Dec 07, 2016 3:37 pm
by IgorA
Оно же там на C++, а мне очень нужно было на asm, потому как libimg экспортировала функции из archiver-а который также был на asm.
Re: Использование archiver.obj
Posted: Fri Dec 16, 2016 12:52 pm
by IgorA
rev 6799
Удалось сделать более сложный вариант функции longest_match, который дает большее сжатие. Теперь png файл с пустым рабочим столом занимает не 269 кб а 80 кб.
Re: Использование archiver.obj
Posted: Fri Dec 16, 2016 5:35 pm
by Leency
IgorA
Круто! Paint открывает норм.
Но ни XnView, ни Chome не хочет открывать созданный файл
http://prntscr.com/dk6t08
Re: Использование archiver.obj
Posted: Fri Dec 16, 2016 6:19 pm
by IgorA
Думаю что может быть одно из 2-х:
1) Либо не правильно считаются контрольные суммы crc, adler. Потому как Колибриевская функция deflate_unpack по моим опытам вообще на crc не реагирует и распаковывает всегда. Возможно что Виндосовские программы увидев не правильную контрольную сумму даже не берутся за распаковку данных и выкидывают ошибку.
2) Возможно что данные в IDAT нужно паковать по строкам изображения а не кусками по 16 кб как у меня в libimg.
Leency wrote:Paint открывает норм.
Это уже хорошо, значит можно в случае чего смотреть и пересохранять через Paint и потери данных не будет.
А пока будет над чем еще дальше подумать.
Re: Использование archiver.obj
Posted: Sat Mar 04, 2017 10:59 pm
by IgorA
Пока все никак не могу найти причину такого поведения. Уже так много ошибок исправил но все мимо.
Вероятнее всего что где-то не правильно работает на стороне
libimg, потому как в
archiver (оно же
zlib) в последнее время много чего было исправлено.