switch_rtp.c 的这个函数处理 rtp session 的初始化:
switch_rtp_create
主要的元素有:
rtp_session->seq = (uint16_t)rand();
rtp_session->ssrc = (uint32_t)((intptr_t)rtp_session + (switch_time_t)switch_epoch_time_now(NULL));
seq 是随机数
如果设置全局变量 rtp_manual_rtp_bugs=START_SEQ_AT_ZERO
下面这段代码会把 seq 自动设置为 0:
SWITCH_DECLARE(void) switch_rtp_intentional_bugs(switch_rtp_t *rtp_session, switch_rtp_bug_flag_t bugs)
{
rtp_session->rtp_bugs = bugs;
if ((rtp_session->rtp_bugs & RTP_BUG_START_SEQ_AT_ZERO)) { rtp_session->seq = 0; }
}