#13795: Initial commit for sflphone-android
includes: libexpat libyaml libdbus-c++ commoncpp ccrtp
libdbus (from android-4.0.4 sources)
TODO:
- git ignores "/jni/sflphone", sflphone repo should be cloned.
- sflphone-android only needs daemon directory. Ideally it should be possible
to clone it without cloning the whole sflphone project.
into sfl-android (commit 6a0fa7a "#13961: Fix cipher handling" has been used here)
- add pjsip-android project as a git submodule
- sflphone-android needs pjsip android project. Ideally daemon git repository
should not embed pjsip. Instead pjsip should be clone from official repositories.
Considering this, structure should have three distincts git repos:
sflphone-android/.git
sflphone-android/jni/ccrtp-1.8.0-android
sflphone-android/jni/commoncpp2-1.8.1-android
sflphone-android/jni/dbus
sflphone-android/jni/libdbus-c++-0.9.0-android
sflphone-android/jni/libexpat
sflphone-android/jni/libyaml
sflphone-android/jni/sflphone-daemon/.git
sflphone-android/jni/sflphone-daemon/src/audio
sflphone-android/jni/sflphone-daemon/src/config
sflphone-android/jni/sflphone-daemon/src/dbus
sflphone-android/jni/sflphone-daemon/src/history
sflphone-android/jni/sflphone-daemon/src/hooks
sflphone-android/jni/sflphone-daemon/src/iax
sflphone-android/jni/sflphone-daemon/src/sip
sflphone-android/jni/sflphone-daemon/src/video
sflphone-android/jni/pjsip-android/.git
Signed-off-by: Emeric Vigier <emeric.vigier@savoirfairelinux.com>
diff --git a/jni/ccrtp-1.8.0-android/src/ccrtp/queuebase.h b/jni/ccrtp-1.8.0-android/src/ccrtp/queuebase.h
new file mode 100644
index 0000000..9c2611b
--- /dev/null
+++ b/jni/ccrtp-1.8.0-android/src/ccrtp/queuebase.h
@@ -0,0 +1,349 @@
+// Copyright (C) 2001,2002,2004 Federico Montesino Pouzols <fedemp@altern.org>.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program 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 General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free software
+// library without restriction. Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License. This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+//
+// This exception applies only to the code released under the name GNU
+// ccRTP. If you copy code from other releases into a copy of GNU
+// ccRTP, as the General Public License permits, the exception does
+// not apply to the code that you add in this way. To avoid misleading
+// anyone as to the status of such modified files, you must delete
+// this exception notice from them.
+//
+// If you write modifications of your own for GNU ccRTP, it is your choice
+// whether to permit this exception to apply to your modifications.
+// If you do not wish that, delete this exception notice.
+//
+
+/**
+ * @file queuebase.h
+ *
+ * @short Base classes for RTP queues.
+ **/
+
+#ifndef CCXX_RTP_QUEUEBASE_H_
+#define CCXX_RTP_QUEUEBASE_H_
+
+#include <cc++/pointer.h>
+#include <ccrtp/rtppkt.h>
+#include <ccrtp/sources.h>
+
+#ifdef CCXX_NAMESPACES
+namespace ost {
+#endif
+
+/**
+ * @defgroup queuebase Base classes for RTP queues.
+ * @{
+ **/
+
+/**
+ * @class AppDataUnit
+ * @short Interface (envelope) to data received over RTP packets.
+ *
+ * A class of objects representing data transmitted over RTP packets.
+ * Tipically, this object will apply to received data. Data blocks
+ * received via RTP connections as well as its related objects
+ * (source, etc), are accessed through the methods of this class.
+ *
+ * @author Federico Montesino Pouzols <fedemp@altern.org>
+ **/
+class __EXPORT AppDataUnit
+{
+public:
+ AppDataUnit(const IncomingRTPPkt& packet, const SyncSource& src);
+
+ inline ~AppDataUnit()
+ { }
+
+ /**
+ * @param src the AppDataUnit object being copied
+ */
+ AppDataUnit(const AppDataUnit& src);
+
+ /**
+ * Assignment operator
+ *
+ * @param source the AppDataUnit object being assigned @return
+ * the result of the assignment
+ */
+ AppDataUnit&
+ operator=(const AppDataUnit& source);
+
+ /**
+ * @return type of this data
+ */
+ inline PayloadType
+ getType() const
+ { return datablock->getPayloadType(); }
+
+ /**
+ * Get data as it is received in RTP packets (i.e. for
+ * multi-octet encodings, octets are in network
+ * order.
+ *
+ * @return Raw pointer to data block.
+ **/
+ inline const uint8* const
+ getData() const
+ { return datablock->getPayload(); }
+
+ /**
+ * @return length of data in octets
+ **/
+ size_t
+ getSize() const
+ { return datablock->getPayloadSize(); }
+
+ /**
+ * @return Source that sent this data
+ */
+ inline const SyncSource&
+ getSource() const
+ { return *source; }
+
+ /**
+ * Is this data unit marked?.
+ *
+ * @return true if marked.
+ **/
+ inline bool
+ isMarked() const
+ { return datablock->isMarked(); }
+
+ /**
+ * Get data unit sequence number.
+ **/
+ inline uint16
+ getSeqNum() const
+ { return datablock->getSeqNum(); }
+
+ /**
+ * Get the number of contributing sources in the CSRC list.
+ **/
+ inline uint8
+ getContributorsCount() const
+ { return (uint8)datablock->getCSRCsCount(); }
+
+ /**
+ * Get the array of 32-bit CSRC identifiers.
+ *
+ * @return NULL if (getContributorsCount() == 0)
+ **/
+ inline const uint32*
+ getContributorsID() const
+ { return datablock->getCSRCs(); }
+
+private:
+ Pointer<const IncomingRTPPkt> datablock;
+ const SyncSource* source;
+};
+
+/**
+ * @class RTPQueueBase
+ *
+ * A virtual base class for RTP queue hierarchies.
+ *
+ * @author Federico Montesino Pouzols <fedemp@altern.org>
+ **/
+class __EXPORT RTPQueueBase
+{
+public:
+ /**
+ * Set the payload format in use, for timing and payload type
+ * identification purposes.
+ *
+ * @param pf payload format to use from now on.
+ * @return whether the payload format has been successfully set.
+ **/
+ inline bool
+ setPayloadFormat(const PayloadFormat& pf)
+ {
+ currentPayloadType = pf.getPayloadType();
+ currentRTPClockRate = pf.getRTPClockRate();
+ return true;
+ }
+
+ inline uint32 getLocalSSRC() const
+ { return localSSRC; }
+
+ /**
+ * Get the clock rate in RTP clock units (for instance, 8000
+ * units per second for PCMU, or 90000 units per second for
+ * MP2T). This value depends on what payload format has been
+ * selected using setPayloadFormat().
+ *
+ * @return clock rate in RTP clock units.
+ **/
+ inline uint32 getCurrentRTPClockRate() const
+ { return currentRTPClockRate; }
+
+ inline PayloadType getCurrentPayloadType() const
+ { return currentPayloadType; }
+
+ inline timeval getInitialTime() const
+ { return initialTime; }
+
+protected:
+ /**
+ * @param ssrc If not null, the local SSRC identifier for this
+ * session.
+ **/
+ RTPQueueBase(uint32 *ssrc = NULL);
+
+ inline void setLocalSSRC(uint32 ssrc)
+ { localSSRC = ssrc; localSSRCNetwork = htonl(ssrc); }
+
+ inline uint32 getLocalSSRCNetwork() const
+ { return localSSRCNetwork; }
+
+ virtual
+ ~RTPQueueBase()
+ { }
+
+ /**
+ * A plugin point for posting of BYE messages.
+ *
+ * @param - reason to leave the RTP session.
+ * @return number of octets sent.
+ **/
+ inline virtual size_t
+ dispatchBYE(const std::string&)
+ { return 0; }
+
+ inline virtual void
+ renewLocalSSRC()
+ { }
+
+private:
+ // local SSRC 32-bit identifier
+ uint32 localSSRC;
+ // SSRC in network byte order
+ uint32 localSSRCNetwork;
+ // RTP clock rate for the current payload type.
+ uint32 currentRTPClockRate;
+ // Current payload type set for outgoing packets and expected
+ // from incoming packets.
+ PayloadType currentPayloadType;
+ // when the queue is created
+ timeval initialTime;
+};
+
+/**
+ * @class OutgoingDataQueueBase
+ *
+ * @author Federico Montesino Pouzols <fedemp@altern.org>
+ **/
+class __EXPORT OutgoingDataQueueBase:
+ public virtual RTPQueueBase
+{
+public:
+ inline size_t
+ getDefaultMaxSendSegmentSize()
+ { return defaultMaxSendSegmentSize;}
+
+ /**
+ * Set maximum payload segment size before fragmenting sends.
+ *
+ * @param size Maximum payload size.
+ * @return Whether segment size was successfully set.
+ **/
+ inline void
+ setMaxSendSegmentSize(size_t size)
+ { maxSendSegmentSize = size; }
+
+ inline size_t
+ getMaxSendSegmentSize()
+ { return maxSendSegmentSize; }
+
+protected:
+ OutgoingDataQueueBase();
+
+ inline virtual
+ ~OutgoingDataQueueBase()
+ { }
+
+private:
+ static const size_t defaultMaxSendSegmentSize;
+ // maximum packet size before fragmenting sends.
+ size_t maxSendSegmentSize;
+};
+
+/**
+ * @class IncomingDataQueueBase
+ *
+ * @author Federico Montesino Pouzols <fedemp@altern.org>
+ **/
+class __EXPORT IncomingDataQueueBase:
+ public virtual RTPQueueBase
+{
+public:
+ inline size_t getDefaultMaxRecvPacketSize() const
+ { return defaultMaxRecvPacketSize; }
+
+ inline size_t
+ getMaxRecvPacketSize() const
+ { return maxRecvPacketSize; }
+
+ /**
+ * @param maxsize maximum length of received RTP data packets,
+ * in octets. Defaults to the value returned by
+ * getDefaultMaxRecvPacketSize().
+ *
+ * @note This method sets a filter for incoming
+ * packets. Setting higher values does not necessarily imply
+ * higher memory usage (this method does not set any buffer
+ * size).
+ **/
+ inline void
+ setMaxRecvPacketSize(size_t maxsize)
+ { maxRecvPacketSize = maxsize; }
+
+protected:
+ IncomingDataQueueBase()
+ { setMaxRecvPacketSize(getDefaultMaxRecvPacketSize()); }
+
+ inline virtual
+ ~IncomingDataQueueBase()
+ { }
+
+private:
+ static const size_t defaultMaxRecvPacketSize;
+ // filter value for received packets length.
+ size_t maxRecvPacketSize;
+};
+
+/** @}*/ // queuebase
+
+#ifdef CCXX_NAMESPACES
+}
+#endif
+
+#endif //CCXX_RTP_QUEUEBASE_H_
+
+/** EMACS **
+ * Local variables:
+ * mode: c++
+ * c-basic-offset: 8
+ * End:
+ */