#ifndef _RTP_DATA_RECEIVER_H_ #define _RTP_DATA_RECEIVER_H_ #include #include "io_statistics.h" #include "rtcp_receiver_report.h" #include "rtp_packet.h" #include "rtp_statistics.h" class RtpDataReceiver { public: RtpDataReceiver(); RtpDataReceiver(std::shared_ptr io_statistics); ~RtpDataReceiver(); public: void InsertRtpPacket(RtpPacket& rtp_packet); void SetSendDataFunc(std::function data_send_func); void SetOnReceiveData( std::function on_receive_data) { on_receive_data_ = on_receive_data; } private: bool CheckIsTimeSendRR(); int SendRtcpRR(RtcpReceiverReport& rtcp_rr); private: std::function on_receive_data_ = nullptr; uint32_t last_complete_frame_ts_ = 0; private: std::unique_ptr rtp_statistics_ = nullptr; std::shared_ptr io_statistics_ = nullptr; uint32_t last_recv_bytes_ = 0; uint32_t total_rtp_payload_recv_ = 0; uint32_t total_rtp_packets_recv_ = 0; uint32_t last_send_rtcp_rr_packet_ts_ = 0; std::function data_send_func_ = nullptr; }; #endif