#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:
+ */