Стоит / рекомендуется ли использовать сжатие zlib (или подобное) при передаче сжатых JPEG-изображений по сети (приложение для удаленного просмотра экрана)? - PullRequest
2 голосов
/ 07 июня 2011

Я начинаю реализовывать какое-то программное обеспечение клиент / сервер удаленного вещания (аналогично VNC) на C ++ (платформа Windows), которое просто передает обновления экрана (плитки изображений) по сети.

Экран разделен на блоки, и каждая плитка сжата в JPEG (вероятно, я буду использовать libjpeg-turbo) перед отправкой по сети. Поэтому мой вопрос заключается в том, будет ли хорошо реализовать еще один уровень сжатия (без потерь) для этих (уже сжатых JPEG) плиток, например используя zlib?

У меня такое ощущение, что zlib не даст какого-либо существенного улучшения с точки зрения пропускной способности, поскольку файлы JPEG уже будут сжаты. Я бы хотел избежать дополнительных затрат времени и денег на внедрение дополнительного уровня сжатия только для целей тестирования, поэтому я хотел бы услышать ваши предложения.

P.S .: В качестве дополнительного вопроса, есть ли лучшие альтернативы, чем кодирование плиток в JPEG? Может быть, сжатие без потерь сразу? Является ли вышеупомянутая методика (разделение экрана на плитки => выбор обновленных плиток => сжатие их в JPEG => отправка по сети) хорошим способом реализации такого программного обеспечения?

Любая информация будет высоко оценена!

Ответы [ 2 ]

2 голосов
/ 07 июня 2011

Файлы JPEG уже сжаты почти настолько, насколько они могут быть.Вы можете сэкономить несколько байтов в заголовке, но это может быть преодолено из-за накладных расходов на дополнительное сжатие.

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

2 голосов
/ 07 июня 2011

Абсолютно ненужно.

Лучше использовать оба метода: посчитать цвета в блоке и использовать zlib / rle / etc для нескольких цветов и jpeg для многих. Это очень простой подход. Я рекомендую вам взглянуть на протокол удаленного кадрового буфера VNC.

...