www.pudn.com > streamrtp.rar > rtpreleasestream.c
/*------------------------------------------------------------------------- * rtpreleasestream.c - rtpreleasestream *------------------------------------------------------------------------- */ #include#include #include /*------------------------------------------------------------------------ * rtpreleasestream - decrement a streams refcnt and remove if necessary *------------------------------------------------------------------------ */ int rtpreleasestream(struct session *psn, struct stream *pstm) { if (pthread_mutex_lock(&psn->sn_getstreammutex) != 0) return ERROR; pstm->stm_refcnt--; if (pstm->stm_refcnt == 0 && pstm->stm_zombie == TRUE) { /* * Remove this stream from the Cname->SSRC mapping. */ rtcpcnamerem(psn, pstm); /* * Remove this stream from the SSRC->struct stream * * hashtable. The htdel function will invoke * rtpdestroystream. */ htdel(psn->sn_ssrcs, pstm->stm_ssrc); } pthread_mutex_unlock(&psn->sn_getstreammutex); return OK; }