Autor Wątek: LZMA SDK - problem z dekompresją  (Przeczytany 687 razy)

Offline Reg

  • Administrator
    • Adam Sawicki - Home Page

# Kwiecień 19, 2010, 10:14:50
Są takie biblioteki do dekompresji danych, przydatne np. do tworzenia swoich formatów VFS. Spośród nich najbardziej znany jest Zlib. Ostatnio odkryłem LZMA - kompresję podobno lepszą niż Zlib, używaną np. w formacie 7z. Dostępne jest LZMA SDK do języków C, C++, Java i C#:
http://www.7-zip.org/sdk.html

Mam z nim duży problem. Otóż chciałbym z użyciem tego podstawowego interfejsu C napisać dekompresję danych, ale strumieniowo - tzn. po kawałku, a nie całego pliku na raz do jednego wielkiego bufora w pamięci, bo pliki mogą być bardzo duże. Robił ktoś z was coś takiego? Jakbym nie kombinował z użyciem funkcji LzmaDec_DecodeToDic, pojawiają się błędy (drugie wywołanie zwraca SZ_ERROR_DATA).

Interfejsu z funkcją LzmaDec_DecodeToBuf nie chcę używać, bo odpowiadająca jej funkcja inicjalizująca - LzmaDec_Allocate - alokuje jak widzę bufor 16 MB, a nie chcę alokować takiego bufora od nowa za każdym razem, kiedy rozpoczynam dekompresję każdego jednego pliku.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych