aboutsummaryrefslogtreecommitdiff
path: root/src/client/QXmppCallStream_p.h
diff options
context:
space:
mode:
authorNiels Ole Salscheider <niels_ole@salscheider-online.de>2019-05-17 14:30:02 -0700
committerLNJ <lnj@kaidan.im>2020-03-16 22:22:59 +0100
commit90036fc2cf5918c028f043edff7f5d38d1efb4cc (patch)
tree4818d8c4e6ec3778e2dd8a2e356faf1b9e062902 /src/client/QXmppCallStream_p.h
parentc67ccc6d939b8f1efd118f92baea997fe1b7f1a6 (diff)
downloadqxmpp-90036fc2cf5918c028f043edff7f5d38d1efb4cc.tar.gz
Port QXmppCallManager to use GStreamer
Diffstat (limited to 'src/client/QXmppCallStream_p.h')
-rw-r--r--src/client/QXmppCallStream_p.h103
1 files changed, 103 insertions, 0 deletions
diff --git a/src/client/QXmppCallStream_p.h b/src/client/QXmppCallStream_p.h
new file mode 100644
index 00000000..568460da
--- /dev/null
+++ b/src/client/QXmppCallStream_p.h
@@ -0,0 +1,103 @@
+/*
+ * Copyright (C) 2008-2020 The QXmpp developers
+ *
+ * Authors:
+ * Niels Ole Salscheider
+ *
+ * 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 QXMPPCALLSTREAM_P_H
+#define QXMPPCALLSTREAM_P_H
+
+#include "QXmppCall_p.h"
+#include "QXmppJingleIq.h"
+
+#include <gst/gst.h>
+
+#include <QList>
+#include <QObject>
+#include <QString>
+
+class QXmppIceConnection;
+
+// W A R N I N G
+// -------------
+//
+// This file is not part of the QXmpp API.
+// This header file may change from version to version without notice,
+// or even be removed.
+//
+// We mean it.
+//
+
+static const int RTP_COMPONENT = 1;
+static const int RTCP_COMPONENT = 2;
+
+static const QLatin1String AUDIO_MEDIA("audio");
+static const QLatin1String VIDEO_MEDIA("video");
+
+class QXmppCallStreamPrivate : public QObject
+{
+ Q_OBJECT
+
+public:
+ QXmppCallStreamPrivate(QXmppCallStream *parent, GstElement *pipeline_, GstElement *rtpbin_,
+ QString media_, QString creator_, QString name_, int id_);
+ ~QXmppCallStreamPrivate();
+
+ GstFlowReturn sendDatagram(GstElement *appsink, int component);
+ void datagramReceived(const QByteArray &datagram, GstElement *appsrc);
+
+ void addEncoder(QXmppCallPrivate::GstCodec &codec);
+ void addDecoder(GstPad *pad, QXmppCallPrivate::GstCodec &codec);
+ void addRtpSender(GstPad *pad);
+ void addRtcpSender(GstPad *pad);
+
+ QXmppCallStream *q;
+
+ quint32 localSsrc;
+
+ GstElement *pipeline;
+ GstElement *rtpbin;
+ GstPad *sendPad;
+ GstPad *receivePad;
+ GstPad *internalReceivePad;
+ GstPad *internalRtpPad;
+ GstPad *internalRtcpPad;
+ GstElement *encoderBin;
+ GstElement *decoderBin;
+ GstElement *iceReceiveBin;
+ GstElement *iceSendBin;
+ GstElement *apprtpsrc;
+ GstElement *apprtcpsrc;
+ GstElement *apprtpsink;
+ GstElement *apprtcpsink;
+
+ void (*sendPadCB)(GstPad *);
+ void (*receivePadCB)(GstPad *);
+
+ QXmppIceConnection *connection;
+ QString media;
+ QString creator;
+ QString name;
+ int id;
+
+ QList<QXmppJinglePayloadType> payloadTypes;
+};
+
+#endif