Ru-Board.club
← Вернуться в раздел «Программы»

» FreeArc: бесплатный open-source архиватор - Часть 3

Автор: Forumman
Дата сообщения: 04.06.2010 12:11
Простите за ламерский вопрос, но подскажите пожалуйста, как в стандартной оболочке FraaArc'a создать профиль сжатия по умолчанию. То есть, задать настройки сжатия по умолчанию, чтоб не приходилось каждый раз при создании архива указывать все вручную. У меня, почему-то, сохраняется только последний уровень сжатия, а сохранить поле где надо указывать какое время присвоить архиву - не получается ОС Windows XP Pro SP2, SP3 x86. Заранее, благодарю за ответы!
Автор: CTACKo
Дата сообщения: 04.06.2010 23:14

Цитата:
Цитата:
Он высчитывает позиции x86 блока (размер, оффсет) по заголовкам.
неинтересно
это мб и неинтересно, а

Цитата:
по заголовкам вычисляет те же битмэпы/tga/wav/jpg внутри файла
лично мне очень интересно и уже давно хочется сию фичу видеть в фа, ведь это не так и сложно на самом деле - это ж не новые алги сжатия писать.
Неужели и это неинтересно?
Автор: Profrager
Дата сообщения: 05.06.2010 07:54
CTACKo

Цитата:

Цитата: по заголовкам вычисляет те же битмэпы/tga/wav/jpg внутри файла

лично мне очень интересно и уже давно хочется сию фичу видеть в фа, ведь это не так и сложно на самом деле - это ж не новые алги сжатия писать.
Неужели и это неинтересно?
Автор: PAQer
Дата сообщения: 05.06.2010 11:22

Цитата:
И посмотри возможно ли использовать исходники TAK вместо TTA, ибо первый лучше.

формат закрытый, исходники весят в районе 800кб, там обычный SDK.
Автор: Profrager
Дата сообщения: 05.06.2010 11:49
PAQer

Цитата:
формат закрытый, исходники весят в районе 800кб, там обычный SDK.

жааааль, а то бы очень подошел для freearc'а
Автор: Bulat_Ziganshin
Дата сообщения: 05.06.2010 17:39

Цитата:
Ммм, так вроде фишка FA не в том, чтобы указать параметры типа -mx -ld<сколько надо>, а дальше прога сама разберется, я не прав?

я стараюсь так делать но когда это невозможно или у меня нет времени, то оставляю дырки и для самостоятельной настройки. в fa важны оба направления


Цитата:
подскажите пожалуйста, как в стандартной оболочке FraaArc'a создать профиль сжатия по умолчанию. То есть, задать настройки сжатия по умолчанию, чтоб не приходилось каждый раз при создании архива указывать все вручную. У меня, почему-то, сохраняется только последний уровень сжатия, а сохранить поле где надо указывать какое время присвоить архиву - не получается

странно что никто не догадался значит так - профилей как таковых ещё нет, но вручную можно извратиться. надо задать нужные тебе опции упаковки в поле "доп. параметров" и затем выбирать их их выпадающего списка в этом поле. можешь даже приписать комментарий типа "Время архива на самый свежий файл: -tl". Опции можно посмотреть в логфайле


Цитата:
по заголовкам вычисляет те же битмэпы/tga/wav/jpg внутри файла
лично мне очень интересно и уже давно хочется сию фичу видеть в фа, ведь это не так и сложно на самом деле - это ж не новые алги сжатия писать.
Неужели и это неинтересно?

время реализации - 3 недели. в планах лежит с 2005-го года польза сомнительная, ибо где ты сейчас в игрушках найдёшь несжатые wavp/bmp?


Цитата:
TAK вместо TTA, ибо первый лучше. Это ассиметричный алгоритм с очень хорошим сжатием.

ага, впрям впервые слышу его автор говорит что откроет исходники, как только причешет их и перепишет на C++, уже несколько лет. то же самое говорят авторы precomp и большинства других бесплатных упаковщиков


Цитата:
Правда в папке Sources там исходники от версии 1.1.1

там исходники собственного *контейнера*, т.е. как раз той части упаковщика от которой мне пришлось бы избавляться в полных исходниках
Автор: PAQer
Дата сообщения: 05.06.2010 21:27

Цитата:
польза сомнительная, ибо где ты сейчас в игрушках найдёшь несжатые wavp/bmp?

А вот и нифига, wavок полно, даже у консольных портов встречается, bmp & tga тоже присутствуют для тех же normal maps. Я уже не говорю про старые игры. Хотя, самая большая трабла именно с вавами.


Цитата:
там исходники собственного *контейнера*, т.е. как раз той части упаковщика от которой мне пришлось бы избавляться в полных исходниках

там хрень по юзанью tak_deco_lib.dll. То есть распаковка. Была же тема юзать dll'ы для распаковки чужеродных форматов?
Автор: Profrager
Дата сообщения: 05.06.2010 21:53
Bulat_Ziganshin

Цитата:
время реализации - 3 недели. в планах лежит с 2005-го года польза сомнительная, ибо где ты сейчас в игрушках найдёшь несжатые wavp/bmp?

Сейчас в ресурсы в основном хранятся в PCM wav, (Microsoft) ADPCM wav, OGG, DDS, все остальное гораздо реже. Ну вот из этого всего PCM wav'ы можно таким фильтром хорошенько пожать, они довольно часто встречаются.
В общем ждем релиза

Добавлено:
А еще вот хотелось бы такую фитчу увидеть в реализации: фильтр находит заголовок в файловом архиве, распаковывает полностью файл и передает управление на заданный компрессор с этим файлом в качестве параметра.
Например как-нить так: -mWAVdet:tak
где WAVdet - фильтр wav заголовков, tak - внешний паковщик (заданный в параметрах arc.ini)
Я не представляю как все на данный момент работает внутри фриарка, и возможно ли подобное, но может в будущем что-нибудь подобное можно будет реализовать.
Автор: PAQer
Дата сообщения: 05.06.2010 22:22

Цитата:
А еще вот хотелось бы такую фитчу увидеть в реализации: фильтр находит заголовок в файловом архиве, распаковывает полностью файл и передает управление на заданный компрессор с этим файлом в качестве параметра.

Я подумываю замутить отдельный компрессор для этого. Декодить ТАКи получилось (TAK > Raw PCM), но с остальным лениво разбираться. Так, просто для информации и ежели кому нужна прога для декодинга ТАКа сразу в raw, дайте знать. Оригинальный декодер на выход пишет сразу с заголовком.
Автор: V2driver
Дата сообщения: 06.06.2010 07:25
Bulat_Ziganshin
Думаю можно обновлять FreeArc PowerPack так как nanozip-0.08a вышел
А там настроек целая куча появилась....
Да и BCM 11 скоро будет!
Автор: Forumman
Дата сообщения: 06.06.2010 20:33
Bulat_Ziganshin
Спасиб за разъяснения) Надеюсь, в FreeArc'e появится возможность сохранять свои профили сжатия. Вдохновения и удачи!
Автор: Benchmark
Дата сообщения: 06.06.2010 20:37
V2driver

Цитата:
Думаю можно обновлять FreeArc PowerPack так как nanozip-0.08a вышел
А там настроек целая куча появилась....


Только судя по первым тестам, сделанным кем-то на encode.ru, результаты показывет весьма странные.
Автор: Profrager
Дата сообщения: 06.06.2010 21:31
PAQer

Цитата:
Я подумываю замутить отдельный компрессор для этого.

Кое-кто тебя в этих мыслях опережает

Цитата:
Так, просто для информации и ежели кому нужна прога для декодинга ТАКа сразу в raw, дайте знать. Оригинальный декодер на выход пишет сразу с заголовком.

А зачем raw нужен? Передавать на воспроизведение? Не представляю куда еще. ИМХО с заголовками как бы нужнее, благо он их 100% восстанавливает с оригинала.
Автор: PAQer
Дата сообщения: 06.06.2010 22:48
Profrager

Цитата:
Кое-кто тебя в этих мыслях опережает

ну я уже давно подумываю, так что не факт что опережает, а вот в реализации вполне может и опередить


Цитата:
ИМХО с заголовками как бы нужнее, благо он их 100% восстанавливает с оригинала.

Кто ТАК восстанавливает? На сколько я знаю он заголовок не хранит, а динамически создает, что вообще не проблема.


Цитата:
А зачем raw нужен? Передавать на воспроизведение? Не представляю куда еще.

Как зачем? Полно игр в которых есть свои архивы - например sounds.gcf из HALF-LIFE 2. Получить из этого скажем RAW (там mp3&PCM 1 и 2 канала) ТАК не проблема, а вот декодить консолью в чистый вав, а потом еще файл пересоздавать - изврат. В догонку - первый и четвертый хитман, смерть шпионам момент истины и т.д.
Автор: Profrager
Дата сообщения: 07.06.2010 07:52
PAQer

Цитата:
ну я уже давно подумываю, так что не факт что опережает, а вот в реализации вполне может и опередить

опытные образцы аж с начала 2003 года есть, только руки не доходят до ума довести Сейчас полностью с нуля перекраиваю.

Цитата:
Кто ТАК восстанавливает? На сколько я знаю он заголовок не хранит, а динамически создает, что вообще не проблема.

Заголовок полностью хранится в TAK файле, в том числе и ID3. И у меня пока не получалось чтобы wav-файл после TAK'а отличался от оригинала.

Цитата:
Как зачем? Полно игр в которых есть свои архивы - например sounds.gcf из HALF-LIFE 2. Получить из этого скажем RAW (там mp3&PCM 1 и 2 канала) ТАК не проблема, а вот декодить консолью в чистый вав, а потом еще файл пересоздавать - изврат. В догонку - первый и четвертый хитман, смерть шпионам момент истины и т.д.

и как ты будешь детектить чистые raw'ы?) И пересоздавать архивы не придется, все продумано
Автор: PAQer
Дата сообщения: 07.06.2010 10:29
Profrager


Цитата:
и как ты будешь детектить чистые raw'ы?) И пересоздавать архивы не придется, все продумано

Да никак не буду, да и не нужно. Ты не понял... это как нынешний ТТА у фриарка, который хавает RAW с конкретными параметрами - c2:w16, то же самое и здесь. Не про заголовки речь в данном случае.


Цитата:
опытные образцы аж с начала 2003 года есть,

Я тогда про ТАК еще не слыхивал.


Цитата:
Заголовок полностью хранится в TAK файле, в том числе и ID3. И у меня пока не получалось чтобы wav-файл после TAK'а отличался от оригинала.

Где ваши доказательства? Я через dll декодирую и никакого хэдера нет. А вот cmd создает конечно но уже без вариантов.
Автор: Profrager
Дата сообщения: 07.06.2010 12:30

Цитата:
Я тогда про ТАК еще не слыхивал.

а я тогда и не TAK использовал)

Цитата:
Где ваши доказательства? Я через dll декодирую и никакого хэдера нет. А вот cmd создает конечно но уже без вариантов.

на счет dll - без понятия, не юзал. А exe 2.0.0 сохраняет полностью все заголовки в TAK-файле, их даже по F3 из Total Commander'а видно, они не пакуются

Добавлено:
И вообще это уже оффтоп у нас)

Добавлено:
Bulat_Ziganshin
Разбирал srep.cpp, возникла маленькая поправочка

создаем буферы перед операцией

Код: STAT *statbuf = new STAT[bufsize/4+1024];
char *out = new char[bufsize];
Автор: nabor56
Дата сообщения: 10.06.2010 07:18
Версия 0.666. Pentium Core Duo 2 Гб Озу. Sfx - некоторые архивы при распаковке виснут (99%, 57%. Распаковка архиватором происходит нормально.
Автор: Bulat_Ziganshin
Дата сообщения: 10.06.2010 12:12
nabor56
да, я знаю об этой проблеме. в след. версии исправлю, а пока либо 0.60, либо не используй sfx
Автор: CDK
Дата сообщения: 11.06.2010 13:24

Цитата:
код править не надо. сжатие улучшить можно, вручную конструируя спецификации сжатия. если ты прочтёшь доку и все 400 страниц этой темы, то может разберёшься как это делать

Решил попробывать - возникла пара вопросов:

1) если имеем один большой rep-файл (полученный от srep), то наверное имеет смысл отключить rep при сжатии в самом фриарке? т.е. из строки rep:1gb+exe+delta+lzma:... убрать rep? ...только вот чего-то я не смог его убрать... ругается...

2) препроцессор exe имеет смысл также отключать на rep-файлах, если внутри репа нет исполняемых файлов? а также и delta ?


PS: падение sfx 0.666 зависит от компьютера или от архива? т.е. один и тот же архив где-то упадет, а где-то нет или если падает, то падает у всех?
Автор: CTACKo
Дата сообщения: 11.06.2010 13:42
есть небольшая проблемка с функцией Str2Utf8 (которую я же сам и написал , используемой в скрипте для InnoSetup - она может возвращать строку, добитую справа пробелами или мусором. я пробовал фиксить так:
[more]
function Str2Utf8(strSource: string): string;
var
nRet : integer;
WideCharBuf,MultiByteBuf: string;

begin
SetLength( WideCharBuf, Length( strSource )*2 );
SetLength( MultiByteBuf, Length( strSource )*2 );
strSource := strSource + chr(0);

nRet := MultiByteToWideChar(0,0,strSource,-1,WideCharBuf,Length(WideCharBuf));
nRet := WideCharToMultiByte(65001,0,WideCharBuf,-1,MultiByteBuf,Length(MultiByteBuf),0,0);

Result := Trim(MultiByteBuf);
end;[/more]но не шибко помогает.
А глючит когда строка, передаваемая в функцию, содержит помимо кириллицы еще и латиницу или небуквы (~`!@#$%^&*()0123456789_-"№;:,. и тд и тп). уж не знаю как это до сих пор не всплыло, но...
Добавлено:
Доработал, теперь судя по тестам все нормально стало:
[more]//********************************************************************
// Функция преобразует строку в UTF-8 кодировку (для FreeArcExtract)
//********************************************************************
function Str2Utf8(strSource: string): string;
var
nStrLen, nUTF8Len, nStrPos, nRet: integer;
WideCharBuf,MultiByteBuf: string;

begin
nStrLen := Length(strSource);
nUTF8Len := nStrLen*2;
// корректируем длину строки для Copy исходя из того что символы с ASCII-кодом
// до 127 будут иметь какбы 1-байтовую длину (реально в UTF8 все символы в 2 байтах)
for nStrPos:=1 to nStrLen do if Ord(strSource[nStrPos])<127 then nUTF8Len:=nUTF8Len-1;

strSource := strSource + chr(0);
SetLength( WideCharBuf, nStrLen*2 );
SetLength( MultiByteBuf, nStrLen*2 );

nRet := MultiByteToWideChar(0,0,strSource,-1,WideCharBuf,Length(WideCharBuf));
nRet := WideCharToMultiByte(65001,0,WideCharBuf,-1,MultiByteBuf,Length(MultiByteBuf),0,0);

Result := Copy(MultiByteBuf,1,nUTF8Len);
end;[/more]
Автор: Bulat_Ziganshin
Дата сообщения: 11.06.2010 18:51
CDK
1. да, -mcr-
2. да. нет - delta на любых бинарных файлах может сработать
3. от архива. 0.666 использует новый метод сжатия 4x4, вот с ним что-то не так. деталей пока не знаю

CTACKo
Шегорату/Профрагеру это должно быть интересно. Мне кажется что технология уже пошла в народ и заниматься "оффициальным" скриптом уже незачем. лучше это будут скрипты от Шегората, от тебя если ты хочешь свою версию поддерживать, от ещё кого-то

на данный момент может быть важнее изменения от Профрагера в dll внести, чтоб ею попрощк можэно было пользоваться. а всё остальное уже независимо от меня можно делать
Автор: CTACKo
Дата сообщения: 11.06.2010 21:40
мне кажеццо что сия моя функция в неизмененном виде благополучно перекочевала во все существующие скрипты.
Но как же мне поведать товарищей о таящейся опасности?

С другой стороны я действительно использую свой скрипт, созданный на основе какбы "твоего" или официального, на который имеется ссылко в шапке. Но по именно распаковке я ничего не изменял, только добавил пару необходимых функций, т.е. этот оф. скрипт вполне нормальный и между прочим чем он мне нравится - он не отягощен всякой непотребной ерундой, чем страдают все остальные, в которых разобраться все труднее и труднее. Оф. скрипт надо прилагать как базовый, а кто хочет наворотов и грабли в подарок - тот пущай ищет на одно место приключений и тянет тяжелые, но красивые и тд и тп скрипты выше названных авторов, которых я обидеть никоим образом не желаю (просто не почитаю излишеств и считаю что чем больше кода, тем больше вероятность глюков в нем). А ежели у них есть даже чего почерпнуть - так это только хорошо.
Так что действительно - заниматься оф. скриптом нет необходимости, но его не только не нужно убирать, напротив, его можно и даже нужно вместе с длл-кой присовокупить к инсталлеру фа наряду с доками и всем прочим что там уже есть.
Автор: Sig666
Дата сообщения: 12.06.2010 00:27
вопрос снят
Автор: Bulat_Ziganshin
Дата сообщения: 12.06.2010 12:52

Цитата:
Думаю можно обновлять FreeArc PowerPack так как nanozip-0.08a вышел

вообще-то PP веду не я. я писал его автору перед выходом 0.666, он мне ответил что вроде PP не пользуется особой популярностью и потому ему лень этим заниматься. в общем, желающие welcome
Автор: egor23
Дата сообщения: 12.06.2010 13:32

Цитата:
Думаю можно обновлять FreeArc PowerPack так как nanozip-0.08a вышел

nanozip-0.08a пока не стоит, есть баги, вылетает при упаковке Internal error: 7834538!
Автор: Profrager
Дата сообщения: 13.06.2010 08:37
CTACKo
ага, то-то я видел твоя функция возвращала кроме стандартной строки кучу ерунды в конце, но благо нужная часть всегда нулем заканчивалась, а остальное для PChar не существенно. Я не стал портировать эту функцию из скрипта, пользовался стандартной из Delphi AnsiToUTF8.
И вообще поинтересовался бы чем я занимаюсь, прежде чем писать про сложные, навороченые и т.д. скрипты. Скорее наоборот.

Добавлено:
Bulat_Ziganshin
а параметр '-p' unarc.dll должна обрабатывать? Или у меня просто не получилось корректно его передать?
Автор: Bulat_Ziganshin
Дата сообщения: 13.06.2010 11:06

Цитата:
а параметр '-p'

пока нет
Автор: Ahf
Дата сообщения: 15.06.2010 08:23
сотворил архив -mx, при попытке распаковать получил ошибку:
Extracting 136,526 files, 24,074,191,155 bytes. Processed 30.0%
ERROR: can't allocate memory required for (de)compression in rep:1201536kb
всё делалось на одном компе
msinfo32:
OS Name    Microsoft(R) Windows(R) Server 2003, Standard Edition
Version    5.2.3790 Service Pack 2 Build 3790
Other OS Description     R2
OS Manufacturer    Microsoft Corporation
System Name    BUILDER
System Manufacturer    INTEL_
System Model    DQ57TM__
System Type    X86-based PC
Processor    x86 Family 6 Model 37 Stepping 2 GenuineIntel ~2926 Mhz
Processor    x86 Family 6 Model 37 Stepping 2 GenuineIntel ~2926 Mhz
Processor    x86 Family 6 Model 37 Stepping 2 GenuineIntel ~2926 Mhz
Processor    x86 Family 6 Model 37 Stepping 2 GenuineIntel ~2926 Mhz
BIOS Version/Date    Intel Corp. TMIBX10H.86A.0032.2010.0407.1625, 07.04.2010
SMBIOS Version    2.6
Windows Directory    C:\WINDOWS
System Directory    C:\WINDOWS\system32
Boot Device    \Device\HarddiskVolume1
Locale    Russia
Hardware Abstraction Layer    Version = "5.2.3790.3959 (srv03_sp2_rtm.070216-1710)"
User Name    Not Available
Time Zone    N. Central Asia Daylight Time
Total Physical Memory    3 889,79 MB
Available Physical Memory    2,82 GB
Total Virtual Memory    5,63 GB
Available Virtual Memory    4,66 GB
Page File Space    2,00 GB
Page File    C:\pagefile.sys
Автор: Bulat_Ziganshin
Дата сообщения: 15.06.2010 14:47
Ahf
странно. может дело в том что много файлов... если тебе нужно распаковать - попробуй unarc. если нужно упаковывать чтобы потом распаковывалось - добавь пр упаковке -ld800

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970

Предыдущая тема: Opera (часть 14)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.