The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Сравнение видеокодеков Ogg Theora и H.264"
Отправлено User294, 27-Фев-10 20:07 
>Алгоритм Лемпеля-зива не «ищет повторные данные в потоке»,

А английская вика например пишет именно так. Хоть я и взял из головы, но перепроверился по вике. Цитирую http://en.wikipedia.org/wiki/LZ77_and_LZ78

LZ77 algorithms achieve compression by replacing portions of the data with references to matching data that have already passed through both encoder and decoder. A match is encoded by a pair of numbers called a length-distance pair.

В общем то это было грубое описание смысла деятельности таких схем. Общий смысл такой схемы - найти совпадения в потоке данных и закодировать длинные совпадения более короткими ссылками на совпадения. Ежу понятно что есть over 9000 способов это сделать, но это уже детали. Чем более длинное совпадение нашлось - тем лучше сжатие. Разные степени сжатия делаются достаточно просто - компрессор на малых степенях сжатия не ищет лучшее из возможных совпадение а кодирует "уже достаточное", забив в некоторый момент на попытки улучшить длину совпадения для экономии времени. Сколько именно считается за "уже достаточно" и есть параметр степени сжатия (всякие -1 и -9 крутят у LZ-based вот этот вот параметр как правило). Ну и ессно чем больше словарь - тем больше шансов наловить совпадений текущих данных с предыдущими.

>по крайней мере, в базовой реализации.

А базовый - это у вас который? LZ77? LZ78? LZSS? Что-то не припоминаю так сходу кто именно из LZ* на биты входной поток раскладывает. И что за код? Позиция в словаре?

>Это сильно упрощённо, конечно. :)

Спасибо за рассказы про LZ-based, ага. Правда вот насчет битового потока - интересно что за LZ это был? Который именно при чтении битами оперирует.То что есть стратегии записи выходного потока как bit stream без выравнивания на байты (так компактнее) и с выравнианием на оные (как првило для скорости, - LZO и подобные).

Но все (?) LZ-образные компрессоры которые я видел, читали со входа именно байты и совпадения искались побайтово. Да и логично в общем то - для удобства обычно real-world данные выровнены на байты, на оперирование битовыми потоками идут только в крайних случаях (для максимальной компактности и ессно в ущерб скорости обработки потока).

>LZ* - используются разные настройки словаря,

А также можно крутить как параметр сжатия то что считается за достаточную длину совпадения после которой компрессор кладет на попытки удлинить совпадение.

>плюс возможно использование уже готового словаря ("мультимедийное сжатие RAR").

Для звука насколько я знаю есть еще техники типа кодирования не абсолютных значений (которые всегда разные) а разницы с предыдущим отсчетом (дельты относительно небольшие и могут повторяться, после такого препроцессинга можно отдать сие даже обычному LZ и он уже не стушуется на таком потоке а из него можно перестроить без потерь и оригинал). Правда это только одна из техник. Бывает и еще два вагона. Как правило поток преобразуется или расщепляется на несколько потоков дабы получить более-менее совпадающие данные которые можно сжать.

>А так, простенький LZ-архиватор пишется на голом Си за два часа:

Да я в курсе - писал несколько декомпрессоров LZ-подобных алгоритмов.На сях и асме.Правда предпочитал подвиды которые не требуют для декомпрессии словарь. Кто же так не развлекается?Разве что те кто для этого слишком тупы, типа жабистов :)

>час курения алгоритма, полчаса кодинг, полчаса дебаг. :)

С 1 поправочкой. Качественные полные тесты что связка компрессор+декомпрессор никогда не лажается могут занимать намного больше времени чем полчаса. Более того - немало движков обнаруживали проблемы в редких ситуациях аж через годы.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру