Skip to content

Commit 9a24b7c

Browse files
committed
modify:use memory pool for memory of push stream
1 parent c967286 commit 9a24b7c

File tree

6 files changed

+32
-30
lines changed

6 files changed

+32
-30
lines changed

XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_JT1078Task.cpp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,8 @@ bool PushStream_JT1078Task_Handle(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer,
7777
int nSDLen = 0;
7878
XCHAR tszSMSAddr[MAX_PATH];
7979
XCHAR tszDeviceNumber[128];
80-
XCHAR* ptszRVBuffer = (XCHAR*)malloc(XENGINE_MEMORY_SIZE_MAX);
81-
XCHAR* ptszSDBuffer = (XCHAR*)malloc(XENGINE_MEMORY_SIZE_MAX);
80+
XCHAR* ptszRVBuffer = (XCHAR*)ManagePool_Memory_Alloc(xhMemoryPool, XENGINE_MEMORY_SIZE_MAX);
81+
XCHAR* ptszSDBuffer = (XCHAR*)ManagePool_Memory_Alloc(xhMemoryPool, XENGINE_MEMORY_SIZE_MAX);
8282

8383
memset(tszSMSAddr, '\0', sizeof(tszSMSAddr));
8484
memset(tszDeviceNumber, '\0', sizeof(tszDeviceNumber));
@@ -136,10 +136,8 @@ bool PushStream_JT1078Task_Handle(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer,
136136
}
137137
}
138138
}
139-
free(ptszSDBuffer);
140-
free(ptszRVBuffer);
141-
ptszRVBuffer = NULL;
142-
ptszSDBuffer = NULL;
139+
ManagePool_Memory_Free(xhMemoryPool, ptszRVBuffer);
140+
ManagePool_Memory_Free(xhMemoryPool, ptszSDBuffer);
143141
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_DEBUG, _X("JT1078:%s,开始推送数据,设备ID:%s,通道:%d,大小:%d"), lpszClientAddr, tszDeviceNumber, pSt_RTPHdr->byChannel, nMsgLen);
144142
return true;
145143
}

XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_RTMPTask.cpp

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ XHTHREAD CALLBACK PushStream_RTMPTask_Thread(XPVOID lParam)
3737
//得到一个指定客户端的完整数据包
3838
if (RTMPProtocol_Parse_Recv(ppSst_ListAddr[i]->tszClientAddr, &ptszMsgBuffer, &nMsgLen, &st_RTMPHdr))
3939
{
40+
printf("%s = %d,%d\n", ppSst_ListAddr[i]->tszClientAddr, ppSst_ListAddr[i]->nPktCount, j);
4041
//在另外一个函数里面处理数据
4142
PushStream_RTMPTask_Handle(&st_RTMPHdr, ppSst_ListAddr[i]->tszClientAddr, ptszMsgBuffer, nMsgLen);
4243
//释放内存
@@ -48,15 +49,15 @@ XHTHREAD CALLBACK PushStream_RTMPTask_Thread(XPVOID lParam)
4849
}
4950
return 0;
5051
}
52+
5153
bool PushStream_RTMPTask_Handle(XENGINE_RTMPHDR* pSt_RTMPHdr, LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen)
5254
{
5355
int nRVLen = 0;
5456
int nSDLen = 0;
5557
int nPMLen = 0;
56-
XCHAR* ptszRVBuffer = (XCHAR*)malloc(XENGINE_MEMORY_SIZE_MAX);
57-
XCHAR* ptszSDBuffer = (XCHAR*)malloc(XENGINE_MEMORY_SIZE_MAX);
58-
XCHAR* ptszMSGBuffer = (XCHAR*)malloc(XENGINE_MEMORY_SIZE_MAX);
59-
58+
XCHAR* ptszRVBuffer = (XCHAR*)ManagePool_Memory_Alloc(xhMemoryPool, XENGINE_MEMORY_SIZE_MAX);
59+
XCHAR* ptszSDBuffer = (XCHAR*)ManagePool_Memory_Alloc(xhMemoryPool, XENGINE_MEMORY_SIZE_MAX);
60+
XCHAR* ptszMSGBuffer = (XCHAR*)ManagePool_Memory_Alloc(xhMemoryPool, XENGINE_MEMORY_SIZE_MAX);
6061
if (XENGINE_STREAMMEDIA_RTMP_MSGTYPE_CONNREQ == pSt_RTMPHdr->byTypeID)
6162
{
6263
XBYTE byVersion = 0;
@@ -488,11 +489,8 @@ bool PushStream_RTMPTask_Handle(XENGINE_RTMPHDR* pSt_RTMPHdr, LPCXSTR lpszClient
488489
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_DEBUG, _X("RTMP推流端:%s,接受推流数据,数据大小:%d"), lpszClientAddr, nMsgLen);
489490
}
490491

491-
free(ptszRVBuffer);
492-
free(ptszSDBuffer);
493-
free(ptszMSGBuffer);
494-
ptszRVBuffer = NULL;
495-
ptszSDBuffer = NULL;
496-
ptszMSGBuffer = NULL;
492+
ManagePool_Memory_Free(xhMemoryPool, ptszRVBuffer);
493+
ManagePool_Memory_Free(xhMemoryPool, ptszSDBuffer);
494+
ManagePool_Memory_Free(xhMemoryPool, ptszMSGBuffer);
497495
return true;
498496
}

XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_SrtTask.cpp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,8 @@ bool PushStream_SrtTask_ThreadProcess(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuf
101101
{
102102
int nRVLen = 0;
103103
int nSDLen = 0;
104-
XCHAR* ptszRVBuffer = (XCHAR*)malloc(XENGINE_MEMORY_SIZE_MAX);
105-
XCHAR* ptszSDBuffer = (XCHAR*)malloc(XENGINE_MEMORY_SIZE_MAX);
104+
XCHAR* ptszRVBuffer = (XCHAR*)ManagePool_Memory_Alloc(xhMemoryPool, XENGINE_MEMORY_SIZE_MAX);
105+
XCHAR* ptszSDBuffer = (XCHAR*)ManagePool_Memory_Alloc(xhMemoryPool, XENGINE_MEMORY_SIZE_MAX);
106106

107107
if (0x1b == byAVType)
108108
{
@@ -141,9 +141,7 @@ bool PushStream_SrtTask_ThreadProcess(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuf
141141
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_DEBUG, _X("SRT推流端:%s,接受音频推流数据,数据大小:%d"), lpszClientAddr, nMsgLen);
142142
}
143143

144-
free(ptszRVBuffer);
145-
free(ptszSDBuffer);
146-
ptszRVBuffer = NULL;
147-
ptszSDBuffer = NULL;
144+
ManagePool_Memory_Free(xhMemoryPool, ptszRVBuffer);
145+
ManagePool_Memory_Free(xhMemoryPool, ptszSDBuffer);
148146
return true;
149147
}

XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PushStream/PushStream_XStreamTask.cpp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ bool PushStream_XStreamTask_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR
5353
{
5454
int nRVLen = 0;
5555
int nSDLen = 0;
56-
XCHAR* ptszRVBuffer = (XCHAR*)malloc(XENGINE_MEMORY_SIZE_MAX);
57-
XCHAR* ptszSDBuffer = (XCHAR*)malloc(XENGINE_MEMORY_SIZE_MAX);
56+
XCHAR* ptszRVBuffer = (XCHAR*)ManagePool_Memory_Alloc(xhMemoryPool, XENGINE_MEMORY_SIZE_MAX);
57+
XCHAR* ptszSDBuffer = (XCHAR*)ManagePool_Memory_Alloc(xhMemoryPool, XENGINE_MEMORY_SIZE_MAX);
5858

5959
if (ENUM_XENGINE_COMMUNICATION_PROTOCOL_TYPE_HEARTBEAT == pSt_ProtocolHdr->unOperatorType)
6060
{
@@ -130,9 +130,7 @@ bool PushStream_XStreamTask_Handle(XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, LPCXSTR
130130
XEngine_Network_Send(lpszClientAddr, (LPCXSTR)pSt_ProtocolHdr, sizeof(XENGINE_PROTOCOLHDR), ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PUSH_XSTREAM);
131131
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("XStream推流端:%s,主协议错误,协议:%x 不支持"), lpszClientAddr, pSt_ProtocolHdr->unOperatorType);
132132
}
133-
free(ptszRVBuffer);
134-
free(ptszSDBuffer);
135-
ptszRVBuffer = NULL;
136-
ptszSDBuffer = NULL;
133+
ManagePool_Memory_Free(xhMemoryPool, ptszRVBuffer);
134+
ManagePool_Memory_Free(xhMemoryPool, ptszSDBuffer);
137135
return true;
138136
}

XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_Hdr.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ using namespace std;
108108
extern bool bIsRun;
109109
extern bool bIsTest;
110110
extern XHANDLE xhLog;
111+
extern XHANDLE xhMemoryPool;
111112
//HTTP服务器
112113
extern XHANDLE xhHttpSocket;
113114
extern XHANDLE xhHttpHeart;
@@ -144,8 +145,6 @@ extern XENGINE_SERVICECONFIG st_ServiceConfig;
144145
//调试
145146
extern FILE* pSt_VFile;
146147
extern FILE* pSt_AFile;
147-
148-
149148
//连接库
150149
#ifdef _MSC_BUILD
151150
#pragma comment(lib,"Ws2_32.lib")

XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_StreamMediaApp.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
bool bIsRun = false;
1414
bool bIsTest = false;
1515
XHANDLE xhLog = NULL;
16+
XHANDLE xhMemoryPool = NULL;
1617
//HTTP服务器
1718
XHANDLE xhHttpSocket = NULL;
1819
XHANDLE xhHttpHeart = NULL;
@@ -96,6 +97,7 @@ void ServiceApp_Stop(int signo)
9697
ModuleHelp_SRTPCore_Destory();
9798
HLSProtocol_M3u8Packet_Delete(xhHLSFile);
9899

100+
ManagePool_Memory_Destory(xhMemoryPool);
99101
HelpComponents_XLog_Destroy(xhLog);
100102
if (NULL != pSt_AFile)
101103
{
@@ -228,6 +230,14 @@ int main(int argc, char** argv)
228230
signal(SIGTERM, ServiceApp_Stop);
229231
signal(SIGABRT, ServiceApp_Stop);
230232
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化信号量成功"));
233+
234+
xhMemoryPool = ManagePool_Memory_Create();
235+
if (NULL == xhMemoryPool)
236+
{
237+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化内存池失败,错误:%lX"), ManagePool_GetLastError());
238+
goto XENGINE_SERVICEAPP_EXIT;
239+
}
240+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化内存池成功"));
231241
//启动HTTP服务相关代码
232242
if (st_ServiceConfig.nHttpPort > 0)
233243
{
@@ -695,6 +705,7 @@ int main(int argc, char** argv)
695705
ModuleHelp_SRTPCore_Destory();
696706
HLSProtocol_M3u8Packet_Delete(xhHLSFile);
697707

708+
ManagePool_Memory_Destory(xhMemoryPool);
698709
HelpComponents_XLog_Destroy(xhLog);
699710
if (NULL != pSt_AFile)
700711
{

0 commit comments

Comments
 (0)