Blame view

src/decoder/gb28181/rtp2/RTPReceiver2.h 1.45 KB
150d457d   Hu Chunming   代码暂存,未完成
1
2
3
4
5
6
7
8
9
  #ifndef _RTP_RECEIVER_H_
  #define _RTP_RECEIVER_H_
  
  #include <stdint.h>
  #include <atomic>
  #include <thread>
  
  using namespace std;
  
c027963f   Hu Chunming   ffmpeg6.1.1版本的接收rtp
10
  typedef void(*CallBack_Stream)(void* userdata, uint8_t* buf, int buf_size, uint64_t pts);
150d457d   Hu Chunming   代码暂存,未完成
11
  
c027963f   Hu Chunming   ffmpeg6.1.1版本的接收rtp
12
13
14
15
  typedef void(*CallBack_VodFileEnd)(void* userdata);
  
  
  class RTPReceiver2 {
150d457d   Hu Chunming   代码暂存,未完成
16
17
18
19
20
  
  public:
      RTPReceiver2();
      virtual ~RTPReceiver2();
  
c027963f   Hu Chunming   ffmpeg6.1.1版本的接收rtp
21
22
23
24
25
26
27
  	bool Open(string channel_id, bool isUdp);
  	bool IsOpened();
  	void Close();
  
  	void SetVodEndCallback(CallBack_VodFileEnd cb, void* param);
  
      void SetOutputCallback(CallBack_Stream cb, void* param);
150d457d   Hu Chunming   代码暂存,未完成
28
29
30
31
32
  
  	void RequestStreamFailed();
  
  	int allocRtpPort();
  
c027963f   Hu Chunming   ffmpeg6.1.1版本的接收rtp
33
34
35
  public:
  	int udp_server();
  	int tcp_server();
150d457d   Hu Chunming   代码暂存,未完成
36
  
c027963f   Hu Chunming   ffmpeg6.1.1版本的接收rtp
37
38
  private:
  	bool start_server(string channel_id, int port, bool isUdp);
150d457d   Hu Chunming   代码暂存,未完成
39
40
41
42
43
44
45
  	void parseTcpData(char* recvBuf, int recvBufSize);
  
  public:
      uint8_t* mRecvCache {nullptr};
  	uint64_t mRecvCacheSize {0};
  
  	uint8_t* mRecvRtpBuffer {nullptr};    // mRecvCache提取出来的rtp字节流
c027963f   Hu Chunming   ffmpeg6.1.1版本的接收rtp
46
  	int16_t  mRecvRtpBufferSize {0};	// mRecvCache提取出来的rtp字节流总长度 rtpHeader+rtpBody
150d457d   Hu Chunming   代码暂存,未完成
47
48
  
  	bool m_bRtpExit {false};
c027963f   Hu Chunming   ffmpeg6.1.1版本的接收rtp
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
  
  	string m_SipChannelId;
  	int m_rtp_port{-1};
  
  	std::atomic_bool    m_bOpened;
      std::atomic_bool    m_bAccepted;
      std::atomic_bool    m_bClosing;
  
  	std::thread* m_server_thread{nullptr};
  
  	void*           m_bufferParam;
      CallBack_Stream   m_buffer_cbk;				// 视频流回调
  
  	void*           m_finishParam;
  	CallBack_VodFileEnd m_finish_cbk;				// 录像流结束回调
150d457d   Hu Chunming   代码暂存,未完成
64
65
66
  };
  
  #endif  // _RTP_RECEIVER_H_