diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/base/QXmppJingleIq.cpp | 33 | ||||
| -rw-r--r-- | src/base/QXmppJingleIq.h | 3 |
2 files changed, 36 insertions, 0 deletions
diff --git a/src/base/QXmppJingleIq.cpp b/src/base/QXmppJingleIq.cpp index 9d883860..9a365929 100644 --- a/src/base/QXmppJingleIq.cpp +++ b/src/base/QXmppJingleIq.cpp @@ -134,6 +134,8 @@ public: QString descriptionMedia; quint32 descriptionSsrc; QString descriptionType; + bool isRtpMultiplexingSupported = false; + QString transportType; QString transportUser; QString transportPassword; @@ -230,6 +232,33 @@ void QXmppJingleIq::Content::setDescriptionSsrc(quint32 ssrc) d->descriptionSsrc = ssrc; } +/// +/// Returns whether multiplexing of RTP data and control packets on a single port is supported as +/// specified by \xep{0167, Jingle RTP Sessions} and RFC 5761. +/// +/// \return whether multiplexing of RTP data and control packets is supported +/// +/// \since QXmpp 1.5 +/// +bool QXmppJingleIq::Content::isRtpMultiplexingSupported() const +{ + return d->isRtpMultiplexingSupported; +} + +/// +/// Sets whether multiplexing of RTP data and control packets on a single port is supported as +/// specified by \xep{0167, Jingle RTP Sessions} and RFC 5761. +/// +/// \param isRtpMultiplexingSupported whether multiplexing of RTP data and control packets is +/// supported +/// +/// \since QXmpp 1.5 +/// +void QXmppJingleIq::Content::setRtpMultiplexingSupported(bool isRtpMultiplexingSupported) +{ + d->isRtpMultiplexingSupported = isRtpMultiplexingSupported; +} + void QXmppJingleIq::Content::addPayloadType(const QXmppJinglePayloadType &payload) { d->descriptionType = ns_jingle_rtp; @@ -374,6 +403,7 @@ void QXmppJingleIq::Content::parse(const QDomElement &element) d->descriptionType = descriptionElement.namespaceURI(); d->descriptionMedia = descriptionElement.attribute(QStringLiteral("media")); d->descriptionSsrc = descriptionElement.attribute(QStringLiteral("ssrc")).toULong(); + d->isRtpMultiplexingSupported = !descriptionElement.firstChildElement(QStringLiteral("rtcp-mux")).isNull(); QDomElement child = descriptionElement.firstChildElement(QStringLiteral("payload-type")); while (!child.isNull()) { QXmppJinglePayloadType payload; @@ -424,6 +454,9 @@ void QXmppJingleIq::Content::toXml(QXmlStreamWriter *writer) const if (d->descriptionSsrc) { writer->writeAttribute(QStringLiteral("ssrc"), QString::number(d->descriptionSsrc)); } + if (d->isRtpMultiplexingSupported) { + writer->writeEmptyElement(QStringLiteral("rtcp-mux")); + } for (const auto &payload : d->payloadTypes) { payload.toXml(writer); } diff --git a/src/base/QXmppJingleIq.h b/src/base/QXmppJingleIq.h index be915787..cbb711d6 100644 --- a/src/base/QXmppJingleIq.h +++ b/src/base/QXmppJingleIq.h @@ -189,6 +189,9 @@ public: quint32 descriptionSsrc() const; void setDescriptionSsrc(quint32 ssrc); + bool isRtpMultiplexingSupported() const; + void setRtpMultiplexingSupported(bool isRtpMultiplexingSupported); + void addPayloadType(const QXmppJinglePayloadType &payload); QList<QXmppJinglePayloadType> payloadTypes() const; void setPayloadTypes(const QList<QXmppJinglePayloadType> &payloadTypes); |
