Pull to refresh

В Dropbox разработали алгоритм lossless-сжатия для файлов H.264 и JPEG

Reading time2 min
Views27K
Во время хакатона Hack Week разработчики из компании Dropbox воплотили в жизнь вымышленный алгоритм Pied Piper из сериала «Кремниевая долина» (комедийный сериал о нелёгкой жизни стартаперов).

Удивительно, но за несколько дней напряжённого кодинга удалось получить на базе OpenH264 рабочее решение, которое демонстрирует компрессию до 13% для видеороликов H.264 и 22% на произвольных файлах JPEG. Повторим, это честное lossless-сжатие, когда сжатый файл можно вернуть в исходное состояние с точностью до бита.

Исходный код Pied Piper (losslessh264) опубликован на Github под свободной лицензией BSD.

Смотревшим сериал «Кремниевая долина» вообще не нужно объяснять, что делает кодек Pied Piper. Разработчики скопировали из фильма всё: и его функциональность (компрессия и декомпрессия файлов без потери качества), и даже название. Разница только в том, что здесь не киношный вымысел, а реальность. Кодек создавался как будто в шутку, но он действительно работает.

«Шуточная» разработка способна сэкономить нешуточные деньги для Dropbox, ведь эта компания хранит на своих серверах экзабайты файлов сотен тысяч корпоративных клиентов и индивидуальных пользователей. Даже экономия в 1% позволяет избавиться как минимум от полусотни серверных стоек, что тут говорить о сжатии на 13-22%.

Неудивительно, что Dropbox бросила на этот проект сразу десятерых программистов. Они доводят до ума версию кодека, первоначально созданную во время хакатона.


Даниэль Райтер Хорн

Один из ведущих разработчиков Даниэль Райтер Хорн (Daniel Reiter Horn) говорит, что алгоритм исправляет некоторые устаревшие неэффективные методы кодирования, которые применяются для сжатия файлов H.264 и JPEG: «Например, почти все файлы JPEG сегодня сжимаются алгоритмом Хаффмана, но хорошо известно, что применение дополнительного арифметического кодера к существующим файлам JPEG даёт дополнительное сжатие на 10% без ущерба для файла. Наш алгоритм Pied Piper пытается достичь ещё большего эффекта, это более эффективный алгоритм кодирования, полностью совместимый с существующими форматами».


Реализация дополнительной степени компрессии за счёт анализа предыдущих и последующих блоков с пикселами в кадре

На схеме показано, что для реализации дополнительного сжатия используется более глубокий анализ предыдущих и последующих блоков с пикселами в кадре.

P.S. Вероятно, проект Pied Piper кому-то напоминает алгоритм архивации Бабушкина, но здесь всё-таки код открыт и каждый может самостоятельно проверить кодек в деле.
Tags:
Hubs:
+27
Comments16

Articles