aboutsummaryrefslogtreecommitdiff
path: root/src/QXmppRtpChannel.h
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2012-02-08 12:51:15 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2012-02-08 12:51:15 +0000
commitdeb9d6cb53057ca8b90d10d6a3bdc5dcfd1b3ee4 (patch)
treed956bad28e28aadc3c83dbf88b3eddb5e1d9a9f4 /src/QXmppRtpChannel.h
parente8a1ad0cc608f12874ba4bafbd8282fa537ec9fb (diff)
downloadqxmpp-deb9d6cb53057ca8b90d10d6a3bdc5dcfd1b3ee4.tar.gz
move files common to client/server into "base"
Diffstat (limited to 'src/QXmppRtpChannel.h')
-rw-r--r--src/QXmppRtpChannel.h289
1 files changed, 0 insertions, 289 deletions
diff --git a/src/QXmppRtpChannel.h b/src/QXmppRtpChannel.h
deleted file mode 100644
index 0af6596c..00000000
--- a/src/QXmppRtpChannel.h
+++ /dev/null
@@ -1,289 +0,0 @@
-/*
- * Copyright (C) 2008-2011 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 <QSize>
-
-#include "QXmppJingleIq.h"
-#include "QXmppLogger.h"
-
-class QXmppCodec;
-class QXmppJinglePayloadType;
-class QXmppRtpAudioChannelPrivate;
-class QXmppRtpVideoChannelPrivate;
-
-/// \brief The QXmppRtpPacket class represents an RTP packet.
-///
-
-class QXmppRtpPacket
-{
-public:
- bool decode(const QByteArray &ba);
- QByteArray encode() const;
- QString toString() const;
-
- quint8 version;
- bool marker;
- quint8 type;
- quint32 ssrc;
- QList<quint32> csrc;
- quint16 sequence;
- quint32 stamp;
- QByteArray payload;
-};
-
-class QXmppRtpChannel
-{
-public:
- QXmppRtpChannel();
-
- virtual void close() = 0;
- virtual QIODevice::OpenMode openMode() const = 0;
- QList<QXmppJinglePayloadType> localPayloadTypes();
- void setRemotePayloadTypes(const QList<QXmppJinglePayloadType> &remotePayloadTypes);
-
-protected:
- virtual void payloadTypesChanged();
-
- QList<QXmppJinglePayloadType> m_incomingPayloadTypes;
- QList<QXmppJinglePayloadType> m_outgoingPayloadTypes;
- bool m_outgoingPayloadNumbered;
-};
-
-/// \brief The QXmppRtpAudioChannel class represents an RTP audio 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 QXmppRtpAudioChannel : public QIODevice, public QXmppRtpChannel
-{
- Q_OBJECT
- Q_ENUMS(Tone)
-
-public:
- /// This enum is used to describe a DTMF tone.
- enum Tone {
- Tone_0 = 0, ///< Tone for the 0 key.
- Tone_1, ///< Tone for the 1 key.
- Tone_2, ///< Tone for the 2 key.
- Tone_3, ///< Tone for the 3 key.
- Tone_4, ///< Tone for the 4 key.
- Tone_5, ///< Tone for the 5 key.
- Tone_6, ///< Tone for the 6 key.
- Tone_7, ///< Tone for the 7 key.
- Tone_8, ///< Tone for the 8 key.
- Tone_9, ///< Tone for the 9 key.
- Tone_Star, ///< Tone for the * key.
- Tone_Pound, ///< Tone for the # key.
- Tone_A, ///< Tone for the A key.
- Tone_B, ///< Tone for the B key.
- Tone_C, ///< Tone for the C key.
- Tone_D ///< Tone for the D key.
- };
-
- QXmppRtpAudioChannel(QObject *parent = 0);
- ~QXmppRtpAudioChannel();
-
- QXmppJinglePayloadType payloadType() const;
-
- /// \cond
- qint64 bytesAvailable() const;
- void close();
- bool isSequential() const;
- QIODevice::OpenMode openMode() const;
- qint64 pos() const;
- bool seek(qint64 pos);
- /// \endcond
-
-signals:
- /// \brief This signal is emitted when a datagram needs to be sent.
- void sendDatagram(const QByteArray &ba);
-
- /// \brief This signal is emitted to send logging messages.
- void logMessage(QXmppLogger::MessageType type, const QString &msg);
-
-public slots:
- void datagramReceived(const QByteArray &ba);
- void startTone(QXmppRtpAudioChannel::Tone tone);
- void stopTone(QXmppRtpAudioChannel::Tone tone);
-
-protected:
- /// \cond
- void debug(const QString &message)
- {
- emit logMessage(QXmppLogger::DebugMessage, qxmpp_loggable_trace(message));
- }
-
- void warning(const QString &message)
- {
- emit logMessage(QXmppLogger::WarningMessage, qxmpp_loggable_trace(message));
- }
-
- void logReceived(const QString &message)
- {
- emit logMessage(QXmppLogger::ReceivedMessage, qxmpp_loggable_trace(message));
- }
-
- void logSent(const QString &message)
- {
- emit logMessage(QXmppLogger::SentMessage, qxmpp_loggable_trace(message));
- }
-
- void payloadTypesChanged();
- qint64 readData(char * data, qint64 maxSize);
- qint64 writeData(const char * data, qint64 maxSize);
- /// \endcond
-
-private slots:
- void emitSignals();
- void writeDatagram();
-
-private:
- friend class QXmppRtpAudioChannelPrivate;
- QXmppRtpAudioChannelPrivate * d;
-};
-
-/// \brief The QXmppVideoFrame class provides a representation of a frame of video data.
-///
-/// \note THIS API IS NOT FINALIZED YET
-
-class QXmppVideoFrame
-{
-public:
- enum PixelFormat {
- Format_Invalid = 0,
- Format_RGB32 = 3,
- Format_RGB24 = 4,
- Format_YUV420P = 18,
- Format_UYVY = 20,
- Format_YUYV = 21,
- };
-
- QXmppVideoFrame();
- QXmppVideoFrame(int bytes, const QSize &size, int bytesPerLine, PixelFormat format);
- uchar *bits();
- const uchar *bits() const;
- int bytesPerLine() const;
- int height() const;
- bool isValid() const;
- int mappedBytes() const;
- PixelFormat pixelFormat() const;
- QSize size() const;
- int width() const;
-
-private:
- int m_bytesPerLine;
- QByteArray m_data;
- int m_height;
- int m_mappedBytes;
- PixelFormat m_pixelFormat;
- int m_width;
-};
-
-class QXmppVideoFormat
-{
-public:
- int frameHeight() const {
- return m_frameSize.height();
- }
-
- int frameWidth() const {
- return m_frameSize.width();
- }
-
- qreal frameRate() const {
- return m_frameRate;
- }
-
- void setFrameRate(qreal frameRate) {
- m_frameRate = frameRate;
- }
-
- QSize frameSize() const {
- return m_frameSize;
- }
-
- void setFrameSize(const QSize &frameSize) {
- m_frameSize = frameSize;
- }
-
- QXmppVideoFrame::PixelFormat pixelFormat() const {
- return m_pixelFormat;
- }
-
- void setPixelFormat(QXmppVideoFrame::PixelFormat pixelFormat) {
- m_pixelFormat = pixelFormat;
- }
-
-private:
- qreal m_frameRate;
- QSize m_frameSize;
- QXmppVideoFrame::PixelFormat m_pixelFormat;
-};
-
-
-/// \brief The QXmppRtpVideoChannel class represents an RTP video channel to a remote party.
-///
-/// \note THIS API IS NOT FINALIZED YET
-
-class QXmppRtpVideoChannel : public QXmppLoggable, public QXmppRtpChannel
-{
- Q_OBJECT
-
-public:
- QXmppRtpVideoChannel(QObject *parent = 0);
- ~QXmppRtpVideoChannel();
-
- // incoming stream
- QXmppVideoFormat decoderFormat() const;
- QList<QXmppVideoFrame> readFrames();
-
- // outgoing stream
- QXmppVideoFormat encoderFormat() const;
- void setEncoderFormat(const QXmppVideoFormat &format);
- void writeFrame(const QXmppVideoFrame &frame);
-
- QIODevice::OpenMode openMode() const;
- void close();
-
-signals:
- /// \brief This signal is emitted when a datagram needs to be sent.
- void sendDatagram(const QByteArray &ba);
-
-public slots:
- void datagramReceived(const QByteArray &ba);
-
-protected:
- void payloadTypesChanged();
-
-private:
- friend class QXmppRtpVideoChannelPrivate;
- QXmppRtpVideoChannelPrivate * d;
-};
-
-#endif