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 ;
0 commit comments