lzma_sdk

Официальный набор инструментов и библиотек для работы с алгоритмом сжатия LZMA (Lempel–Ziv–Markov chain algorithm). LZMA является основным алгоритмом сжатия в формате 7z и обеспечивает высокую степень сжатия при сохранении разумной скорости работы. SDK предоставляет библиотеки, утилиты командной строки и документацию для интеграции LZMA в различные приложения и системы.

Особенности

  • реализация алгоритма сжатия LZMA и его улучшенной версии LZMA2;
  • высокая степень сжатия, превосходящая многие распространённые алгоритмы;
  • поддержка многопоточного сжатия для увеличения производительности;
  • возможность настройки параметров сжатия (уровень сжатия, размер словаря, количество потоков).

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

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

Алгоритм LZMA и LZMA2

Основным компонентом SDK является реализация алгоритмов LZMA и LZMA2. LZMA использует комбинацию словарного сжатия LZ77 и вероятностного кодирования, что обеспечивает высокую степень сжатия для различных типов данных. LZMA2 представляет собой улучшенную версию с поддержкой многопоточного сжатия и лучшей обработкой несжимаемых данных.

Ключевые особенности алгоритмов:

  • LZMA: высокая степень сжатия, настраиваемый размер словаря (до 4 ГБ в 64-битных версиях);
  • LZMA2: поддержка многопоточного сжатия, улучшенная обработка несжимаемых данных, возможность разделения данных на блоки;
  • Адаптивное вероятностное кодирование для эффективного сжатия различных типов данных;
  • Поддержка сжатия без потерь.

Библиотеки для интеграции

SDK предоставляет библиотеки на языках C, C++ и C#, которые можно использовать для интеграции LZMA в собственные приложения. Библиотеки включают функции для сжатия и распаковки данных в памяти, а также для работы с потоковым вводом-выводом.

Основные функции библиотек:

  • LzmaCompress() и LzmaUncompress() — базовые функции для сжатия и распаковки блоков данных;
  • Lzma2_Compress() и Lzma2_Uncompress() — функции для работы с LZMA2;
  • LzmaEnc_Create() и LzmaDec_Create() — создание объектов для потокового сжатия/распаковки;
  • Поддержка пользовательских аллокаторов памяти;
  • Функции для настройки параметров кодера и декодера.

Поддержка форматов архивов

Хотя LZMA SDK в первую очередь ориентирован на алгоритм сжатия, он также включает поддержку формата 7z и может использоваться для работы с другими форматами архивов через интеграцию с библиотеками 7-Zip.

Поддерживаемые форматы:

  • 7z: основной формат, использующий LZMA/LZMA2;
  • XZ: формат, основанный на LZMA2 и широко используемый в Unix-системах;
  • Сжатые данные LZMA: сырые данные, сжатые алгоритмом LZMA без заголовков архива;
  • Возможность интеграции с другими форматами через API.

Многопоточное сжатие

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

Возможности многопоточности:

  • Автоматическое определение количества ядер процессора;
  • Настраиваемое количество потоков сжатия;
  • Распределение данных между потоками для минимизации накладных расходов;
  • Поддержка многопоточной распаковки.

Настройка параметров сжатия

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

Основные параметры:

  • Уровень сжатия: от 0 (без сжатия) до 9 (максимальное сжатие);
  • Размер словаря: от 1 МБ до 4 ГБ (в 64-битных версиях);
  • Количество быстрых байтов (fb): параметр, влияющий на скорость и степень сжатия;
  • Количество проходов (pass): количество проходов алгоритма для улучшения сжатия;
  • Размер блока в LZMA2: настройка размера блоков для многопоточного сжатия.

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

Документация по использованию 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 = (
        "lzma_sdk/9.20@aurora",
    )    

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

lzma_sdk

LZMA provides a high compression ratio and fast decompression, so it is very suitable for embedded applications.
Версия
Домашняя страница
Скачать
x86_64
132 Kb
MD5: d060f8bd73e4723de2f2dedbe57550d5
Updated: 04.09.2025, 11:47:59
armv7
111.55 Kb
MD5: fbeb7801e8f21afbdcf574111245ed08
Updated: 04.09.2025, 11:47:57
armv8
128.35 Kb
MD5: df56fa1f4f1143ee4d197e02cc79cc3f
Updated: 04.09.2025, 11:47:49
Использование в проекте

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

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