bzip2

Библиотека сжатия данных, реализующая алгоритм блочного сортирующего преобразования Барроуза-Уилера (BWT) с последующим применением преобразования движущегося префикса (MTF) и кодирования Хаффмана. Библиотека предоставляет программный интерфейс для сжатия и распаковки данных с использованием многоуровневой блочной архитектуры, где каждый блок обрабатывается независимо, что обеспечивает устойчивость к повреждениям и возможность потоковой обработки.

Особенности

  • реализация алгоритма Барроуза-Уилера для группировки повторяющихся символов перед кодированием;
  • многоступенчатый конвейер обработки: BWT → MTF → RLE → кодирование Хаффмана;
  • поддержка девяти уровней сжатия, регулирующих размер блока (от 100 до 900 КБ);
  • блочная организация с независимой распаковкой каждого сегмента данных;
  • низкоуровневый API для потоковой обработки и высокоуровневые функции для работы с буферами.

Основные компоненты

Библиотека bzip2 предоставляет API для программного управления процессом сжатия и распаковки (подробнее с документацией можно ознакомиться здесь):

Потоковое сжатие

Низкоуровневый интерфейс, основанный на структуре bz_stream, для инкрементальной обработки данных в конвейерном режиме. Позволяет сжимать данные порциями с управлением буферами ввода/вывода, режимами работы (нормальный, сброс буфера, завершение) и параметрами алгоритма.

  • BZ2_bzCompressInit() — инициализация структуры bz_stream для сжатия с указанием уровня (1-9) и параметров;
  • BZ2_bzCompress() — обработка блока данных с поддержкой режимов BZ_RUN, BZ_FLUSH, BZ_FINISH;
  • BZ2_bzCompressEnd() — завершение сжатия и освобождение внутренних структур;
  • BZ2_bzWriteOpen(), BZ2_bzWrite(), BZ2_bzWriteClose() — обёртки для интеграции с файловым вводом-выводом.

Потоковая распаковка

Интерфейс для последовательной декомпрессии потоков bzip2, также использующий структуру bz_stream. Обеспечивает пошаговое чтение и распаковку сжатых данных с возвратом состояний обработки, обработкой ошибок формата и поддержкой частичного чтения блоков. Позволяет интегрировать декомпрессию в пайплайны обработки данных.

  • BZ2_bzDecompressInit() — подготовка структуры bz_stream для распаковки;
  • BZ2_bzDecompress() — декомпрессия блока данных с возвратом кодов состояния;
  • BZ2_bzDecompressEnd() — завершение работы декомпрессора;
  • BZ2_bzReadOpen(), BZ2_bzRead(), BZ2_bzReadClose() — высокоуровневые функции для поточного чтения сжатых файлов.

Работа с буферами

Высокоуровневый синхронный интерфейс для работы с данными в оперативной памяти. Предоставляет функции единого вызова для полного сжатия/распаковки буферов, скрывая детали потоковой обработки.

  • BZ2_bzBuffToBuffCompress() — сжатие буфера целиком за один вызов;
  • BZ2_bzBuffToBuffDecompress() — распаковка буфера целиком за один вызов.

Константы и коды состояния

Набор предопределённых значений для управления работой библиотеки и диагностики. Включает: коды возврата операций (успех, продолжение, завершение), коды ошибок (параметры, память, данные, ввод-вывод), уровни сжатия (размеры блоков 100-900 КБ) и параметры алгоритма (детализация вывода, порог сложности данных).

  • Коды возврата: BZ_OK, BZ_RUN_OK, BZ_FLUSH_OK, BZ_FINISH_OK, BZ_STREAM_END;
  • Коды ошибок: BZ_SEQUENCE_ERROR, BZ_PARAM_ERROR, BZ_MEM_ERROR, BZ_DATA_ERROR, BZ_DATA_ERROR_MAGIC, BZ_IO_ERROR, BZ_UNEXPECTED_EOF, BZ_OUTBUFF_FULL;
  • Уровни сжатия: от 1 (минимальное сжатие, 100КБ блок) до 9 (максимальное сжатие, 900КБ блок);
  • Параметры алгоритма: verbosity (детальность отладочного вывода), workFactor (порог для fallback-алгоритма при сложных данных).

Использование в проекте

Документация по использованию Conan-пакетов для разработки приложений для ОС Аврора.

На сервере Conan библиотеки заранее собраны и размещены под различные версии ОС Аврора 4 и ОC Аврора 5. Для данных версий представлены архитектуры armv7hl, aarch64 и x84_64.

Библиотеку можно использовать в проекте с помощью данного conanfile.py

from conan import ConanFile

class Application(ConanFile):
    settings = "os", "compiler", "arch", "build_type"
    generators = "PkgConfigDeps"

    requires = (
        "bzip2/1.0.8@aurora",
    )    

Процесс локальной сборки описан в документации.

bzip2

bzip2 is a free and open-source file compression program that uses the Burrows Wheeler algorithm.
Лицензия
bzip2-1.0.6
Версия
Домашняя страница
Скачать
armv7
56.74 Kb
MD5: 33857f6f15e5b2580eb9bc7eca4352e0
Updated: 03.09.2025, 18:11:39
armv8
63.11 Kb
MD5: 35cff5baa1f50ba88299917e97f35307
Updated: 03.09.2025, 18:11:32
x86_64
62.79 Kb
MD5: 159cad818e38c4dd6bbf50c1d2970040
Updated: 03.09.2025, 18:11:41
Использование в проекте

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.