summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften/ScreenSharing/RTPSessionImpl.h')
-rw-r--r--Swiften/ScreenSharing/RTPSessionImpl.h24
1 files changed, 19 insertions, 5 deletions
diff --git a/Swiften/ScreenSharing/RTPSessionImpl.h b/Swiften/ScreenSharing/RTPSessionImpl.h
index 47af60b..2736605 100644
--- a/Swiften/ScreenSharing/RTPSessionImpl.h
+++ b/Swiften/ScreenSharing/RTPSessionImpl.h
@@ -34,10 +34,7 @@ namespace Swift {
jrtplib::RTPAddress* jRTPLocalAddress;
};
- class RTPSessionImpl : public RTPSession {
- public:
- typedef boost::shared_ptr<RTPSession> ref;
-
+ class RTPSessionImpl : public RTPSession, jrtplib::RTPSession {
public:
RTPSessionImpl(boost::shared_ptr<UDPSocket> udpSocket, const RTPPayloadType& payloadType);
virtual ~RTPSessionImpl();
@@ -48,21 +45,38 @@ namespace Swift {
virtual void injectData(const SafeByteArray &data);
virtual void stop(int maxWaitMs = 100);
+ virtual void sendSLIFeedback(int pictureID);
+ virtual void sendRPSIFeedback(int pictureID);
+
virtual size_t getMaxRTPPayloadSize() const;
public:
static jrtplib::RTPAddress* nativeAddressToJRTPAddress(const HostAddressPort& hostAddressPort);
+ protected:
+ void OnUnknownPacketType(jrtplib::RTCPPacket* rtcpPack, const jrtplib::RTPTime& /*receivetime*/, const jrtplib::RTPAddress* senderAddress);
+
+ private:
+ enum PacketType {
+ PSFB = 206,
+ };
+
+ enum SubPacketType {
+ PSFB_SLI = 2,
+ PSFB_RPSI = 3,
+ };
+
private:
void checkError(int rtperr) const;
void handleDataRead(boost::shared_ptr<SafeByteArray> data);
+ void parseSLIFeedBack(uint8_t* data, size_t len);
+ void parseRPSIFeedBack(uint8_t* data, size_t len);
private:
boost::shared_ptr<UDPSocket> udpSocket;
RTPPayloadType payloadType;
jrtplib::RTPAddress* jRTPRemotePeer;
Sender sender;
- jrtplib::RTPSession session;
jrtplib::RTPExternalPacketInjecter *packetInjecter;
};
}