реклама на сайте
подробности

 
 
> Разработан новый Lossless видео-кодек, Битэкзактный
__inline__
сообщение Mar 22 2018, 08:38
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 257
Регистрация: 5-09-17
Пользователь №: 99 126



Здравствуйте! sm.gif
Решил поделиться с общественностью своими наработками в области сжатия видео без потери качества. yeah.gif

Разработан битэкзактный 4,5 ступенчатый Lossless Bitexact кодек видео под названием "PackMan" rev.0.

Кодек соперничает с MSU и Lagarith, исходники открыты и доступны для платформ:

- ПК (ДОС, все Винды)
- ARM Cortex-M4 (STM32F407), только декодер

Конвейер кодера:

Прикрепленное изображение


Декодер - обратим.

Подробное описание здесь: http://vrtp.ru/index.php?act=categories&am...mp;article=3713

Про nanoPlayer здесь: http://vrtp.ru/index.php?showtopic=29688&st=90
и здесь: http://vrtp.ru/index.php?act=categories&am...mp;article=3712

Макет плеера:



Релиз будет скоро спаян, печатные платы есть:



Принципиальная схема плеера: http://vrtp.ru/index.php?act=Attach&ty...t&id=769410

Исходники кодера и декодера + билды под форточки, ДОС, скрипт, тестовый образец:

Прикрепленный файл  PackMan_Codec.zip ( 738.09 килобайт ) Кол-во скачиваний: 28


Исходники декодера для STM32F407, вывод оптимизирован, параллельно играет FLAC с asm-оптимизацией:
Прикрепленный файл  nanoPlay_PackMan.zip ( 1.05 мегабайт ) Кол-во скачиваний: 23


Кодек зарелижен, оттестирован. Битэкзактный на уровне 6 бит (специфика железа)

Замечания, пожелания, эксперименты и предложения по улучшению сжатия кодера и/или скорости декодера приветствуются! help.gif

Сообщение отредактировал __inline__ - Mar 22 2018, 08:38
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
x736C
сообщение Mar 26 2018, 11:25
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942



Переформулирую вопрос. Чем Вас не устраивали готовые кодеки? Зачем потребовалось изобретать велосипед. Даже с учетом некоторого выигрыша в степени сжатия. Академический интерес или прикладной?

Осмелюсь предположить, что на живой картинке адаптивный Хаффман даст несущественный выигрыш. На мультиках, вероятно, в нем есть толк. Измерял для (M)JPEG. Адаптивный давал до 50% выигрыша на очень сильном сжатии, когда от картинки мало что оставалось. При небольшом сжатии 1,5-2% от силы. Как он будет себя вести для lossless в сущности не знаю, только догадываюсь.
Go to the top of the page
 
+Quote Post
__inline__
сообщение Mar 26 2018, 12:17
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 257
Регистрация: 5-09-17
Пользователь №: 99 126



Цитата(x736C @ Mar 26 2018, 11:25) *
Переформулирую вопрос. Чем Вас не устраивали готовые кодеки? Зачем потребовалось изобретать велосипед. Даже с учетом некоторого выигрыша в степени сжатия. Академический интерес или прикладной?

Рассматривал JPEG2000 Lossless, его программная реализация (которая есть в открытом виде) - очень громоздка для переноса на МК STM32F407 и алгоритм просто не пошёл (из-за применения менеджера кучи для данных и кода). К тому же, кодек MJPEG2000 Lossless проигрывает по степени сжатия даже тому же Lagrith.

Dirac - тоже жмет хуже Lagarith и требует много вычислительных ресурсов.

HuffYUV - прост, но хуже всех жал.

MSU - нет исходников

Lagarith - хотел вначале портировать его, но мой кодек его обскакал по сжатию (в анимешных мультфильмах)

Остался 1 путь - написать свой, взяв всё лучшее со всех.

Я - человек науки, поэтому тут ещё дополнительно академический интерес.

Цитата(x736C @ Mar 26 2018, 11:25) *
Осмелюсь предположить, что на живой картинке адаптивный Хаффман даст несущественный выигрыш. На мультиках, вероятно, в нем есть толк. Измерял для (M)JPEG. Адаптивный давал до 50% выигрыша на очень сильном сжатии, когда от картинки мало что оставалось. При небольшом сжатии 1,5-2% от силы. Как он будет себя вести для lossless в сущности не знаю, только догадываюсь.


Жал много фильмов, мультфильмов, коэффициент сжатия был не ниже 2. Обычно от 2.8 - 3.
Конечно, если жать белый шум, то выигрыша не даст sm.gif

Пробовал применить ZLIB, слишком затратно по времени на декодирование. LZH тоже. Так что только энтропийное кодирование.

----------------------------------

Я вот тут подумал и сообразил новый Мульти-Стратегический кодек. Суть его в том, что пробуются все возможные сочетания блоков конвеера на предмет сжатия. И выбирается лучшая стратегия.

Если исходный сигнал у нас - это RGB, то блоков конвеера у нас 5:

1) преобразование YCbCr
2) WaveLet преобразование
3) Difference преобразование (межкадровое вычитание)
4) Huffman
5) RLE

Просчитал, возможно 64 комбинации, они на рисунке ниже.
Написал кодер, прогнал вариант 3):

"Space Cobra": 1034.24 МБ С учётом 6 бит из 8: 775.68 МБ
PackMan rev.0: 225 МБ
PackMan rev.1: 211 МБ

получилось 187 МБ против 211, что неплохо!
Причем задача декодирования нисколько не усложняется, а наоборот даже - в некоторых случаях конвейер декода будет короче, номер стратегии пишется в хедер - каждый номер определяет жестко заданный порядок декодирования . Это немаловажно для STM32F407.

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

Прикрепленное изображение
)

Сообщение отредактировал __inline__ - Mar 26 2018, 12:23
Go to the top of the page
 
+Quote Post
x736C
сообщение Mar 26 2018, 15:36
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942



Спасибо за ответ.

Цитата(__inline__ @ Mar 26 2018, 15:17) *
Жал много фильмов, мультфильмов, коэффициент сжатия был не ниже 2. Обычно от 2.8 - 3.
Конечно, если жать белый шум, то выигрыша не даст sm.gif

Уточню, т.к. мне показалось, что вы неверно меня поняли.
Имел в виду не коэффициент сжатия, а сравнение сжатия по Хаффману адаптивное и со стандартными таблицами. Включая адаптивное, получал прирост 1-2% к уже имеющемуся коэффициенту сжатия. Когда слов для Хаффмана становилось совсем мало (при сильном сжатии), то и стандартные таблицы сильно проигрывают. Если их пересчитать, то можно сжать порой вполовину лучше. При этом, правда, картинка будет непригодна для использования в большинстве применений. В вашем же случае, стандартных таблиц нет, их можно наработать на тестовых целевых фрагментах.

По поводу «Мульти-Стратегического кодека». Имхо, игра не стоит свеч. Все-таки для lossless выжимание процентов не так актуально, как для сжатия с потерями.

Сообщение отредактировал x736C - Mar 26 2018, 15:36
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- __inline__   Разработан новый Lossless видео-кодек   Mar 22 2018, 08:38
- - _pv   не смотрели насколько будет лучше/медленнее/прожор...   Mar 22 2018, 09:09
|- - __inline__   Цитата(_pv @ Mar 22 2018, 09:09) не смотр...   Mar 24 2018, 04:02
- - petrov   Цитата(__inline__ @ Mar 22 2018, 11:38) ....   Mar 22 2018, 10:16
- - __inline__   Фото плеера: Принципиальная схема (элементы, пом...   Mar 25 2018, 03:59
- - __inline__   Под этот же плеер исходники с прошивками, декодиру...   Mar 25 2018, 07:17
- - x736C   Чрезвычайно похоже на JPEG-2000, кроме Inter-Frame...   Mar 25 2018, 11:31
|- - __inline__   Цитата(x736C @ Mar 25 2018, 12:31) Чрезвы...   Mar 26 2018, 09:16
|- - petrov   А Хаффман у вас адаптивный используется?   Mar 26 2018, 09:20
|- - __inline__   Цитата(petrov @ Mar 26 2018, 10:20) А Хаф...   Mar 26 2018, 09:33
|- - petrov   Цитата(__inline__ @ Mar 26 2018, 12:33) Х...   Mar 26 2018, 09:52
|- - __inline__   Цитата(petrov @ Mar 26 2018, 09:52) Ещё к...   Mar 26 2018, 10:20
- - thermit   Адаптивный.   Mar 26 2018, 10:01
- - enclis_   Lagarith, HuffYUV, MSU - это же всё древние кодеки...   Mar 26 2018, 21:38
|- - _pv   Цитата(enclis_ @ Mar 27 2018, 04:38) Laga...   Mar 27 2018, 01:55
|- - __inline__   Цитата(enclis_ @ Mar 26 2018, 21:38) Laga...   Mar 27 2018, 06:23
- - enclis_   ЦитатаAV1 и VP9 - не lossless. Ну если топикстарте...   Mar 27 2018, 07:37
|- - __inline__   Цитата(enclis_ @ Mar 27 2018, 07:37) Ну е...   Mar 27 2018, 09:45
- - __inline__   Всё-же уделил время на VP9 и затестил его в режиме...   Mar 28 2018, 00:55
- - __inline__   Чтоб не быть голословным: сделал и закачал архив(с...   Mar 28 2018, 06:04
- - __inline__   Усовершенствованный вариант Lossless видео-кодека ...   Mar 29 2018, 07:37
- - enclis_   Спасибо, что сравнили с VP9, он как и AV1 всё-таки...   May 4 2018, 07:58
- - Wild   Крутяк.. Например при проигрывании звука шум -40д...   May 16 2018, 14:50
- - __inline__   Всем привет! В связи с освоением процесс...   Aug 6 2018, 09:43
- - Aner   Вот зачем все это софтверно, когда давно есть деше...   Aug 7 2018, 06:52
- - __inline__   Цитата(Aner @ Aug 7 2018, 07:52) Вот заче...   Aug 17 2018, 12:29


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 17th June 2025 - 14:47
Рейтинг@Mail.ru


Страница сгенерированна за 0.0143 секунд с 7
ELECTRONIX ©2004-2016