Skip to content

Commit 5101a10

Browse files
committed
modify:httptask added http hdr list parament
fixed:problem that rtsp option and setup
1 parent be42fa9 commit 5101a10

File tree

4 files changed

+25
-15
lines changed

4 files changed

+25
-15
lines changed

XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PullStream/PullStream_ClientMethod.cpp

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
// Purpose: 其他方法处理
1111
// History:
1212
*********************************************************************/
13-
bool PullStream_ClientMethod_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, XCHAR*** ppptszListHdr, int nListCount)
13+
bool PullStream_ClientMethod_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, XCHAR*** ppptszParamList, int nParamCount, XCHAR*** ppptszHDRList, int nHDRList)
1414
{
1515
int nRVLen = 0;
1616
int nSDLen = 0;
@@ -19,20 +19,21 @@ bool PullStream_ClientMethod_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam,
1919
RTSPPROTOCOL_REQUEST st_RTSPRequest = {};
2020
RTSPPROTOCOL_RESPONSE st_RTSPResponse = {};
2121

22-
RTSPProtocol_REQParse_Request(&st_RTSPRequest, pSt_HTTPParam->tszHttpMethod, pSt_HTTPParam->tszHttpUri, pSt_HTTPParam->tszHttpVer, ppptszListHdr, nListCount);
22+
RTSPProtocol_REQParse_Request(&st_RTSPRequest, pSt_HTTPParam->tszHttpMethod, pSt_HTTPParam->tszHttpUri, pSt_HTTPParam->tszHttpVer, ppptszHDRList, nHDRList);
2323

2424
st_RTSPResponse.nCode = 200;
2525
st_RTSPResponse.nCSeq = st_RTSPRequest.nCseq;
2626
if (ENUM_RTSPPROTOCOL_METHOD_TYPE_OPTIONS == st_RTSPRequest.enMethod)
2727
{
2828
//OPTIONS rtsp://10.0.1.89:554/480p.264 RTSP/1.0
29+
XCHAR tszKeyStr[MAX_PATH];
2930
XCHAR tszPushAddr[MAX_PATH];
3031
XCHAR tszSMSAddr[MAX_PATH];
3132

3233
memset(tszPushAddr, '\0', sizeof(tszPushAddr));
3334
memset(tszSMSAddr, '\0', sizeof(tszSMSAddr));
3435

35-
ModuleHelp_Rtsp_GetSMSAddr(st_RTSPRequest.tszUrl, tszSMSAddr);
36+
BaseLib_OperatorString_GetKeyValue((*ppptszParamList)[1], "=", tszKeyStr, tszSMSAddr);
3637
if (!ModuleSession_PushStream_FindStream(tszSMSAddr, tszPushAddr))
3738
{
3839
st_RTSPResponse.nCode = 404;
@@ -55,6 +56,7 @@ bool PullStream_ClientMethod_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam,
5556
else if (ENUM_RTSPPROTOCOL_METHOD_TYPE_DESCRIBE == st_RTSPRequest.enMethod)
5657
{
5758
//DESCRIBE rtsp://10.0.1.89:554/480p.264 RTSP/1.0
59+
XCHAR tszKeyStr[MAX_PATH];
5860
XCHAR tszPushAddr[MAX_PATH];
5961
XCHAR tszSMSAddr[MAX_PATH];
6062
XENGINE_PROTOCOL_AVINFO st_AVInfo;
@@ -63,7 +65,7 @@ bool PullStream_ClientMethod_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam,
6365
memset(tszSMSAddr, '\0', sizeof(tszSMSAddr));
6466
memset(&st_AVInfo, '\0', sizeof(XENGINE_PROTOCOL_AVINFO));
6567

66-
ModuleHelp_Rtsp_GetSMSAddr(st_RTSPRequest.tszUrl, tszSMSAddr);
68+
BaseLib_OperatorString_GetKeyValue((*ppptszParamList)[1], "=", tszKeyStr, tszSMSAddr);
6769
if (!ModuleSession_PushStream_FindStream(tszSMSAddr, tszPushAddr))
6870
{
6971
st_RTSPResponse.nCode = 404;
@@ -85,7 +87,11 @@ bool PullStream_ClientMethod_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam,
8587
SDPProtocol_Packet_Owner(xhSDPToken, _X("XEngine"), nSessionID, _X("0.0.0.0"));
8688
SDPProtocol_Packet_Session(xhSDPToken, tszSMSAddr);
8789
SDPProtocol_Packet_KeepTime(xhSDPToken);
90+
SDPProtocol_Packet_OptionalRange(xhSDPToken);
8891
SDPProtocol_Packet_Control(xhSDPToken, -1);
92+
//创建SESSION
93+
BaseLib_OperatorHandle_CreateStr(st_RTSPResponse.tszSession);
94+
ModuleHelp_Rtsp_SetSession(lpszClientAddr, st_RTSPResponse.tszSession);
8995
//配置视频属性
9096
int nListCount = 0;
9197
XCHAR** pptszAVList;
@@ -107,7 +113,6 @@ bool PullStream_ClientMethod_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam,
107113
OPenSsl_Codec_Base64((LPCXSTR)tszPPSBuffer, st_SDPMediaVideo.st_FmtpVideo.tszPPSBase, &nPPSLen, true);
108114

109115
st_SDPMediaVideo.nTrackID = 0;
110-
st_SDPMediaVideo.st_RTPMap.nChannel = 2;
111116
st_SDPMediaVideo.st_RTPMap.nSampleRate = 90000;
112117
_tcsxcpy(st_SDPMediaVideo.st_RTPMap.tszCodecName, _X("H264"));
113118
SDPProtocol_Packet_VideoFmt(xhSDPToken, 96, &st_SDPMediaVideo);
@@ -122,11 +127,14 @@ bool PullStream_ClientMethod_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam,
122127
AVHelp_Parse_AACInfo((const XBYTE*)st_AVInfo.st_AudioInfo.tszAInfo, st_AVInfo.st_AudioInfo.nALen, &st_SDPMediaAudio.st_RTPMap.nChannel, &st_SDPMediaAudio.st_RTPMap.nSampleRate, &st_SDPMediaAudio.st_FmtpAudio.nProfileID, &st_SDPMediaAudio.st_FmtpAudio.nConfig);
123128

124129
st_SDPMediaAudio.nTrackID = 1;
125-
_tcsxcpy(st_SDPMediaAudio.st_RTPMap.tszCodecName, _X("mpeg4-generic"));
126-
127130
st_SDPMediaAudio.st_FmtpAudio.nDeltaLen = 3;
128131
st_SDPMediaAudio.st_FmtpAudio.nIndexLen = 3;
129132
st_SDPMediaAudio.st_FmtpAudio.nSizeLen = 13;
133+
134+
st_SDPMediaAudio.st_RTPMap.nChannel = 2;
135+
st_SDPMediaAudio.st_RTPMap.nSampleRate = 90000;
136+
_tcsxcpy(st_SDPMediaAudio.st_RTPMap.tszCodecName, _X("mpeg4-generic"));
137+
130138
_tcsxcpy(st_SDPMediaAudio.st_FmtpAudio.tszMode, "AAC-hbr");
131139
SDPProtocol_Packet_AudioFmt(xhSDPToken, 98, &st_SDPMediaAudio);
132140
SDPProtocol_Packet_Control(xhSDPToken, 1);
@@ -145,8 +153,7 @@ bool PullStream_ClientMethod_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam,
145153
{
146154
ModuleHelp_Rtsp_SetClient(lpszClientAddr, st_RTSPRequest.st_TransportInfo.st_ClientPorts.nRTPPort, st_RTSPRequest.st_TransportInfo.st_ClientPorts.nRTCPPort, st_RTSPRequest.st_ChannelInfo.nChannelNumber);
147155

148-
BaseLib_OperatorHandle_CreateStr(st_RTSPResponse.tszSession);
149-
ModuleHelp_Rtsp_SetSession(lpszClientAddr, st_RTSPResponse.tszSession);
156+
150157

151158
st_RTSPResponse.st_TransportInfo.st_TransFlags.bAVP = true;
152159
st_RTSPResponse.st_TransportInfo.st_TransFlags.bRTP = true;

XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PullStream/PullStream_ClientMethod.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,4 @@
1111
// History:
1212
*********************************************************************/
1313
//任务处理相关函数,处理包的内容
14-
bool PullStream_ClientMethod_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, XCHAR*** ppptszListHdr, int nListCount);
14+
bool PullStream_ClientMethod_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, XCHAR*** ppptszParamList, int nParamCount, XCHAR*** ppptszHDRList, int nHDRList);

XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_HttpTask.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,25 +34,28 @@ XHTHREAD CALLBACK XEngine_HTTPTask_Thread(XPVOID lParam)
3434
for (int j = 0; j < ppSst_ListAddr[i]->nPktCount; j++)
3535
{
3636
int nMsgLen = 0; //客户端发送的数据大小,不包括头
37+
int nHCount = 0;
3738
XCHAR* ptszMsgBuffer = NULL; //客户端发送的数据
39+
XCHAR** pptszListHdr;
3840
RFCCOMPONENTS_HTTP_REQPARAM st_HTTPReqparam; //客户端的请求参数
3941

4042
memset(&st_HTTPReqparam, '\0', sizeof(RFCCOMPONENTS_HTTP_REQPARAM));
4143
//得到一个指定客户端的完整数据包
42-
if (HttpProtocol_Server_GetMemoryEx(xhHttpPacket, ppSst_ListAddr[i]->tszClientAddr, &ptszMsgBuffer, &nMsgLen, &st_HTTPReqparam))
44+
if (HttpProtocol_Server_GetMemoryEx(xhHttpPacket, ppSst_ListAddr[i]->tszClientAddr, &ptszMsgBuffer, &nMsgLen, &st_HTTPReqparam, &pptszListHdr, &nHCount))
4345
{
4446
//在另外一个函数里面处理数据
45-
XEngine_HTTPTask_Handle(&st_HTTPReqparam, ppSst_ListAddr[i]->tszClientAddr, ptszMsgBuffer, nMsgLen);
47+
XEngine_HTTPTask_Handle(&st_HTTPReqparam, ppSst_ListAddr[i]->tszClientAddr, ptszMsgBuffer, nMsgLen, &pptszListHdr, nHCount);
4648
//释放内存
4749
BaseLib_OperatorMemory_FreeCStyle((VOID**)&ptszMsgBuffer);
50+
BaseLib_OperatorMemory_Free((XPPPMEM)&pptszListHdr, nHCount);
4851
}
4952
}
5053
}
5154
BaseLib_OperatorMemory_Free((XPPPMEM)&ppSst_ListAddr, nListCount);
5255
}
5356
return 0;
5457
}
55-
bool XEngine_HTTPTask_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen)
58+
bool XEngine_HTTPTask_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, XCHAR*** ppptszHDRList, int nHDRCount)
5659
{
5760
int nRVLen = 0;
5861
int nSDLen = 0;
@@ -126,7 +129,7 @@ bool XEngine_HTTPTask_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXSTR
126129
else
127130
{
128131
//可能是RTSP
129-
PullStream_ClientMethod_Handle(pSt_HTTPParam, lpszClientAddr, lpszMsgBuffer, nMsgLen, &pptszList, nListCount);
132+
PullStream_ClientMethod_Handle(pSt_HTTPParam, lpszClientAddr, lpszMsgBuffer, nMsgLen, &pptszList, nListCount, ppptszHDRList, nHDRCount);
130133
}
131134
BaseLib_OperatorMemory_Free((XPPPMEM)&pptszList, nListCount);
132135
return true;

XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_HttpTask.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@
1313
//任务处理池,用来获取一个完整包
1414
XHTHREAD CALLBACK XEngine_HTTPTask_Thread(XPVOID lParam);
1515
//任务处理相关函数,处理包的内容
16-
bool XEngine_HTTPTask_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen);
16+
bool XEngine_HTTPTask_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, XCHAR*** ppptszHDRList, int nHDRCount);

0 commit comments

Comments
 (0)