/* * Copyright (C) 2008-2019 The QXmpp developers * * Author: * Jeremy Lainé * * Source: * https://github.com/qxmpp-project/qxmpp * * This file is a part of QXmpp library. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * */ #ifndef QXMPPRTCPPACKET_H #define QXMPPRTCPPACKET_H #include #include "QXmppGlobal.h" class QXmppRtcpPacketPrivate; class QXmppRtcpReceiverReport; class QXmppRtcpReceiverReportPrivate; class QXmppRtcpSenderInfo; class QXmppRtcpSenderInfoPrivate; class QXmppRtcpSourceDescription; class QXmppRtcpSourceDescriptionPrivate; /// \internal /// /// The QXmppRtcpPacket class represents an RTCP packet. class QXMPP_EXPORT QXmppRtcpPacket { public: enum Type { SenderReport = 200, ReceiverReport = 201, SourceDescription = 202, Goodbye = 203, }; QXmppRtcpPacket(); QXmppRtcpPacket(const QXmppRtcpPacket &other); ~QXmppRtcpPacket(); bool decode(const QByteArray &ba); QByteArray encode() const; bool read(QDataStream &stream); void write(QDataStream &stream) const; QString goodbyeReason() const; void setGoodbyeReason(const QString &goodbyeReason); QList goodbyeSsrcs() const; void setGoodbyeSsrcs(const QList &goodbyeSsrcs); QList receiverReports() const; void setReceiverReports(const QList &reports); QXmppRtcpSenderInfo senderInfo() const; void setSenderInfo(const QXmppRtcpSenderInfo &senderInfo); QList sourceDescriptions() const; void setSourceDescriptions(const QList &descriptions); quint32 ssrc() const; void setSsrc(quint32 ssrc); quint8 type() const; void setType(quint8 type); private: QSharedDataPointer d; }; /// \internal class QXMPP_EXPORT QXmppRtcpReceiverReport { public: QXmppRtcpReceiverReport(); QXmppRtcpReceiverReport(const QXmppRtcpReceiverReport &other); ~QXmppRtcpReceiverReport(); quint32 dlsr() const; void setDlsr(quint32 dlsr); quint8 fractionLost() const; void setFractionLost(quint8 fractionLost); quint32 jitter() const; void setJitter(quint32 jitter); quint32 lsr() const; void setLsr(quint32 lsr); quint32 ssrc() const; void setSsrc(quint32 ssrc); quint32 totalLost() const; void setTotalLost(quint32 totalLost); private: friend class QXmppRtcpPacket; QSharedDataPointer d; }; /// \internal class QXMPP_EXPORT QXmppRtcpSenderInfo { public: QXmppRtcpSenderInfo(); QXmppRtcpSenderInfo(const QXmppRtcpSenderInfo &other); ~QXmppRtcpSenderInfo(); quint64 ntpStamp() const; void setNtpStamp(quint64 ntpStamp); quint32 rtpStamp() const; void setRtpStamp(quint32 rtpStamp); quint32 octetCount() const; void setOctetCount(quint32 count); quint32 packetCount() const; void setPacketCount(quint32 count); private: friend class QXmppRtcpPacket; QSharedDataPointer d; }; /// \internal class QXMPP_EXPORT QXmppRtcpSourceDescription { public: QXmppRtcpSourceDescription(); QXmppRtcpSourceDescription(const QXmppRtcpSourceDescription &other); ~QXmppRtcpSourceDescription(); QString cname() const; void setCname(const QString &name); QString name() const; void setName(const QString &name); quint32 ssrc() const; void setSsrc(const quint32 ssrc); private: friend class QXmppRtcpPacket; QSharedDataPointer d; }; #endif