/* oRTP callbacks */ static void ssrc_changed_cb(RtpSession *session) { MAST_INFO("The ssrc has changed"); /* reset the session */ rtp_session_reset( session ); }
/* Wait for an RTP packet to arrive and return it */ mblk_t *MastTool::wait_for_rtp_packet( int seconds ) { struct timeval timeout; fd_set readfds; int retval = -1; /* reset the session */ rtp_session_reset( session ); /* set the timeout */ timeout.tv_sec = seconds; timeout.tv_usec = 0; /* Watch socket to see when it has input */ FD_ZERO(&readfds); FD_SET( rtp_session_get_rtp_socket(session), &readfds); retval = select(FD_SETSIZE, &readfds, NULL, NULL, &timeout); // Check return value if (retval == -1) { MAST_ERROR("select() failed: %s", strerror(errno)); return NULL; } else if (retval==0) { MAST_ERROR("Timed out waiting for packet after %d seconds", seconds); return NULL; } /* recieve packet and put it in queue */ rtp_session_rtp_recv( session, 0 ); /* check that there is something in the queue */ if (qempty(&session->rtp.rq) ) { MAST_ERROR("Queue is empty after trying to recieve packet"); return NULL; } /* take the packet off the queue and return it */ return getq(&session->rtp.rq); }
static void on_timestamp_jump(RtpSession *s,uint32_t* ts, void * user_data) { ms_warning("The remote sip-phone has send data with a future timestamp: %u," "resynchronising session.",*ts); rtp_session_reset(s); }