Skip to content

Commit b37781a

Browse files
committed
added:build switch and srt protocol support
1 parent 77c25f2 commit b37781a

File tree

8 files changed

+53
-9
lines changed

8 files changed

+53
-9
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#pragma once
2+
/********************************************************************
3+
// Created: 2024/03/15 11:06:08
4+
// File Name: D:\XEngine_StreamMedia\XEngine_Source\XEngine_BuildSwitch.h
5+
// File Path: D:\XEngine_StreamMedia\XEngine_Source
6+
// File Base: XEngine_BuildSwitch
7+
// File Ext: h
8+
// Project: XEngine(网络通信引擎)
9+
// Author: qyt
10+
// Purpose: 编译开关选项
11+
// History:
12+
*********************************************************************/
13+
#define _XENGINE_STREAMMEDIA_BUILDSWITCH_SRT 0 //SRT协议编译开关选项
14+
#define _XENGINE_STREAMMEDIA_BUILDSWITCH_RTC 0 //WEBRTC协议编译开关选项

XEngine_Source/XEngine_ModuleHelp/Makefile

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,16 @@ UNICODE = 0
99
LOADHDR = -I ./
1010
LOADSO =
1111
LIB = -lXEngine_OPenSsl
12-
LIBEX = -lsrt-gnutls
12+
LIBEX =
1313
OBJECTS = ModuleHelp_JT1078.o ModuleHelp_SrtCore.o ModuleHelp_Rtsp.o ModuleHelp_Rtmp.o pch.o
1414

15+
MACRO_SRT_SUPPORT := $(shell gcc -E -dM ../XStorage_BuildSwitch.h | grep _XENGINE_STREAMMEDIA_BUILDSWITCH_SRT | cut -d ' ' -f 3)
16+
MACRO_RTC_SUPPORT := $(shell gcc -E -dM ../XStorage_BuildSwitch.h | grep _XENGINE_STREAMMEDIA_BUILDSWITCH_RTC | cut -d ' ' -f 3)
17+
18+
ifeq ($(MACRO_SRT_SUPPORT),1)
19+
LIB += -lsrt-gnutls
20+
endif
21+
1522
ifeq ($(RELEASE),1)
1623
FLAGS = -c
1724
DEBUG =

XEngine_Source/XEngine_ModuleHelp/ModuleHelp_Define.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ extern "C" bool ModuleHelp_SrtCore_Send(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgB
123123
意思:是否成功
124124
备注:
125125
*********************************************************************/
126-
extern "C" bool ModuleHelp_SrtCore_GetStreamID(SRTSOCKET hSocket, XCHAR * ptszSMSAddr, bool* pbPublish);
126+
extern "C" bool ModuleHelp_SrtCore_GetStreamID(XSOCKET hSocket, XCHAR * ptszSMSAddr, bool* pbPublish);
127127
/********************************************************************
128128
函数名称:ModuleHelp_SrtCore_Close
129129
函数功能:关闭一个指定的客户端
@@ -142,7 +142,7 @@ extern "C" bool ModuleHelp_SrtCore_GetStreamID(SRTSOCKET hSocket, XCHAR * ptszSM
142142
意思:是否成功
143143
备注:
144144
*********************************************************************/
145-
extern "C" bool ModuleHelp_SrtCore_Close(LPCXSTR lpszClientAddr = NULL, SRTSOCKET hSocket = 0);
145+
extern "C" bool ModuleHelp_SrtCore_Close(LPCXSTR lpszClientAddr = NULL, XSOCKET hSocket = 0);
146146
/********************************************************************
147147
函数名称:ModuleHelp_SrtCore_Destory
148148
函数功能:销毁SRT服务

XEngine_Source/XEngine_ModuleHelp/ModuleHelp_Srt/ModuleHelp_SrtCore.cpp

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ bool CModuleHelp_SrtCore::ModuleHelp_SrtCore_Start(int nPort)
3737
{
3838
ModuleHelp_IsErrorOccur = false;
3939

40+
#if 1 == _XENGINE_STREAMMEDIA_BUILDSWITCH_SRT
4041
hSRTSocket = srt_create_socket();
4142
if (hSRTSocket < 0)
4243
{
@@ -90,6 +91,7 @@ bool CModuleHelp_SrtCore::ModuleHelp_SrtCore_Start(int nPort)
9091
ModuleHelp_dwErrorCode = ERROR_MODULE_HELP_SRT_THREAD;
9192
return false;
9293
}
94+
#endif
9395
return true;
9496
}
9597
/********************************************************************
@@ -139,6 +141,7 @@ bool CModuleHelp_SrtCore::ModuleHelp_SrtCore_Send(LPCXSTR lpszClientAddr, LPCXST
139141
{
140142
ModuleHelp_IsErrorOccur = false;
141143

144+
#if 1 == _XENGINE_STREAMMEDIA_BUILDSWITCH_SRT
142145
if (NULL == lpszClientAddr)
143146
{
144147
ModuleHelp_IsErrorOccur = true;
@@ -205,7 +208,7 @@ bool CModuleHelp_SrtCore::ModuleHelp_SrtCore_Send(LPCXSTR lpszClientAddr, LPCXST
205208
st_Locker.unlock_shared();
206209
//nSRTEvent = SRT_EPOLL_IN | SRT_EPOLL_ERR;
207210
//srt_epoll_update_usock(hSRTEPoll, hSRTSocket, &nSRTEvent);
208-
211+
#endif
209212
return true;
210213
}
211214
/********************************************************************
@@ -296,6 +299,7 @@ bool CModuleHelp_SrtCore::ModuleHelp_SrtCore_Close(LPCXSTR lpszClientAddr /* = N
296299
{
297300
ModuleHelp_IsErrorOccur = false;
298301

302+
#if 1 == _XENGINE_STREAMMEDIA_BUILDSWITCH_SRT
299303
if (0 != hSocket)
300304
{
301305
st_Locker.lock();
@@ -309,6 +313,7 @@ bool CModuleHelp_SrtCore::ModuleHelp_SrtCore_Close(LPCXSTR lpszClientAddr /* = N
309313
}
310314
st_Locker.unlock();
311315
}
316+
#endif
312317
return true;
313318
}
314319
/********************************************************************
@@ -323,6 +328,7 @@ bool CModuleHelp_SrtCore::ModuleHelp_SrtCore_Destory()
323328
{
324329
ModuleHelp_IsErrorOccur = false;
325330

331+
#if 1 == _XENGINE_STREAMMEDIA_BUILDSWITCH_SRT
326332
bRun = false;
327333
srt_close(hSRTSocket);
328334
srt_epoll_release(hSRTEPoll);
@@ -331,6 +337,7 @@ bool CModuleHelp_SrtCore::ModuleHelp_SrtCore_Destory()
331337
{
332338
pSDTThread->join();
333339
}
340+
#endif
334341
return true;
335342
}
336343
//////////////////////////////////////////////////////////////////////////
@@ -340,6 +347,7 @@ bool CModuleHelp_SrtCore::ModuleHelp_SrtCore_Accept(XSOCKET hSRTSocket)
340347
{
341348
ModuleHelp_IsErrorOccur = false;
342349

350+
#if 1 == _XENGINE_STREAMMEDIA_BUILDSWITCH_SRT
343351
SRTCORE_CLIENTINFO st_SRTClient;
344352
sockaddr_storage st_ClientAddr;
345353

@@ -382,12 +390,14 @@ bool CModuleHelp_SrtCore::ModuleHelp_SrtCore_Accept(XSOCKET hSRTSocket)
382390
stl_MapClients.insert(make_pair(st_SRTClient.hSocket, st_SRTClient));
383391
st_Locker.unlock();
384392
lpCall_Login(st_SRTClient.tszClientAddr, st_SRTClient.hSocket, m_lLogin);
393+
#endif
385394
return true;
386395
}
387396
bool CModuleHelp_SrtCore::ModuleHelp_SrtCore_Recv(XSOCKET hSocket)
388397
{
389398
ModuleHelp_IsErrorOccur = false;
390399

400+
#if 1 == _XENGINE_STREAMMEDIA_BUILDSWITCH_SRT
391401
st_Locker.lock_shared();
392402
auto stl_MapIterator = stl_MapClients.find(hSocket);
393403
if (stl_MapIterator == stl_MapClients.end())
@@ -412,12 +422,14 @@ bool CModuleHelp_SrtCore::ModuleHelp_SrtCore_Recv(XSOCKET hSocket)
412422
}
413423
lpCall_Recv(st_SRTClient.tszClientAddr, hSocket, tszMsgBuffer, nRet, m_lRecv);
414424
}
425+
#endif
415426
return true;
416427
}
417428
bool CModuleHelp_SrtCore::ModuleHelp_SrtCore_Leave(XSOCKET hSocket)
418429
{
419430
ModuleHelp_IsErrorOccur = false;
420431

432+
#if 1 == _XENGINE_STREAMMEDIA_BUILDSWITCH_SRT
421433
if (0 != hSocket)
422434
{
423435
XCHAR tszClientAddr[128];
@@ -437,7 +449,7 @@ bool CModuleHelp_SrtCore::ModuleHelp_SrtCore_Leave(XSOCKET hSocket)
437449

438450
lpCall_Leave(tszClientAddr, hSocket, m_lLeave);
439451
}
440-
452+
#endif
441453
return true;
442454
}
443455
//////////////////////////////////////////////////////////////////////////
@@ -447,6 +459,7 @@ XHTHREAD CALLBACK CModuleHelp_SrtCore::ModuleHelp_SrtCore_Thread(XPVOID lParam)
447459
{
448460
CModuleHelp_SrtCore* pClass_This = (CModuleHelp_SrtCore*)lParam;
449461

462+
#if 1 == _XENGINE_STREAMMEDIA_BUILDSWITCH_SRT
450463
while (pClass_This->bRun)
451464
{
452465
int nSRTCount = 100;
@@ -471,5 +484,6 @@ XHTHREAD CALLBACK CModuleHelp_SrtCore::ModuleHelp_SrtCore_Thread(XPVOID lParam)
471484
}
472485
}
473486
}
487+
#endif
474488
return 0;
475489
}

XEngine_Source/XEngine_ModuleHelp/pch.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,11 @@ extern "C" bool ModuleHelp_SrtCore_Send(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgB
5858
{
5959
return m_SrtCore.ModuleHelp_SrtCore_Send(lpszClientAddr, lpszMsgBuffer, nMsgLen);
6060
}
61-
extern "C" bool ModuleHelp_SrtCore_GetStreamID(SRTSOCKET hSocket, XCHAR * ptszSMSAddr, bool* pbPublish)
61+
extern "C" bool ModuleHelp_SrtCore_GetStreamID(XSOCKET hSocket, XCHAR * ptszSMSAddr, bool* pbPublish)
6262
{
6363
return m_SrtCore.ModuleHelp_SrtCore_GetStreamID(hSocket, ptszSMSAddr, pbPublish);
6464
}
65-
extern "C" bool ModuleHelp_SrtCore_Close(LPCXSTR lpszClientAddr, SRTSOCKET hSocket)
65+
extern "C" bool ModuleHelp_SrtCore_Close(LPCXSTR lpszClientAddr, XSOCKET hSocket)
6666
{
6767
return m_SrtCore.ModuleHelp_SrtCore_Close(lpszClientAddr, hSocket);
6868
}

XEngine_Source/XEngine_ModuleHelp/pch.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@
2121
#include <thread>
2222
#include <shared_mutex>
2323
#include <unordered_map>
24+
#if 1 == _XENGINE_STREAMMEDIA_BUILDSWITCH_SRT
2425
#include <srt/srt.h>
26+
#endif
2527
using namespace std;
2628
#include <XEngine_Include/XEngine_CommHdr.h>
2729
#include <XEngine_Include/XEngine_Types.h>

XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_Network.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -308,11 +308,13 @@ bool XEngine_Network_Send(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMs
308308
}
309309
else if (ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PUSH_SRT == enClientType)
310310
{
311+
#if 1 == _XENGINE_STREAMMEDIA_BUILDSWITCH_SRT
311312
if (!ModuleHelp_SrtCore_Send(lpszClientAddr, lpszMsgBuffer, nMsgLen))
312313
{
313314
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("SRT服务端:%s,发送数据失败,错误:%lX"), lpszClientAddr, ModuleHelp_GetLastError());
314315
return false;
315316
}
317+
#endif
316318
}
317319
return true;
318320
}

XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_StreamMediaApp.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,9 @@ int main(int argc, char** argv)
154154
THREADPOOL_PARAMENT** ppSt_ListCenterParam;
155155
THREADPOOL_PARAMENT** ppSt_ListRTMPParam;
156156
THREADPOOL_PARAMENT** ppSt_ListJT1078Param;
157+
#if 1 == _XENGINE_STREAMMEDIA_BUILDSWITCH_SRT
157158
THREADPOOL_PARAMENT** ppSt_ListSRTParam;
159+
#endif
158160

159161
memset(&st_XLogConfig, '\0', sizeof(HELPCOMPONENTS_XLOG_CONFIGURE));
160162
memset(&st_ServiceConfig, '\0', sizeof(XENGINE_SERVICECONFIG));
@@ -418,6 +420,7 @@ int main(int argc, char** argv)
418420
}
419421
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,启动JT1078处理线程池成功,线程个数:%d"), st_ServiceConfig.st_XMax.nJT1078Thread);
420422
}
423+
#if 1 == _XENGINE_STREAMMEDIA_BUILDSWITCH_SRT
421424
if (st_ServiceConfig.nSrtPort > 0)
422425
{
423426
if (!ModuleHelp_SrtCore_Start(st_ServiceConfig.nSrtPort))
@@ -454,9 +457,11 @@ int main(int argc, char** argv)
454457
}
455458
else
456459
{
457-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,SRT流协议服务被禁用x"));
460+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,SRT流协议服务被禁用"));
458461
}
459-
462+
#else
463+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,SRT协议编译选项被禁用,无法使用SRT协议"));
464+
#endif
460465
if (st_ServiceConfig.st_XPull.st_PullRtsp.bEnable)
461466
{
462467
xhVRTPSocket = NetCore_UDPXCore_StartEx(st_ServiceConfig.st_XPull.st_PullRtsp.nVRTPPort, 1);

0 commit comments

Comments
 (0)