aboutsummaryrefslogtreecommitdiff
path: root/src/QXmppRtpChannel.h
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2010-11-14 23:36:52 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2010-11-14 23:36:52 +0000
commit7c973aa48165198f4b298b6a8670015d2e453bb2 (patch)
treeb4ac5ad0647f8faa9a2e6252fd7ca1c4a5a441ea /src/QXmppRtpChannel.h
parent83a329cbe139c9980167b9390fcabc1b851e1efc (diff)
downloadqxmpp-7c973aa48165198f4b298b6a8670015d2e453bb2.tar.gz
add QXmppRtpChannel class to move RTP handling out of QXmppCall
Diffstat (limited to 'src/QXmppRtpChannel.h')
-rw-r--r--src/QXmppRtpChannel.h93
1 files changed, 93 insertions, 0 deletions
diff --git a/src/QXmppRtpChannel.h b/src/QXmppRtpChannel.h
new file mode 100644
index 00000000..cb6b4c80
--- /dev/null
+++ b/src/QXmppRtpChannel.h
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2008-2010 The QXmpp developers
+ *
+ * Author:
+ * Jeremy Lainé
+ *
+ * Source:
+ * http://code.google.com/p/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 QXMPPRTPCHANNEL_H
+#define QXMPPRTPCHANNEL_H
+
+#include <QIODevice>
+
+#include "QXmppLogger.h"
+
+class QXmppCodec;
+class QXmppJinglePayloadType;
+class QXmppRtpChannelPrivate;
+
+/// \brief The QXmppRtpChannel class represents an RTP channel to a remote party.
+///
+/// It acts as a QIODevice so that you can read / write audio samples, for
+/// instance using a QAudioOutput and a QAudioInput.
+///
+/// \note THIS API IS NOT FINALIZED YET
+
+class QXmppRtpChannel : public QIODevice
+{
+ Q_OBJECT
+
+public:
+ enum CodecId {
+ G711u = 0,
+ GSM = 3,
+ G723 = 4,
+ G711a = 8,
+ G722 = 9,
+ L16Stereo = 10,
+ L16Mono = 11,
+ G728 = 15,
+ G729 = 18,
+ };
+
+ QXmppRtpChannel(QObject *parent = 0);
+ ~QXmppRtpChannel();
+
+ QXmppJinglePayloadType payloadType() const;
+ void setPayloadType(const QXmppJinglePayloadType &payloadType);
+
+ /// \cond
+ qint64 bytesAvailable() const;
+ bool isSequential() const;
+ /// \endcond
+
+signals:
+ /// This signal is emitted when a datagram needs to be sent.
+ void sendDatagram(const QByteArray &ba);
+
+ /// This signal is emitted to send logging messages.
+ void logMessage(QXmppLogger::MessageType type, const QString &msg);
+
+public slots:
+ void datagramReceived(const QByteArray &ba);
+
+protected:
+ /// \cond
+ qint64 readData(char * data, qint64 maxSize);
+ qint64 writeData(const char * data, qint64 maxSize);
+ /// \endcond
+
+private slots:
+ void emitSignals();
+
+private:
+ QXmppRtpChannelPrivate * const d;
+};
+
+#endif