diff options
author | dknn <yoann.blein@free.fr> | 2012-07-11 16:06:01 (GMT) |
---|---|---|
committer | dknn <yoann.blein@free.fr> | 2012-09-22 09:01:48 (GMT) |
commit | 6d458439d9536be1736ba1a98c51040b64946284 (patch) | |
tree | 74894bc65dce3db5ccaf822f9769d3efd1e0dd6e /Swiften/ScreenSharing/RTPSessionImpl.h | |
parent | 79ee86a4deeb29c1be6d6838e54aae32d4c3e1ec (diff) | |
download | swift-contrib-6d458439d9536be1736ba1a98c51040b64946284.zip swift-contrib-6d458439d9536be1736ba1a98c51040b64946284.tar.bz2 |
Add disco for RTP + bugfix
Diffstat (limited to 'Swiften/ScreenSharing/RTPSessionImpl.h')
-rw-r--r-- | Swiften/ScreenSharing/RTPSessionImpl.h | 42 |
1 files changed, 17 insertions, 25 deletions
diff --git a/Swiften/ScreenSharing/RTPSessionImpl.h b/Swiften/ScreenSharing/RTPSessionImpl.h index 657a34a..9bf08e5 100644 --- a/Swiften/ScreenSharing/RTPSessionImpl.h +++ b/Swiften/ScreenSharing/RTPSessionImpl.h @@ -7,6 +7,7 @@ #pragma once #include <Swiften/ScreenSharing/RTPSession.h> +#include <Swiften/Elements/RTPPayloadType.h> #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wunused-parameter" @@ -16,26 +17,19 @@ #include <rtpipv4address.h> namespace Swift { - // Temporary class - class Sender : public jrtplib::RTPExternalSender - { - public: - Sender() {} + class Sender : public jrtplib::RTPExternalSender { + public: + Sender(boost::shared_ptr<UDPSocket> udpSocket) : udpSocket(udpSocket) {} - virtual bool SendRTP (const void* /*data*/, size_t /*len*/) - { - return true; - } + virtual bool SendRTP(const void* data, size_t len); + virtual bool SendRTCP(const void* data, size_t len); + virtual bool ComesFromThisSender (const jrtplib::RTPAddress* address); - virtual bool SendRTCP (const void* /*data*/, size_t /*len*/) - { - return true; - } + private: + void send(const void* data, size_t len); - virtual bool ComesFromThisSender (const jrtplib::RTPAddress* /*address*/) - { - return false; - } + private: + boost::shared_ptr<UDPSocket> udpSocket; }; class RTPSessionImpl : public RTPSession { @@ -43,30 +37,28 @@ namespace Swift { typedef boost::shared_ptr<RTPSession> ref; public: - RTPSessionImpl(); + RTPSessionImpl(boost::shared_ptr<UDPSocket> udpSocket, const RTPPayloadType& payloadType); virtual ~RTPSessionImpl(); - virtual void create(boost::shared_ptr<UDPSocket> 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); + public: + static jrtplib::RTPIPv4Address nativeAddressToJRTPAddress(const HostAddressPort& hostAddressPort); private: - inline void checkError(int rtperr) const; + void checkError(int rtperr) const; void handleDataRead(boost::shared_ptr<SafeByteArray> data); private: boost::shared_ptr<UDPSocket> udpSocket; - PayloadType payloadType; - int frequency; + RTPPayloadType payloadType; jrtplib::RTPIPv4Address jRTPRemotePeer; - jrtplib::RTPSession session; Sender sender; + jrtplib::RTPSession session; jrtplib::RTPExternalPacketInjecter *packetInjecter; }; } |