stream-deploy/ZLM/3rdpart/media-server/librtsp/test/rtp-tcp-transport.h

36 lines
847 B
C++

#ifndef _rtp_tcp_transport_h_
#define _rtp_tcp_transport_h_
#include "media/media-source.h"
class RTPTcpTransport : public IRTPTransport
{
public:
RTPTcpTransport(rtsp_server_t* rtsp, uint8_t rtp, uint8_t rtcp): m_rtp(rtp), m_rtcp(rtcp), m_rtsp(rtsp) {}
virtual ~RTPTcpTransport() {}
public:
virtual int Send(bool rtcp, const void* data, size_t bytes)
{
assert(bytes < (1 << 16));
if (bytes >= (1 << 16))
return -E2BIG;
m_packet[0] = '$';
m_packet[1] = rtcp ? m_rtcp : m_rtp;
m_packet[2] = (bytes >> 8) & 0xFF;
m_packet[3] = bytes & 0xff;
memcpy(m_packet + 4, data, bytes);
int r = rtsp_server_send_interleaved_data(m_rtsp, m_packet, bytes + 4);
return 0 == r ? bytes : r;
}
private:
uint8_t m_rtp;
uint8_t m_rtcp;
rtsp_server_t* m_rtsp;
uint8_t m_packet[4 + (1 << 16)];
};
#endif /* !_rtp_tcp_transport_h_ */