|
4 / 4 / 1
Регистрация: 10.07.2011
Сообщений: 52
|
|||||||||||
Задержка пакетов UDP14.11.2013, 15:34. Показов 6910. Ответов 6
Метки нет (Все метки)
Всем добрый день,
не нашёл на просторах интернета ответа на свой вопрос, по этому хочу спросить у вас, надеюсь на ответ. Принимаю данные по UDP от устройства - самопальной видеокамеры. Данные отправляются непрерывно, но на стационарных ПК задержка на приёме минимальная, а вот на ноутбуках Samsung (а возможно и на других) возникает задержка больше 1 секунды. Ещё раз раз поясню: устройство отправляет данные в момент Т, а на экране монитора они отбражаются на стационарном ПК через Т+100мс, а на ноутбуках через Т+1000мс. Задержка не меняется от времени примерно стабильная. Принимает ПО на C#, следующим образом:
по этому выбираю в цикле кусками по 1024 байта... Загрузка ПК ПО не более 20%. Поток данных не более 12Мбайт/с. Буфер задан, как :
кажется что и не причём... Потери пакетов нет, пропусков данных так же нет. Антивирусы отключены сетевые карты как на стационарном так и на ноутбуке Realtek GigE Ну собственно сабж, прошу помощи... Заранее спасибо!
0
|
|||||||||||
| 14.11.2013, 15:34 | |
|
Ответы с готовыми решениями:
6
Сниффер UDP пакетов Отправка udp sip пакетов .NET 4.5 Прием широковещательных UDP пакетов |
|
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
|
|
| 18.11.2013, 08:41 | |
|
Тут дело не в загрузке ПО ПК, а скорее всего в видеокарте ноута, при прочих равных ноут всегда уступает стационарному ПК в производительности
1
|
|
|
4 / 4 / 1
Регистрация: 10.07.2011
Сообщений: 52
|
|
| 21.11.2013, 10:42 [ТС] | |
|
Всем привет!
опять же проблема оказалась в реализации StopWatch ((( может быть кто-то знает как гарантированно измерить абсолютное время?. Объясню подробнее, я с помощью StopWatch измеряю интервал времени равный 35мс, с запасом от 40мс, что соответствует 25Гц, камера четко со стабильностью 10^-4 выдаёт именно 25Гц видео, при работе с большинством персональных ПК время измеряется корректно, буфер не заполняется. При работе с AMD/ATI и вот как оказалось с ноутом Samsung измеренное время оказывается больше, то есть по факту не 35мс, а где-то 50мс... буфер переполняется - возникает задержка в буфере. Опять же повторю вопрос, как измерить абсолютное время в шарпах?... всем заранее спасибо!
0
|
|
|
4 / 4 / 1
Регистрация: 10.07.2011
Сообщений: 52
|
|||||||||||
| 21.11.2013, 22:27 [ТС] | |||||||||||
|
спасибо!)
собственно юзаю вот так:
кадров FrameBuffer, если в нём есть кадры, и время прошло больше 45мс, то в любом случае выводим кадр, если время прошло от 35 до 45мс и в буфере есть некоторое количество кадров больше VideoBufferSize, то так же выводим кадр. В буфере необходимо держать несколько кадров, на случай лагов сети.
не превышает 5мс. Если же встречается AMD или такой ноутбук, что у меня, то получается, что ПК думает, что времени прошло меньше чем нужно и буфер начинает переполнятся, тк всегда срабатывает условие, ((BuffCount > VideoBufferSize) && (delay > 35)), при том, что буфер полностью заполнен... Кадры поступают гарантированно раз в 40мс... Предполагаю, что незаметно для программы меняется частота процессора и StopWatch не меняет некоторую переменную типа CPU_TICKS. При этом на своём ПК, запускаю CPU-Z и наблюдаю, что тактовая процессора меняется от 1.6ГГц, до 3.0 и это не сказывается на работе ПО, почему это сказывается на других процессорах, не могу понять. Прошу помощи, заранее спасибо!
0
|
|||||||||||
|
0 / 0 / 0
Регистрация: 18.09.2015
Сообщений: 1
|
|
| 16.11.2016, 12:29 | |
|
та же проблема - не могу обработать звук входящий из УДП вовремя. пакеты приходят со скоростью 30мс, а я их получаю с помощью UDPClient.Receive со скоростью за 100мс и больше, при этом весть остальной код уже давно выключен - тормозит сам класс UDPClient!!!
буду искать ответы, другого выбора у меня нет!
0
|
|
|
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
|
|||||||||||
| 26.11.2016, 10:30 | |||||||||||
|
При выполнении Thread.Sleep(x) поток отказывается от выделенного ему кванта времени и сможет продолжить работу не раньше чем при следующем запуске системного таймера (Windows system timer).
По умолчанию период системного таймера (timer resolution) равняется 15.6 ms. Но программы могут уменьшать это значение до 1 ms и даже до 0.5 ms. Поэтому ваша проблема воспроизводится не на всех компьютерах, а только на тех, где этот таймер не установлен на меньший период. В случае стандартного периода 15.6 ms несмотря на все ваши стремления (Thread.Sleep(1)) значения delay будут в основном такими: 0->15.6 (16)->31.2 (31)->46.8 (47). А учитывая, что Stopwatch перезапускается после обработки каждого кадра, то ошибка будет постоянно накапливаться. Самый простой вариант - это установить интервал системного таймера в 1 ms, тогда вся эта колбасня со Thread.Sleep(1) будет работать как положено, с квантованием в 1 ms. Но я бы попробовал переделать обработку кадров на использование высокоточного WinApi таймера. Средняя частота вызова события этого таймера будет гарантировано 40 ms.
0
|
|||||||||||
| 26.11.2016, 10:30 | |
|
Помогаю со студенческими работами здесь
7
Прием пакетов по UDP Потери UDP пакетов Перехват UDP пакетов Потери UDP пакетов Прием UDP пакетов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|