Re[13]: Удалённо: С++/С# разработчики
От: bobik123  
Дата: 25.05.09 08:14
Оценка:
Здравствуйте, lboss, Вы писали:


L>В реальности, есть пару но: 1. если сжимать jpeg или чем-то похожим, то там будет потеря цвета, в результате картинка на клиенте будет плыть — придётся периодически пересылать базовую картинку целиком, 2. чтобы не накапливать разницу, надо базовую картинку всё время менять на текущую. Но тут возникают сложности такого порядка: по идее если вы транслируете потоковое видео, то разные клиенты с разной скоростью принимают данные. И хорошо бы было пропускать кадры в середине если клиент медленный... В общем если интересно — об этом проще почитать.


Ага, вспомнил немного.. На самом деле я когда-то делал похожую штуку но уже напроч забыл что за проблемы были. Вроде как раз описанный мной способ с прямоугольниками (кстати, в каком-то опенсорсе есть тот же способ) показался самым простым чтобы не заморачиваться с разницей и расплытием.
Суть: делаешь скриншот — это база. Его отсылаем. Далее делаем еще скриншот и сравниваем по частям (memcmp тогда гораздо быстрее работало чем StretchBlt\BitBlt) с исходным. Накапливаем разницу и решаем послать ли нам изменившиеся пережатые прямоугольники или опять весь целиком. Отсылаем то, что решили, текущим делаем последний скриншот и так далее.
А в случае с mirror драйвером нам просто нет нужны снимать скриншоты — он нам говорит что изменилось и мы эти части отсылаем. Как-то так вроде было...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.