Все потоки
Поиск
Написать публикацию
Обновить
31
0

Пользователь

Отправить сообщение
Да-да… Разжатый выходной поток означает необходимость его хранения.
Спасибо.
Я вчера к вечеру утратил ясность мышления.
Распаковка происходит в процессе вывода на экран, точнее заполнения сдвигового регистра, управляющего подачей напряжения на затворы транзисторов матрицы дисплея. Формат управляющей команды зависит от типа экрана.
Ну, я ж не утверждаю, что в 7 раз сжимается любой произвольно взятый кот… Более того, в 7 раз сжимается не кот, а типовой ценник типового магазина, причем это — среднее значение по целевой выборке. Некоторые сжимаются в 20 раз, некоторые на 20%. Увы.
Убедили. Реализации очень близкие. Разница в том, что вместо хранения ссылки и кода операции мы сразу распаковываем ее результат в RAM. Аргументация — удобство каскадирования с RLE и снижение числа обращений к флэшу. В остальном то же самое, код короче.
Я тоже так думал еще со студенческих времен. А теперь попробуйте посмотреть по-другому. Оба метода восстанавливают данные путем копирования ранее встретившейся последовательности. RLE копирует последовательность из одного символа много раз, LZ77 — последовательность многих символов один раз. Можно даже написать общий код, так, чтобы выбор алгоритма свелся к заданию параметров.
Неважно выделяется память, или указатель на нее передается снаружи. Важно, что она должна быть. У нас физически нет места под распакованные данные.
Да не особо. RLE — это оконное сжатие с размером окна, равным единице и кодированием количества повторений вхождения, вместо длины совпадения (поскольку длина совпадения либо 0, либо 1).
Справится. Если у Вас нет экстремистских запросов по памяти и энергопотреблению, берите RTX, для работы со стеком ее достаточно. В нашем случае они были (мы работаем с собственным high speed протоколом), но, возможно, мы переоценили их жесткость.
Не существует словарных алгоритмов сжатия, не требующих «вообще» памяти на декомпрессию. Словарь, увы, необходимо где-то хранить.

github.com/ariya/FastLZ/blob/master/6unpack.c — посмотрите сами реализацию.

И не забывайте, пожалуйста, главное — необходимость потоковой распаковки.
Влияет. Пришлось сделать маленькую RTOS, чтобы честно делить время между задачами… Об этом в одной из следующих серий.
(Вывод данных на экран в отсутствие видеобуфера и в присутствие крайней критичности к задержкам, оказался существенно более сильно лимитирующей задачей. Зато сжимая данные мы экономим на чтении и, особенно, записи в медленный флэш).
Сопрут, так сопрут — она копеечная и как ее использовать мимо основного назначения — неочевидно.
Не секретная военка. Ценники для супермаркетов.
Можно. Но у нас миллионная партия — считаем каждый цент.
Nordic NRF51822 (Cortex M0 + Bluetooth LE). Купить можно на Диджике, на Маузере, у нас тоже можно в форме платформ для разработки с электронной бумагой и радиопротоколами (но реклама вроде запрещена, поэтому без подробностей, чтобы не забанили, тем более, что цель поста другая).
… и 8 килобайтов на все. Вообще на все, не только на вывод картинки.

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность