Александр Черенков. Архиватор BMA.

Главная

[ Архиватор BMA ]

Компрессор CIC

Работаю

Ссылки

Галерея

Код++

Форматы файлов

{ Плагины для TC: }

GAUP

ico

gca

7z

Сжатие данных » Архиватор BMA

Burrows-Wheeler Transform
+
Move To Front
+
Arithmetic coding

История архиватора (сначала это был просто компрессор) началась в августе 2003 г. с версии 1.01.
Изначально он был написан на Delphi 6, работал ужасно медленно да и сжатие оставляло желать лучшего.
С переходом на C/C++ архиватор стал неплохо справляться со своими прямыми обязанностями:-)

Описание:

Экспериментальный архиватор собственной разработки:-)
(пока только консольная версия для Windows).

Работает архиватор по следующей схеме:

  1. Набор фильтров.
  2. Преобразование Барроуза-Уилера (BWT).
  3. Усовершенствованный метод «перемещения стопки книг» (MTF) или «отсортированных обратных частот».
  4. 1-2 кодирование.
  5. Арифметическое кодирование с использованием структурной модели Петера Фенвика.

Это ещё не всё! Архиватор имеет несколько методов предварительной обработки данных различного типа, для улучшения сжатия:

  • Препроцессинг текстовых данных: используется специальное кодирование символов конца строки (СКС) и преобразование заглавных букв в строчные.
  • Два варианта препроцессинга 32-х битных таблиц для сжатия исполнымых файлов и документов Microsoft Office.
  • Преобразование относительных адресов в абсолютные (call/jmp конвертирование) для улучшения сжатия исполнимых файлов.
  • Дельта-кодирование подходит для PCM WAVE файлов и 24-х битной графики (BitMap, Targa).
  • LZP препроцессинг увеличивает скорость BWT и улучшает сжатие некоторых данных, но существенно замедляет распаковку.
  • Кодирование длин повторов (RLE).

Поведение архиватора на различных тестовых наборах вы можете найти на www.maximumcompression.com

Планы:

  1. Написать путёвое BWT.
  2. Увеличить степень сжатия.
  3. Добавить возможность создания непрерывных архивов.

История версий:

1.35 beta (19/06/2008)

  • Улучшены некоторые MTF модели, что немного улучшило сжатие почти на все типах данных.
  • Добавлен новый ключ '-mx': улучшает сжатие некоторых файлов, но замедляет распаковку (реализовано SIF;-)
  • Добавлена простая реализация SIF (Sorted Inversion Frequencies) - улучшает сжатие мультимедийных данных, текстов и исполнимых файлов, но, как уже было отмечено выше, замедляет декомпрессию.
  • Добавлен новый ключ -w: отключет препроцессинг WAVE файлов для сравнения степени сжатия (с другими архиваторами).
  • Замечание: данная версия несовместима с предыдущей!

1.34 beta (15/05/2008)

  • Улучшено сжатие PE-исполнимых файлов: добавлен ключ '-ax' - жмёт обычно лучше, но всегда медленнее:-)
  • Добавлен набор новых фильтров для сжатия WAVE-файлов (от 1ch*8bit до 6ch*32bit!)
  • Мелкие исправления и дополнения.
  • Замечание: данная версия несовместима с предыдущей!

1.33 beta (19/08/2006)

  • Ключ -mx добавлен по умолчанию.
  • Улучшено сжатие DLL (секция '.reloc').
  • Мелкие исправления и дополнения.
  • Замечание: данная версия несовместима с предыдущей!

1.32 beta (26/02/2006)

  • Добавлен новый ключ -tx[-]: Препроцессинг текстовых данных (английские тексты и русские в ANSI-кодировке).
  • Исправлена серьезная ошибка: упаковка с ключом -x<filename|@filelist> приводила к краху программы.
  • Увеличилась степень сжатия для плохо сжимаемых данных (JPEG, MPEG и т.д.).
  • Мелкие исправления и дополнения.

1.31 beta (22/09/2005)

  • Добавлен новый ключ -ae: Адаптивный размер блока только для PE-исполнимых файлов. Решил выделить эту возможность в отдельный ключ, так как сегментация PE-исполнимых файлов происходит намного быстрее чем файлов других типов.
  • Добавлен новый ключ -x<filename|@filelist>: исключить файлы из операции сжатия. Я думаю, в следующей версии использование этого ключа будет возможно с другими операциями.
  • Увеличилась степень сжатия.
  • Мелкие исправления и дополнения.

1.30 beta (05/09/2005)

  • Программа не нуждается в библиотеке libmmd.dll.
  • Исправлен редкий глюк при упаковке с ключом -a.
  • Устранена утечка памяти при распаковке.
  • Мелкие исправления и дополнения.

1.29 beta (31/08/2005)

  • Теперь ключ -a работает на файлах любого типа!
  • Исправлен страшный глюк: архиватор отказывался от рекурсивного поиска файлов в подкаталогах.
  • Небольшие исправления и дополнения.
  • Данная версия полностью поддерживает архивы версии 1.28 beta.

1.28 beta (28/08/2005)

  • Исправлена ошибка, возникновение которой возможно при сжатии с максимальным размером блока (ключ -m16m).
  • Немного увеличена скорость сжатия/распаковки.
  • Несколько возросла степень сжатия, особенно исполнимых файлов.
  • Добавлен новый ключ -mx: максимальное сжатие. Влияет на параметры LZ препроцессинга и позволяет немного улучшить компрессию.
  • Оптимизация: уменьшен размер файла.
  • Замечание: данная версия несовместима с предыдущей!

1.27 beta (28/06/2005)

  • Первая версия, распространяемая в глобальной сети.

Скачать:

bma_1.35beta.rar (51 кБ)

bma_1.34beta.rar (46 кБ)
bma_1.33beta.rar (36 кБ)
bma_1.32beta.rar (36 кБ)
bma_1.31beta.rar (26 кБ)
bma_1.30beta.rar (25 кБ)
bma_1.29beta.rar (24 кБ)
bma_1.28beta.rar (22 кБ)
bma_1.27beta.rar (21 кБ)

©2005–2015 Alex Che
e-mail: forro@inbox.ru