|
1 | 1 | #include "../XEngine_Hdr.h" |
2 | 2 | /******************************************************************** |
3 | | -// Created: 2023/09/18 14:19:28 |
4 | | -// File Name: D:\XEngine_StreamMedia\XEngine_Source\XEngine_ServiceApp\XEngine_StreamMediaApp\StreamMedia_PullStream\PullStream_ClientMethod.cpp |
| 3 | +// Created: 2023/12/20 14:59:42 |
| 4 | +// File Name: D:\XEngine_StreamMedia\XEngine_Source\XEngine_ServiceApp\XEngine_StreamMediaApp\StreamMedia_PullStream\PullStream_ClientRtsp.cpp |
5 | 5 | // File Path: D:\XEngine_StreamMedia\XEngine_Source\XEngine_ServiceApp\XEngine_StreamMediaApp\StreamMedia_PullStream |
6 | | -// File Base: PullStream_ClientMethod |
| 6 | +// File Base: PullStream_ClientRtsp |
7 | 7 | // File Ext: cpp |
8 | 8 | // Project: XEngine(网络通信引擎) |
9 | 9 | // Author: qyt |
10 | | -// Purpose: 其他方法处理 |
| 10 | +// Purpose: RTSP推流服务 |
11 | 11 | // History: |
12 | 12 | *********************************************************************/ |
13 | | -bool PullStream_ClientMethod_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, XCHAR*** ppptszParamList, int nParamCount, XCHAR*** ppptszHDRList, int nHDRList) |
| 13 | +bool PullStream_ClientRtsp_RTCPProcess(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszMsgBuffer, int nMsgLen) |
| 14 | +{ |
| 15 | + if (nMsgLen > 4) |
| 16 | + { |
| 17 | + int nPos = 0; |
| 18 | + RTCPPROTOCOL_RTCPHDR st_RTCPHdr = {}; |
| 19 | + RTCPProtocol_Parse_Header(&st_RTCPHdr, lpszMsgBuffer, nMsgLen); |
| 20 | + nPos += sizeof(RTCPPROTOCOL_RTCPHDR); |
| 21 | + |
| 22 | + int nListCount; |
| 23 | + RTCPPROTOCOL_RTCPRECVER** ppSt_ListRecvInfo; |
| 24 | + RTCPProtocol_Parse_Recver(&ppSt_ListRecvInfo, &nListCount, &st_RTCPHdr, lpszMsgBuffer + nPos, nMsgLen - nPos); |
| 25 | + nPos += sizeof(RTCPPROTOCOL_RTCPRECVER); |
| 26 | + //后续是否还有数据 |
| 27 | + if (nMsgLen - nPos > 0) |
| 28 | + { |
| 29 | + //是SDES |
| 30 | + st_RTCPHdr = {}; |
| 31 | + int nListCount = 0; |
| 32 | + STREAMMEDIA_RTCPPROTOCOL_SDESINFO** ppSt_ListSdeser; |
| 33 | + |
| 34 | + RTCPProtocol_Parse_Header(&st_RTCPHdr, lpszMsgBuffer + nPos, nMsgLen - nPos); |
| 35 | + nPos += sizeof(RTCPPROTOCOL_RTCPHDR); |
| 36 | + |
| 37 | + if (ENUM_STREAMMEDIA_RTCPPROTOCOL_PACKET_TYPE_SDES == st_RTCPHdr.byPT) |
| 38 | + { |
| 39 | + nPos -= sizeof(uint32_t); |
| 40 | + } |
| 41 | + RTCPProtocol_Parse_Sdeser(&ppSt_ListSdeser, &nListCount, &st_RTCPHdr, lpszMsgBuffer + nPos, nMsgLen - nPos); |
| 42 | + BaseLib_OperatorMemory_Free((XPPPMEM)&ppSt_ListSdeser, nListCount); |
| 43 | + } |
| 44 | + /* |
| 45 | + int nSDLen = 0; |
| 46 | + XCHAR tszMSGBuffer[1024] = {}; |
| 47 | + RTCPPROTOCOL_RTCPSENDER st_SendInfo = {}; |
| 48 | +
|
| 49 | + RTCPProtocol_Packet_Sender(tszMSGBuffer, &nSDLen, st_RTCPHdr.unSsrc, &st_SendInfo); |
| 50 | + NetCore_UDPXCore_SendEx(xhVRTCPSocket, lpszClientAddr, tszMSGBuffer, nSDLen); |
| 51 | +
|
| 52 | + nListCount = 1; |
| 53 | + STREAMMEDIA_RTCPPROTOCOL_SDESINFO** ppSt_SDESList; |
| 54 | + BaseLib_OperatorMemory_Malloc((XPPPMEM)&ppSt_SDESList, nListCount, sizeof(STREAMMEDIA_RTCPPROTOCOL_SDESINFO)); |
| 55 | +
|
| 56 | + memset(tszMSGBuffer, '\0', sizeof(tszMSGBuffer)); |
| 57 | + ppSt_SDESList[0]->enSDESType = ENUM_STREAMMEDIA_RTCPPROTOCOL_SDES_TYPE_CNAME; |
| 58 | + ppSt_SDESList[0]->xhSsrc = st_RTCPHdr.unSsrc; |
| 59 | + ppSt_SDESList[0]->nMLen = _tcsxlen(XENGINE_NAME_STR); |
| 60 | + _tcsxcpy(ppSt_SDESList[0]->tszMSGBuffer, XENGINE_NAME_STR); |
| 61 | + RTCPProtocol_Packet_Sdeser(tszMSGBuffer, &nSDLen, &ppSt_SDESList, nListCount); |
| 62 | + NetCore_UDPXCore_SendEx(xhVRTCPSocket, lpszClientAddr, tszMSGBuffer, nSDLen); |
| 63 | + BaseLib_OperatorMemory_Free((XPPPMEM)&ppSt_SDESList, nListCount);*/ |
| 64 | + } |
| 65 | + return true; |
| 66 | +} |
| 67 | +bool PullStream_ClientRtsp_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, XCHAR*** ppptszParamList, int nParamCount, XCHAR*** ppptszHDRList, int nHDRList) |
14 | 68 | { |
15 | 69 | int nRVLen = 0; |
16 | 70 | int nSDLen = 0; |
|
0 commit comments