Blame view

src/decoder/gb28181/rtp2/RTPReceiver2.h 1.41 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
  	bool Open(string channel_id, bool isUdp);
c027963f   Hu Chunming   ffmpeg6.1.1版本的接收rtp
22
23
24
25
26
  	void Close();
  
  	void SetVodEndCallback(CallBack_VodFileEnd cb, void* param);
  
      void SetOutputCallback(CallBack_Stream cb, void* param);
150d457d   Hu Chunming   代码暂存,未完成
27
28
29
  
  	void RequestStreamFailed();
  
7d529db7   Hu Chunming   修复端口分配问题
30
  	int allocRtpPort(bool isUdp);
150d457d   Hu Chunming   代码暂存,未完成
31
  
c027963f   Hu Chunming   ffmpeg6.1.1版本的接收rtp
32
33
34
  public:
  	int udp_server();
  	int tcp_server();
150d457d   Hu Chunming   代码暂存,未完成
35
  
c027963f   Hu Chunming   ffmpeg6.1.1版本的接收rtp
36
37
  private:
  	bool start_server(string channel_id, int port, bool isUdp);
c2ff6d2a   Hu Chunming   初步实现ffmepg接收rtp流
38
  	void parseTcpData(uint8_t* recvBuf, int recvBufSize);
150d457d   Hu Chunming   代码暂存,未完成
39
40
41
42
43
44
  
  public:
      uint8_t* mRecvCache {nullptr};
  	uint64_t mRecvCacheSize {0};
  
  	uint8_t* mRecvRtpBuffer {nullptr};    // mRecvCache提取出来的rtp字节流
c027963f   Hu Chunming   ffmpeg6.1.1版本的接收rtp
45
  	int16_t  mRecvRtpBufferSize {0};	// mRecvCache提取出来的rtp字节流总长度 rtpHeader+rtpBody
150d457d   Hu Chunming   代码暂存,未完成
46
47
  
  	bool m_bRtpExit {false};
c027963f   Hu Chunming   ffmpeg6.1.1版本的接收rtp
48
49
50
51
  
  	string m_SipChannelId;
  	int m_rtp_port{-1};
  
c027963f   Hu Chunming   ffmpeg6.1.1版本的接收rtp
52
53
54
55
56
57
58
59
60
61
      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   代码暂存,未完成
62
63
64
  };
  
  #endif  // _RTP_RECEIVER_H_