#ifndef _RTP_UDP_RECEIVER_H_ #define _RTP_UDP_RECEIVER_H_ #include "rtpsessionparams.h" #include "rtpudpv4transmitter.h" #include "rtpsession.h" #include "rtppacket.h" #include #include #include #include #include #include "RTPReceiver.h" using namespace jrtplib; using namespace std; class UdpRTPSession; class RTPUdpReceiver: public RTPReceiver { public: RTPUdpReceiver(); ~RTPUdpReceiver(); virtual bool Open(string channel_id); virtual bool IsOpened() ; virtual void Close() ; virtual bool RequestStream(); public: int OnRtpRecv(); int CheckConnecting(); private: bool wait_times(int times); private: std::thread* m_rtpThreadPtr{nullptr}; // RTP接收线程 std::thread* m_connThreadPtr{nullptr}; // 判断流是否还在的线程 RTPSession* m_rtpSessionPtr{nullptr}; // RTP会话 RTPSession m_rtpSession; std::atomic_bool m_bOpened; int64_t m_idleCount; int64_t m_noDataCount;//线程计数,用于打开流成功但是实际没流过来 RTPSessionParams* m_sessparamsPtr{nullptr}; RTPUDPv4TransmissionParams* m_transparamsPtr{nullptr}; string m_sip_channel_id; std::atomic_bool m_bNoData{false}; bool m_bRecvExit{false}; }; #endif // _RTP_UDP_RECEIVER_H_