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
0CodErr wrote:IgorA, а ты zlib "с нуля" что ли переписываешь на ассемблере?
Есть ведь zlib уже http://websvn.kolibrios.org/listing.php ... 86eb580ba9
Оно же там на 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
Leency wrote:Но ни XnView, ни Chome не хочет открывать созданный файл http://prntscr.com/dk6t08
Думаю что может быть одно из 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
Leency wrote:Но ни XnView, ни Chome не хочет открывать созданный файл http://prntscr.com/dk6t08
Пока все никак не могу найти причину такого поведения. Уже так много ошибок исправил но все мимо.
Вероятнее всего что где-то не правильно работает на стороне libimg, потому как в archiver (оно же zlib) в последнее время много чего было исправлено.