Протоколы Internet


Транспортный протокол реального времени RTCP - часть 24


double const RTCP_RCVR_BW_FRACTION = (1-RTCP_SENDER_BW_FRACTION);

/*

* Коэффициент преобразования (сглаживающая константа) для полосового

* фильтра, который используется при оценке среднего размера RTCP пакетов.

*/

double const RTCP_SIZE_GAIN = (1./16.);

double t; /* интервал */

double rtcp_min_time = RTCP_MIN_TIME;

int n; /* число участников, используемое при вычислении */

/*

* Самый первый вызов приложения использует вдвое меньшую

* минимальную задержку для ускорения оповещения, в то же время оставляя

* некоторое время до отчета для рэндомизации и получения информации

* о других источниках. Таким образом, установление корректного периода

* отчетов произойдет быстрее. Средний размер RTCP пакета

* устанавливается в начальный момент равным 128 октетам

* (предполагается, что все остальные генерируют SR вместо RR:

* 20 IP + 8 UDP + 52 SR + 48 SDES CNAME октетов).

*/



if (initial) {

rtcp_min_time /= 2;

*avg_rtcp_size = 128;

}

/*

* Если имелись активные отправители, надо им дать

* по крайней мере минимальную долю полосы RTCP.

* В противном случае все участники будут делить полосу RTCP поровну

*/

n = members;

if (senders > 0 && senders < members * RTCP_SENDER_BW_FRACTION) {

if (we_sent) {

rtcp_bw *= RTCP_SENDER_BW_FRACTION;

n = senders;

} else {

rtcp_bw *= RTCP_RCVR_BW_FRACTION;

n -= senders;

}

}

/*

* Актуализация оценки среднего размера пакета отчета с учетом

* только что посланного пакета.

*/

*avg_rtcp_size += (packet_size - *avg_rtcp_size)*RTCP_SIZE_GAIN;


/*

* Эффективное число узлов, умножаем на средний размер пакета отчета

* и получаем полное число посланных октетов, если каждый из узлов

* посылает отчет. Деля это число на эффективную полосу,

* получаем средний временной интервал посылки пакетов-отчетов.

*/

t = (*avg_rtcp_size) * n / rtcp_bw;

if (t < rtcp_min_time) t = rtcp_min_time;

/*

* Для того чтобы избежать всплесков трафика из-за непреднамеренной

* синхронизации с другими узлами мы выбираем следующий интервал




Начало  Назад  Вперед