Цитата: По теме топика.
Возможно ли реализовать фильтр в ФА с динамически меняющимся размером блока? Т.е. на входе надо детектить необходимый заголовок и соответственно подстраивать текущий блоксайз
да, конечно. на уровне API, предоставляемого FA, есть просто операции "прочитать N байт из входного потока" и "записать N байт в выходной поток". и вообще проще написать прогу, работающую с stdin/out, а затем уже думать о фильтре. может тебе и внешнего фильтра хватит
Цитата: 1)как бы не проблема вовсе - не думаю, что кому то понадобится из срепа распаковывать только часть данных, все равно времени это займет не меньше, чем все
ну а как инсталяции, где можно установить то или это?
Цитата: 2) дак никто не мешает сначала все (или пофайлово) в прекомп сунуть, а потом srep+lzma пакануть. Я тут ничего проблемного не вижу.
проблема в том, что можно srep интегрировать в fa чтобы при распаковке не создавать временных файлов. но только с этими двумя ограничениями. без них - только так, как уже сейчас работает, только exe-шник внещний вызываться не будет
Добавлено: Цитата: тока пакер будет небось раз в 10 сложнее текущего)
нет. можно даже сейчас реверсировать файл и сжать его нынешним srep - тогда ссылки на "прошлое" автоматом станут ссылками на будущее

ну а затем "реверсировать" выходной файл srep и готово
а распаковку сделать так - в памяти выделяется блок заданного пользователем размера (порядка 500 мб), при распаковке LZ-строк они в него записываются и ссылки на них хранятся в отсортированном по destination offset виде. ну и соответственно используются и удаляются из буфера по мере распаковки файла
если же буфер переполнился, то из него выкидывается *содержимое* наиболее далёких и длинных LZ строк (в надежде что на практике будут выкидываться только строки с длиной >>4кб), при этом:
- если у нас есть физический выходной файл (не stdout) и строка достаточно велика (N*128kb), то мы её сразу на нужное местои записываем
- если у нас есть физический входной файл, то строку просто выкидываем - потом скопируем из него
- иначе - скидываем строку в temp file
ну и вместо самой строки делаем отметочку как мы с ней поступили. когда дело дойдёт до декодирования этого места - поступаем соответственно этой отметке
что тут действительно имеет нехилую логику - так это декодер. зато реализуется вековая мечта человечества - распаковка с 10 гб словарём с буфером в 500 мб
хотя может всё это и не TRUЪ, а правильно - разбить данные на 128 кб куски, посчитать между ними корреляции (тем же самым srep в частности), и затем разложить эти куски в правильном порядке чтобы их дальше уже по человечески ужал обычный lzma