RTPUdpReceiver.h 1.34 KB
#ifndef _RTP_UDP_RECEIVER_H_
#define _RTP_UDP_RECEIVER_H_

#include "rtpsessionparams.h"
#include "rtpudpv4transmitter.h"
#include "rtpsession.h"
#include "rtppacket.h"
#include <queue>
#include <iostream>
#include <thread>
#include <string>
#include <mutex>

#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 virtual bool IsOpened() ;() 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_