QXmpp  Version: 1.15.1
QXmppJingleData.h
1 // SPDX-FileCopyrightText: 2010 Jeremy Lainé <jeremy.laine@m4x.org>
2 // SPDX-FileCopyrightText: 2022 Melvin Keskin <melvo@olomono.de>
3 // SPDX-FileCopyrightText: 2023 Tibor Csötönyi <work@taibsu.de>
4 //
5 // SPDX-License-Identifier: LGPL-2.1-or-later
6 
7 #ifndef QXMPPJINGLEIQ_H
8 #define QXMPPJINGLEIQ_H
9 
10 #include "QXmppConstants_p.h"
11 #include "QXmppIq.h"
12 
13 #include <variant>
14 
15 #include <QHostAddress>
16 
17 class QXmppJingleCandidatePrivate;
18 class QXmppJingleRtpDescriptionPrivate;
19 class QXmppJingleIqContentPrivate;
20 class QXmppJingleIqReasonPrivate;
21 class QXmppJingleIqPrivate;
22 class QXmppJinglePayloadTypePrivate;
23 class QXmppJingleRtpCryptoElementPrivate;
24 class QXmppJingleRtpEncryptionPrivate;
25 class QXmppJingleRtpFeedbackPropertyPrivate;
26 class QXmppJingleRtpHeaderExtensionPropertyPrivate;
27 class QXmppSdpParameterPrivate;
28 class QXmppJingleMessageInitiationElementPrivate;
29 class QXmppCallInviteElementPrivate;
30 
31 class QXMPP_EXPORT QXmppSdpParameter
32 {
33 public:
35 
36  QXMPP_PRIVATE_DECLARE_RULE_OF_SIX(QXmppSdpParameter)
37 
38  QString name() const;
39  void setName(const QString &name);
40 
41  QString value() const;
42  void setValue(const QString &value);
43 
45  void parse(const QDomElement &element);
46  void toXml(QXmlStreamWriter *writer) const;
48 
49  static bool isSdpParameter(const QDomElement &element);
50 
51 private:
52  QSharedDataPointer<QXmppSdpParameterPrivate> d;
53 };
54 
55 class QXMPP_EXPORT QXmppJingleRtpCryptoElement
56 {
57 public:
59 
60  QXMPP_PRIVATE_DECLARE_RULE_OF_SIX(QXmppJingleRtpCryptoElement)
61 
62  uint32_t tag() const;
63  void setTag(uint32_t tag);
64 
65  QString cryptoSuite() const;
66  void setCryptoSuite(const QString &cryptoSuite);
67 
68  QString keyParams() const;
69  void setKeyParams(const QString &keyParams);
70 
71  QString sessionParams() const;
72  void setSessionParams(const QString &sessionParams);
73 
75  static constexpr std::tuple XmlTag = { u"crypto", QXmpp::Private::ns_jingle_rtp };
76  void parse(const QDomElement &element);
77  void toXml(QXmlStreamWriter *writer) const;
79 
80  static bool isJingleRtpCryptoElement(const QDomElement &element);
81 
82 private:
83  QSharedDataPointer<QXmppJingleRtpCryptoElementPrivate> d;
84 };
85 
86 class QXMPP_EXPORT QXmppJingleRtpEncryption
87 {
88 public:
90 
91  QXMPP_PRIVATE_DECLARE_RULE_OF_SIX(QXmppJingleRtpEncryption)
92 
93  bool isRequired() const;
94  void setRequired(bool isRequired);
95 
96  QVector<QXmppJingleRtpCryptoElement> cryptoElements() const;
97  void setCryptoElements(const QVector<QXmppJingleRtpCryptoElement> &cryptoElements);
98 
100  static constexpr std::tuple XmlTag = { u"encryption", QXmpp::Private::ns_jingle_rtp };
101  void parse(const QDomElement &element);
102  void toXml(QXmlStreamWriter *writer) const;
104 
105  static bool isJingleRtpEncryption(const QDomElement &element);
106 
107 private:
108  QSharedDataPointer<QXmppJingleRtpEncryptionPrivate> d;
109 };
110 
112 {
113 public:
115  QXmppJingleRtpFeedbackProperty(const QString &type, const QString &subtype = {});
116  QXMPP_PRIVATE_DECLARE_RULE_OF_SIX(QXmppJingleRtpFeedbackProperty)
117 
118  QString type() const;
119  void setType(const QString &type);
120 
121  QString subtype() const;
122  void setSubtype(const QString &subtype);
123 
124  QVector<QXmppSdpParameter> parameters() const;
125  void setParameters(const QVector<QXmppSdpParameter> &parameters);
126 
128  static constexpr std::tuple XmlTag = { u"rtcp-fb", QXmpp::Private::ns_jingle_rtcp_fb };
129  void parse(const QDomElement &element);
130  void toXml(QXmlStreamWriter *writer) const;
132 
133  static bool isJingleRtpFeedbackProperty(const QDomElement &element);
134 
135 private:
136  QSharedDataPointer<QXmppJingleRtpFeedbackPropertyPrivate> d;
137 };
138 
140 {
141 public:
143 
144  QXMPP_PRIVATE_DECLARE_RULE_OF_SIX(QXmppJingleRtpFeedbackInterval)
145 
146  uint64_t value() const;
147  void setValue(uint64_t value);
148 
150  static constexpr std::tuple XmlTag = { u"rtcp-fb-trr-int", QXmpp::Private::ns_jingle_rtcp_fb };
151  void parse(const QDomElement &element);
152  void toXml(QXmlStreamWriter *writer) const;
154 
155  static bool isJingleRtpFeedbackInterval(const QDomElement &element);
156 
157 private:
158  uint64_t m_value;
159 };
160 
162 {
163 public:
164  enum Senders {
170  Responder
171  };
172 
174  QXmppJingleRtpHeaderExtensionProperty(const QString &uri, uint32_t id);
175  QXMPP_PRIVATE_DECLARE_RULE_OF_SIX(QXmppJingleRtpHeaderExtensionProperty)
176 
177  uint32_t id() const;
178  void setId(uint32_t id);
179 
180  QString uri() const;
181  void setUri(const QString &uri);
182 
183  Senders senders() const;
184  void setSenders(Senders senders);
185 
186  QVector<QXmppSdpParameter> parameters() const;
187  void setParameters(const QVector<QXmppSdpParameter> &parameters);
188 
190  static constexpr std::tuple XmlTag = { u"rtp-hdrext", QXmpp::Private::ns_jingle_rtp_hdrext };
191  void parse(const QDomElement &element);
192  void toXml(QXmlStreamWriter *writer) const;
194 
195  static bool isJingleRtpHeaderExtensionProperty(const QDomElement &element);
196 
197 private:
198  QSharedDataPointer<QXmppJingleRtpHeaderExtensionPropertyPrivate> d;
199 };
200 
205 class QXMPP_EXPORT QXmppJinglePayloadType
206 {
207 public:
211 
212  unsigned char channels() const;
213  void setChannels(unsigned char channels);
214 
215  unsigned int clockrate() const;
216  void setClockrate(unsigned int clockrate);
217 
218  unsigned char id() const;
219  void setId(unsigned char id);
220 
221  unsigned int maxptime() const;
222  void setMaxptime(unsigned int maxptime);
223 
224  QString name() const;
225  void setName(const QString &name);
226 
227  QMap<QString, QString> parameters() const;
228  void setParameters(const QMap<QString, QString> &parameters);
229 
230  unsigned int ptime() const;
231  void setPtime(unsigned int ptime);
232 
233  QVector<QXmppJingleRtpFeedbackProperty> rtpFeedbackProperties() const;
234  void setRtpFeedbackProperties(const QVector<QXmppJingleRtpFeedbackProperty> &rtpFeedbackProperties);
235 
236  QVector<QXmppJingleRtpFeedbackInterval> rtpFeedbackIntervals() const;
237  void setRtpFeedbackIntervals(const QVector<QXmppJingleRtpFeedbackInterval> &rtpFeedbackIntervals);
238 
240  static constexpr std::tuple XmlTag = { u"payload-type", QXmpp::Private::ns_jingle_rtp };
241  void parse(const QDomElement &element);
242  void toXml(QXmlStreamWriter *writer) const;
244 
245  QXmppJinglePayloadType &operator=(const QXmppJinglePayloadType &other);
246  bool operator==(const QXmppJinglePayloadType &other) const;
247 
248 private:
249  QSharedDataPointer<QXmppJinglePayloadTypePrivate> d;
250 };
251 
252 class QXMPP_EXPORT QXmppJingleRtpDescription
253 {
254 public:
256  QXmppJingleRtpDescription(const QString &media, quint32 ssrc = 0, const QList<QXmppJinglePayloadType> &payloadTypes = {});
257  QXMPP_PRIVATE_DECLARE_RULE_OF_SIX(QXmppJingleRtpDescription)
258 
259  QString media() const;
260  void setMedia(const QString &media);
261 
262  quint32 ssrc() const;
263  void setSsrc(quint32 ssrc);
264 
265  void addPayloadType(const QXmppJinglePayloadType &payload);
266  const QList<QXmppJinglePayloadType> &payloadTypes() const;
267  void setPayloadTypes(const QList<QXmppJinglePayloadType> &payloadTypes);
268 
270  static constexpr std::tuple XmlTag = { u"description", QXmpp::Private::ns_jingle_rtp };
271  void parse(const QDomElement &element);
272  void toXml(QXmlStreamWriter *writer) const;
274 
275 private:
276  QSharedDataPointer<QXmppJingleRtpDescriptionPrivate> d;
277 };
278 
279 #if QXMPP_DEPRECATED_SINCE(1, 11)
281 #endif
282 
287 class QXMPP_EXPORT QXmppJingleCandidate
288 {
289 public:
291  enum Type {
293  PeerReflexiveType,
294  ServerReflexiveType,
296  RelayedType
298  };
300 
305 
306  QXmppJingleCandidate &operator=(const QXmppJingleCandidate &other);
308 
309  int component() const;
310  void setComponent(int component);
311 
312  QString foundation() const;
313  void setFoundation(const QString &foundation);
314 
315  int generation() const;
316  void setGeneration(int generation);
317 
318  QHostAddress host() const;
319  void setHost(const QHostAddress &host);
320 
321  QString id() const;
322  void setId(const QString &id);
323 
324  int network() const;
325  void setNetwork(int network);
326 
327  quint16 port() const;
328  void setPort(quint16 port);
329 
330  int priority() const;
331  void setPriority(int priority);
332 
333  QString protocol() const;
334  void setProtocol(const QString &protocol);
335 
336  QXmppJingleCandidate::Type type() const;
337  void setType(QXmppJingleCandidate::Type);
338 
339  bool isNull() const;
340 
342  static constexpr std::tuple XmlTag = { u"candidate", QXmpp::Private::ns_jingle_ice_udp };
343  void parse(const QDomElement &element);
344  void toXml(QXmlStreamWriter *writer) const;
346 
347 private:
348  QSharedDataPointer<QXmppJingleCandidatePrivate> d;
349 };
350 
351 class QXMPP_EXPORT QXmppJingleReason
352 {
353 public:
355  enum Type {
356  None,
395  UnsupportedTransports
396  };
397 
406  CryptoRequired
407  };
408 
410  QXmppJingleReason(Type, const QString &, std::optional<RtpErrorCondition>);
411  QXMPP_PRIVATE_DECLARE_RULE_OF_SIX(QXmppJingleReason)
412 
413  QString text() const;
414  void setText(const QString &text);
415 
416  Type type() const;
417  void setType(Type type);
418 
419  RtpErrorCondition rtpErrorCondition() const;
420  void setRtpErrorCondition(RtpErrorCondition rtpErrorCondition);
421 
423  static constexpr std::tuple XmlTag = { u"reason", QXmpp::Private::ns_jingle };
424  void parse(const QDomElement &element);
425  void toXml(QXmlStreamWriter *writer) const;
427 
428 private:
429  QSharedDataPointer<QXmppJingleIqReasonPrivate> d;
430 };
431 
438 class QXMPP_EXPORT QXmppJingleIq : public QXmppIq
439 {
440 public:
442  enum Action {
443  ContentAccept,
444  ContentAdd,
445  ContentModify,
446  ContentReject,
447  ContentRemove,
448  DescriptionInfo,
449  SecurityInfo,
450  SessionAccept,
451  SessionInfo,
452  SessionInitiate,
453  SessionTerminate,
454  TransportAccept,
455  TransportInfo,
456  TransportReject,
457  TransportReplace,
458  };
459 
460  enum Creator {
464  Responder
465  };
466 
473  bool isMute;
477  QString name;
478  };
480 
481  using RtpSessionState = std::variant<RtpSessionStateActive, RtpSessionStateHold, RtpSessionStateUnhold, RtpSessionStateMuting, RtpSessionStateRinging>;
482 
485 
491  class QXMPP_EXPORT Content
492  {
493  public:
494  Content();
495  Content(const QXmppJingleIq::Content &other);
496  Content(QXmppJingleIq::Content &&);
497  ~Content();
498 
499  Content &operator=(const Content &other);
500  Content &operator=(Content &&);
501 
502  QString creator() const;
503  void setCreator(const QString &creator);
504 
505  QString name() const;
506  void setName(const QString &name);
507 
508  QString senders() const;
509  void setSenders(const QString &senders);
510 
511  // XEP-0167: Jingle RTP Sessions
512  QXmppJingleRtpDescription description() const;
513  void setDescription(const QXmppJingleRtpDescription &description);
514 
515 #if QXMPP_DEPRECATED_SINCE(1, 6)
516  QString descriptionMedia() const;
517  void setDescriptionMedia(const QString &media);
518 
519  quint32 descriptionSsrc() const;
520  void setDescriptionSsrc(quint32 ssrc);
521 
522  void addPayloadType(const QXmppJinglePayloadType &payload);
523  QList<QXmppJinglePayloadType> payloadTypes() const;
524  void setPayloadTypes(const QList<QXmppJinglePayloadType> &payloadTypes);
525 #endif
526 
527  bool isRtpMultiplexingSupported() const;
528  void setRtpMultiplexingSupported(bool isRtpMultiplexingSupported);
529 
530  std::optional<QXmppJingleRtpEncryption> rtpEncryption() const;
531  void setRtpEncryption(const std::optional<QXmppJingleRtpEncryption> &rtpEncryption);
532 
533  void addTransportCandidate(const QXmppJingleCandidate &candidate);
534  QList<QXmppJingleCandidate> transportCandidates() const;
535  void setTransportCandidates(const QList<QXmppJingleCandidate> &candidates);
536 
537  QString transportUser() const;
538  void setTransportUser(const QString &user);
539 
540  QString transportPassword() const;
541  void setTransportPassword(const QString &password);
542 
543  QVector<QXmppJingleRtpFeedbackProperty> rtpFeedbackProperties() const;
544  void setRtpFeedbackProperties(const QVector<QXmppJingleRtpFeedbackProperty> &rtpFeedbackProperties);
545 
546  QVector<QXmppJingleRtpFeedbackInterval> rtpFeedbackIntervals() const;
547  void setRtpFeedbackIntervals(const QVector<QXmppJingleRtpFeedbackInterval> &rtpFeedbackIntervals);
548 
549  QVector<QXmppJingleRtpHeaderExtensionProperty> rtpHeaderExtensionProperties() const;
550  void setRtpHeaderExtensionProperties(const QVector<QXmppJingleRtpHeaderExtensionProperty> &rtpHeaderExtensionProperties);
551 
552  bool isRtpHeaderExtensionMixingAllowed() const;
553  void setRtpHeaderExtensionMixingAllowed(bool isRtpHeaderExtensionMixingAllowed);
554 
555  // XEP-0320: Use of DTLS-SRTP in Jingle Sessions
556  QByteArray transportFingerprint() const;
557  void setTransportFingerprint(const QByteArray &fingerprint);
558 
559  QString transportFingerprintHash() const;
560  void setTransportFingerprintHash(const QString &hash);
561 
562  QString transportFingerprintSetup() const;
563  void setTransportFingerprintSetup(const QString &setup);
564 
566  static constexpr std::tuple XmlTag = { u"content", QXmpp::Private::ns_jingle };
567  void parse(const QDomElement &element);
568  void toXml(QXmlStreamWriter *writer) const;
569 
570  bool parseSdp(const QString &sdp);
571  QString toSdp() const;
573 
574  private:
575  QSharedDataPointer<QXmppJingleIqContentPrivate> d;
576  };
577 
578  QXmppJingleIq();
579  QXmppJingleIq(const QXmppJingleIq &other);
581  ~QXmppJingleIq() override;
582 
583  QXmppJingleIq &operator=(const QXmppJingleIq &other);
584  QXmppJingleIq &operator=(QXmppJingleIq &&);
585 
586  Action action() const;
587  void setAction(Action action);
588 
589  void addContent(const Content &content);
590  QList<Content> contents() const;
591  void setContents(const QList<Content> &contents);
592 
593  QString initiator() const;
594  void setInitiator(const QString &initiator);
595 
596  std::optional<QXmppJingleReason> actionReason() const;
597  void setActionReason(const std::optional<QXmppJingleReason> &);
598 
599 #if QXMPP_DEPRECATED_SINCE(1, 11)
600  [[deprecated("Use actionReason() instead.")]]
601  QXmppJingleReason &reason();
602  [[deprecated("Use actionReason() instead.")]]
603  const QXmppJingleReason &reason() const;
604 #endif
605 
606  QString responder() const;
607  void setResponder(const QString &responder);
608 
609 #if QXMPP_DEPRECATED_SINCE(1, 5)
610  QT_DEPRECATED_X("Use QXmpp::rtpSessionState() instead")
611  bool ringing() const;
612  QT_DEPRECATED_X("Use QXmpp::setRtpSessionState() instead")
613  void setRinging(bool ringing);
614 #endif
615 
616  QString sid() const;
617  void setSid(const QString &sid);
618 
619  QString mujiGroupChatJid() const;
620  void setMujiGroupChatJid(const QString &mujiGroupChatJid);
621 
622  std::optional<RtpSessionState> rtpSessionState() const;
623  void setRtpSessionState(const std::optional<RtpSessionState> &rtpSessionState);
624 
626  static constexpr std::tuple<QStringView, QStringView> PayloadXmlTag = { u"jingle", QXmpp::Private::ns_jingle };
627  [[deprecated("Use QXmpp::isIqType()")]]
628  static bool isJingleIq(const QDomElement &element);
630 
631 protected:
633  void parseElementFromChild(const QDomElement &element) override;
634  void toXmlElementFromChild(QXmlStreamWriter *writer) const override;
636 
637 private:
638  QSharedDataPointer<QXmppJingleIqPrivate> d;
639 };
640 
642 {
643 public:
644  enum class Type {
645  None,
646  Propose,
647  Ringing,
648  Proceed,
649  Reject,
650  Retract,
651  Finish
652  };
653 
655  QXMPP_PRIVATE_DECLARE_RULE_OF_SIX(QXmppJingleMessageInitiationElement)
656 
657  Type type() const;
658  void setType(Type type);
659 
660  QString id() const;
661  void setId(const QString &id);
662 
663  std::optional<QXmppJingleRtpDescription> description() const;
664  void setDescription(std::optional<QXmppJingleRtpDescription> description);
665  QList<QXmppJingleRtpDescription> descriptions() const;
666  void setDescriptions(const QList<QXmppJingleRtpDescription> &descriptions);
667 
668  std::optional<QXmppJingleReason> reason() const;
669  void setReason(std::optional<QXmppJingleReason> reason);
670 
671  bool containsTieBreak() const;
672  void setContainsTieBreak(bool containsTieBreak);
673 
674  QString migratedTo() const;
675  void setMigratedTo(const QString &migratedTo);
676 
678  void parse(const QDomElement &element);
679  void toXml(QXmlStreamWriter *writer) const;
681 
682  static bool isJingleMessageInitiationElement(const QDomElement &);
683 
684 private:
685  QSharedDataPointer<QXmppJingleMessageInitiationElementPrivate> d;
686 };
687 
688 class QXMPP_EXPORT QXmppCallInviteElement
689 {
690 public:
691  enum class Type {
692  None,
693  Invite,
694  Retract,
695  Accept,
696  Reject,
697  Left
698  };
699 
700  struct Jingle {
701  QString sid;
702  std::optional<QString> jid;
703 
704  bool operator==(const Jingle &other) const { return other.sid == sid && other.jid == jid; }
705 
706  void parse(const QDomElement &element);
707  void toXml(QXmlStreamWriter *writer) const;
708  };
709 
710  struct External {
711  QString uri;
712 
713  bool operator==(const External &other) const { return other.uri == uri; }
714 
715  static constexpr std::tuple XmlTag = { u"external", QXmpp::Private::ns_call_invites };
716  void parse(const QDomElement &el);
717  void toXml(QXmlStreamWriter *writer) const;
718  };
719 
721  QXMPP_PRIVATE_DECLARE_RULE_OF_SIX(QXmppCallInviteElement)
722 
723  Type type() const;
724  void setType(Type type);
725 
726  QString id() const;
727  void setId(const QString &id);
728 
729  bool audio() const;
730  void setAudio(bool audio);
731 
732  bool video() const;
733  void setVideo(bool video);
734 
735  std::optional<Jingle> jingle() const;
736  void setJingle(std::optional<Jingle> jingle);
737 
738  std::optional<QVector<External>> external() const;
739  void setExternal(std::optional<QVector<External>> external);
740 
742  void parse(const QDomElement &element);
743  void toXml(QXmlStreamWriter *writer) const;
745 
746  static bool isCallInviteElement(const QDomElement &);
747 
748 private:
749  QSharedDataPointer<QXmppCallInviteElementPrivate> d;
750 };
751 
752 Q_DECLARE_METATYPE(QXmppJingleReason::RtpErrorCondition)
753 
754 #endif
The initiator wishes to formally cancel the session initiation request.
Definition: QXmppJingleData.h:364
The action is related to a violation of local security policies.
Definition: QXmppJingleData.h:386
Definition: QXmppJingleData.h:468
The action is related to a non-specific application error.
Definition: QXmppJingleData.h:377
The QXmppJingleIq class represents an IQ used for initiating media sessions as specified by XEP-0166:...
Definition: QXmppJingleData.h:438
Represents a description for XEP-0167: Jingle RTP Sessions, including media type, streaming source...
Definition: QXmppJingleData.h:252
The party wishes to formally decline the session.
Definition: QXmppJingleData.h:368
The party is busy and cannot accept a session.
Definition: QXmppJingleData.h:362
The QXmppJingleRtpEncryption class represents the XEP-0167: Jingle RTP Sessions "encryption" element ...
Definition: QXmppJingleData.h:86
The QXmppJingleRtpHeaderExtensionProperty class represents the XEP-0294: Jingle RTP Header Extensions...
Definition: QXmppJingleData.h:161
Action
This enum is used to describe a Jingle action.
Definition: QXmppJingleData.h:442
The QXmppCallInviteElement class represents a Call Invite element as specified by XEP-0482: Call Invi...
Definition: QXmppJingleData.h:688
The QXmppJinglePayloadType class represents a payload type as specified by XEP-0167: Jingle RTP Sessi...
Definition: QXmppJingleData.h:205
Creator
Definition: QXmppJingleData.h:460
Definition: QXmppJingleData.h:360
The initiator and the sender are allowed.
Definition: QXmppJingleData.h:166
Type
This enum is used to describe a reason&#39;s type.
Definition: QXmppJingleData.h:355
The entity is going offline or is no longer available.
Definition: QXmppJingleData.h:379
A request has not been answered so the sender is timing out the request.
Definition: QXmppJingleData.h:391
The QXmppJingleRtpFeedbackInterval class represents the XEP-0293: Jingle RTP Feedback Negotiation "rt...
Definition: QXmppJingleData.h:139
Definition: QXmppJingleData.h:467
Host candidate, a local address/port.
Definition: QXmppJingleData.h:292
Definition: QXmppJingleData.h:351
Definition: QXmppJingleData.h:470
The QXmppJingleRtpCryptoElement class represents the XEP-0167: Jingle RTP Sessions "crypto" element u...
Definition: QXmppJingleData.h:55
QString name
Session to be muted (e.g., only audio or video)
Definition: QXmppJingleData.h:477
Definition: QXmppJingleData.h:389
Definition: QXmppJingleData.h:479
The action is related to media processing problems.
Definition: QXmppJingleData.h:384
The party has been unable to initialize processing related to the application type.
Definition: QXmppJingleData.h:373
The action is related to connectivity problems.
Definition: QXmppJingleData.h:366
Type
Definition: QXmppJingleData.h:691
Type
This enum is used to describe a candidate&#39;s type.
Definition: QXmppJingleData.h:291
There is no error condition.
Definition: QXmppJingleData.h:402
bool isMute
Definition: QXmppJingleData.h:473
The QXmppIq class is the base class for all IQs.
Definition: QXmppIq.h:22
The initiator generated the content type.
Definition: QXmppJingleData.h:462
Definition: QXmppJingleData.h:371
std::variant< RtpSessionStateActive, RtpSessionStateHold, RtpSessionStateUnhold, RtpSessionStateMuting, RtpSessionStateRinging > RtpSessionState
Definition: QXmppJingleData.h:481
The QXmppJingleCandidate class represents a transport candidate as specified by XEP-0176: Jingle ICE-...
Definition: QXmppJingleData.h:287
Creator creator
Creator of the corresponding session.
Definition: QXmppJingleData.h:475
The encryption offer is rejected.
Definition: QXmppJingleData.h:404
The QXmppJingleMessageInitiationElement class represents a Jingle Message Initiation element as speci...
Definition: QXmppJingleData.h:641
Only the initiator is allowed.
Definition: QXmppJingleData.h:168
Definition: QXmppJingleData.h:469
Senders
Definition: QXmppJingleData.h:164
Action
Definition: QXmppExternalService.h:28
The QXmppJingleRtpFeedbackProperty class represents the XEP-0293: Jingle RTP Feedback Negotiation "rt...
Definition: QXmppJingleData.h:111
The party supports none of the offered application types.
Definition: QXmppJingleData.h:393
RtpErrorCondition
Definition: QXmppJingleData.h:400
Type
Definition: QXmppJingleData.h:644
The party has been unable to establish connectivity for the transport method.
Definition: QXmppJingleData.h:375
The QXmppSdpParameter class represents a Session Description Protocol (SDP) parameter specified by RF...
Definition: QXmppJingleData.h:31
Definition: QXmppJingleData.h:382