📄 resource.c
字号:
/******************************************************************** * * File: resource.c * * Description: * Resource reservation * * Copyright 2000-2003, Netergy Microelectronics. All rights reserved. * ********************************************************************/#include "h248app.h" WORD g_wMaxAvailableResources;WORD GetAvailableResources(){ CONNECTION *pConn; WORD wReservedResources = 0; DLLIST_head(pdllConn); while ((pConn = DLLIST_read(pdllConn))) { wReservedResources += pConn->ReservedCapRx + pConn->ReservedCapTx; DLLIST_next(pdllConn); } return (g_wMaxAvailableResources - wReservedResources);}WORD GetWeight(PROTOCOL_MEDIA_CAP *pCap){ if(pCap->eTxRx == PROTOCOL_TXRX_TX) { switch(pCap->oPayload){ case PROTOCOL_RTPPAYLOAD_PCMA: case PROTOCOL_RTPPAYLOAD_PCMU: return G711_ENCODER_WEIGHT; break; case PROTOCOL_RTPPAYLOAD_G729: case PROTOCOL_RTPPAYLOAD_G723: case PROTOCOL_RTPPAYLOAD_G726: return COMPLEX_ENCODER_WEIGHT; break; } } else { switch(pCap->oPayload){ case PROTOCOL_RTPPAYLOAD_PCMA: case PROTOCOL_RTPPAYLOAD_PCMU: return G711_DECODER_WEIGHT; break; case PROTOCOL_RTPPAYLOAD_G729: case PROTOCOL_RTPPAYLOAD_G723: case PROTOCOL_RTPPAYLOAD_G726: return COMPLEX_DECODER_WEIGHT; break; } } /* If we do not recognize this payload we return MAX_AVAILABLE_RESOURCES*/ return g_wMaxAvailableResources;}BOOL ReservResource(CONNECTION *pCon, PROTOCOL_MEDIA_CAP *pCap, E_RESERV_TYPE eReservType){ WORD wAvailableResources; WORD *pReservedWeight = &(pCon->ReservedCapRx); WORD wWeight; wAvailableResources = GetAvailableResources(); wWeight = GetWeight(pCap); if(pCap->eTxRx == PROTOCOL_TXRX_TX) pReservedWeight = &(pCon->ReservedCapTx); if( wAvailableResources >= wWeight - *pReservedWeight){ if(eReservType == RESERV_TYPE_EQUAL || (eReservType == RESERV_TYPE_MIN && *pReservedWeight > wWeight) || (eReservType == RESERV_TYPE_MAX && *pReservedWeight < wWeight)|| *pReservedWeight == 0) *pReservedWeight = wWeight; return TRUE; } return FALSE;}BOOL MediaCapSupported(OCTET oPayload){ PROTOCOL_CAP xCap; xCap.eMedia = PROTOCOL_MEDIA_AUDIO; xCap.xCmn.oPayload = oPayload; if(MediaStreamSystemCapEnabled(&xCap)) return TRUE; return FALSE; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -