/* * Copyright (c) 2012 Yoann Blein * Licensed under the simplified BSD license. * See Documentation/Licenses/BSD-simplified.txt for more information. */ #pragma once #include #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wunused-parameter" #include #pragma clang diagnostic pop #include #include namespace Swift { // Temporary class class Sender : public jrtplib::RTPExternalSender { public: Sender() {} virtual bool SendRTP (const void* /*data*/, size_t /*len*/) { return true; } virtual bool SendRTCP (const void* /*data*/, size_t /*len*/) { return true; } virtual bool ComesFromThisSender (const jrtplib::RTPAddress* /*address*/) { return false; } }; class RTPSessionImpl : public RTPSession { public: typedef boost::shared_ptr ref; public: RTPSessionImpl(); virtual ~RTPSessionImpl(); virtual void create(boost::shared_ptr udpSocket, const HostAddressPort &remotePeer, PayloadType payloadType, int frequency); virtual void poll(); virtual void checkIncomingPackets(); virtual void sendPacket(const SafeByteArray &data, int timestampinc, bool marker = false); virtual void injectData(const SafeByteArray &data); virtual void stop(int maxWaitMs = 100); private: static void nativeAddressToJRTPAddress(const HostAddressPort& hostAddressPort, jrtplib::RTPIPv4Address& jRTPAddress); private: inline void checkError(int rtperr) const; void handleDataRead(boost::shared_ptr data); private: boost::shared_ptr udpSocket; PayloadType payloadType; int frequency; jrtplib::RTPIPv4Address jRTPRemotePeer; jrtplib::RTPSession session; Sender sender; jrtplib::RTPExternalPacketInjecter *packetInjecter; }; }