📄 ms_process.c
字号:
#include "common.h"#ifndef NO_VOXPROMPTextern LONG PlayIPAddress(char *, DWORD );extern int _nPlayIPAddr;#endif // NO_VOXPROMPTvoid MediaStreamProcess(){ MEDIA_STREAM *pStream; if (g_pdllStream == NULL) { return; } MS_LOCK(); DLLIST_head(g_pdllStream); while ((pStream = DLLIST_read(g_pdllStream))) { switch (pStream->eType) { case PROTOCOL_MEDIA_AUDIO: if (pStream->pTx) { RTPInstanceTask(((MS_AUDIO*)pStream->pTx)->hRtpInst); } if (pStream->pRx) { RTPInstanceTask(((MS_AUDIO*)pStream->pRx)->hRtpInst); } break;#ifdef MEDIASTREAM_T38_SUPPORT case PROTOCOL_MEDIA_DATA: if (pStream->pT38) { MS_T38 *pT38 = pStream->pT38; int nSocket = pStream->pT38->nSocket; OCTET sBuf[1024]; LONG lLen; AUDIO_OOB_SIGNAL xOOB; struct sockaddr_in sinAddr; socklen_t sLen = sizeof(struct sockaddr_in); if (pT38->hTxStream != NULL && (lLen = SysBufRead(pT38->hTxStream, sBuf, sizeof(sBuf), &xOOB, sizeof(AUDIO_OOB_SIGNAL))) > 0) {#ifndef MEDIA_STREAM_PACKET_CONTROL sendto(nSocket, sBuf, lLen, 0, (struct sockaddr *)&(pT38->sinAddr), sizeof(struct sockaddr_in));#else MS_PktCtlPutPkt(pStream, sBuf, lLen, &xOOB); while (1) { MS_PACKET *pPkt = MS_PktCtlGetPkt(pStream); if (pPkt == NULL) { break; } sendto(nSocket, pPkt->pData, pPkt->dwLength, 0, (struct sockaddr *)&(pT38->sinAddr), sizeof(struct sockaddr_in)); MS_PktCtlFreePkt(pStream, pPkt); }#endif } lLen = recvfrom(nSocket, sBuf, sizeof(sBuf), 0, (struct sockaddr *) &sinAddr, &sLen); if (pT38->hRxStream != NULL && lLen > 0) { SysBufWrite(pT38->hRxStream, sBuf, lLen, &xOOB, sizeof(AUDIO_OOB_SIGNAL)); } } break;#endif default: break; } DLLIST_next(g_pdllStream); }#ifndef NO_VOXPROMPT if (_nPlayIPAddr) PlayIPAddress(NULL, FALSE); // make progress if voxprompt active#endif // NO_VOXPROMPT MS_UNLOCK();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -