Поскольку вы управляете как компрессором, так и декомпрессором, я предлагаю вам сжать входные данные в блоках фиксированного размера. В моем приложении я сжимаю до 64 КБ в каждом блоке, затем выдаю размер сжатого блока и самих сжатых данных, поэтому сжатый поток фактически выглядит как серия сжатых блоков:
length_of_block_1
block_1
length_of_block_2
block_2
...
Декомпрессор просто читает каждый сжатый блок и распаковывает его в буфер размером 64 КБ, так как я знаю, что блок был создан путем сжатия блока размером 64 КБ.
Надеюсь, это поможет,
Эрик Мелски