Народ!
Может кто знает и может подсказать как реализовать плавную отсылку RTP пакетов? т.е. идет поток кадров для примера 60 кадров в секунду (может и больше), размеры кадров могут различаться на пару-тройку порядков
каждый кадр разбивается на несколько RTP пакетов, после чего все пакеты просто отправляются за раз. Проблема — непредвиденные потери пакетов при передаче по локальной сети. Есть желание "размазать" их отправку по времени, уменьшив неравномерность нагрузки сети и приемника. Принципиально сложностей не вижу в самой логике, но вылезла сложность в технической реализации. Проблема точного осчета времени. Крутить тупо поток в цикле и ждать нужного времени — абсолютно не приемлемо, а точности стандартных часов в винде не достаточно. для примера надо "размазать" 50-300 пакетов в 10-50мс времени. Сейчас просто отправляю пакеты группами, при этом не достигается достаточная равномерность отправки, группы получаются до 80 пакетов. В общем точность отсчета хотелось бы получить в районе десятков микросекунд.
В общем решение ищется не очень сложное и кросс-платформенное (ну может с минимальной платформной зависимостью).
ЗЫ. Я знаю что эту проблему не раз решали, но вот так с набегу не смог найти в инете.
Здравствуйте, gwg-605, Вы писали:
G6>Может кто знает и может подсказать как реализовать плавную отсылку RTP пакетов?
http://en.wikipedia.org/wiki/Token_bucket
поможет ?
время в виндах мультимедийным таймером можно засекать достаточно точно. на линуксе тоже.
можно написать свой кроссплатформенный враппер.
Здравствуйте, John1979, Вы писали:
G6>>Может кто знает и может подсказать как реализовать плавную отсылку RTP пакетов?
J>http://en.wikipedia.org/wiki/Token_bucket
J>поможет ?
Не совсем то что надо, да и с алгоритмом у меня особых проблем не было.
J>время в виндах мультимедийным таймером можно засекать достаточно точно. на линуксе тоже.
J>можно написать свой кроссплатформенный враппер.
С мультимедийными таймера не совсем понятно как сделать засыпание трида, но в общем уже не важно, проблема успешно решена с помощью Waiteable Timers.