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-алгоритма при сложных данных).