www.pudn.com > streamrtp.rar > rtpgetstream.c


/*-------------------------------------------------------------------------
 * rtpgetstream.c - rtpgetstream
 *-------------------------------------------------------------------------
 */

#include 
#include 
#include 

/*------------------------------------------------------------------------
 * rtpgetstream - look up a stream struct by SSRC ID and incr its refcnt
 *------------------------------------------------------------------------
 */
struct stream *
rtpgetstream(struct session *psn, ssrc_t ssrc)
{

	struct stream *pstm;

	if (pthread_mutex_lock(&psn->sn_getstreammutex) != 0)
		return NULL;

	pstm = (struct stream *) htget(psn->sn_ssrcs, ssrc);
  
	if (pstm == NULL || pstm->stm_zombie == TRUE) {
		pthread_mutex_unlock(&psn->sn_getstreammutex);
		return NULL;
	}
	pstm->stm_refcnt++;
	pthread_mutex_unlock(&psn->sn_getstreammutex);
  
	return pstm;
}