/* Copyright(C) 2007-2014 VoIP objects (voipobjects.com) * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef __MT_NATIVE_RTP_SENDER_H #define __MT_NATIVE_RTP_SENDER_H #include "../config.h" #include "jrtplib/src/rtpexternaltransmitter.h" #include "srtp/include/srtp.h" #include "../helper/HL_NetworkSocket.h" #include "../helper/HL_InternetAddress.h" #include "../helper/HL_Rtp.h" #include "../helper/HL_SocketHeap.h" #include "MT_Stream.h" #include "MT_SrtpHelper.h" namespace MT { class NativeRtpSender: public jrtplib::RTPExternalSender { public: NativeRtpSender(Statistics& stat); ~NativeRtpSender(); /** This member function will be called when RTP data needs to be transmitted. */ bool SendRTP(const void *data, size_t len); /** This member function will be called when an RTCP packet needs to be transmitted. */ bool SendRTCP(const void *data, size_t len); /** Used to identify if an RTPAddress instance originated from this sender (to be able to detect own packets). */ bool ComesFromThisSender(const jrtplib::RTPAddress *a); void setDestination(RtpPair destination); RtpPair destination(); void setSocket(const RtpPair& socket); RtpPair& socket(); #if defined(USE_RTPDUMP) void setDumpWriter(RtpDump* dump); RtpDump* dumpWriter(); #endif void setSrtpSession(SrtpSession* srtp); SrtpSession* srtpSession(); protected: RtpPair mSocket; RtpPair mTarget; Statistics& mStat; #if defined(USE_RTPDUMP) RtpDump* mDumpWriter = nullptr; #endif SrtpSession* mSrtpSession; char mSendBuffer[MAX_VALID_UDPPACKET_SIZE]; }; } #endif