* #27232: jni: added pjproject checkout as regular git content
We will remove it once the next release of pjsip (with Android support)
comes out and is merged into SFLphone.
diff --git a/jni/pjproject-android/.svn/pristine/03/0305e92d3c485401703405122af6b6fa43726134.svn-base b/jni/pjproject-android/.svn/pristine/03/0305e92d3c485401703405122af6b6fa43726134.svn-base
new file mode 100644
index 0000000..41344aa
--- /dev/null
+++ b/jni/pjproject-android/.svn/pristine/03/0305e92d3c485401703405122af6b6fa43726134.svn-base
@@ -0,0 +1,281 @@
+/* $Id$ */
+/*
+ * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
+ * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.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
+ */
+#ifndef __PJNATH_STUN_TRANSACTION_H__
+#define __PJNATH_STUN_TRANSACTION_H__
+
+/**
+ * @file stun_transaction.h
+ * @brief STUN transaction
+ */
+
+#include <pjnath/stun_msg.h>
+#include <pjnath/stun_config.h>
+#include <pj/lock.h>
+
+
+PJ_BEGIN_DECL
+
+
+/* **************************************************************************/
+/**
+ * @defgroup PJNATH_STUN_TRANSACTION STUN Client Transaction
+ * @brief STUN client transaction
+ * @ingroup PJNATH_STUN_BASE
+ * @{
+ *
+ The @ref PJNATH_STUN_TRANSACTION is used to manage outgoing STUN request,
+ for example to retransmit the request and to notify application about the
+ completion of the request.
+
+ The @ref PJNATH_STUN_TRANSACTION does not use any networking operations,
+ but instead application must supply the transaction with a callback to
+ be used by the transaction to send outgoing requests. This way the STUN
+ transaction is made more generic and can work with different types of
+ networking codes in application.
+
+
+ */
+
+/**
+ * Opaque declaration of STUN client transaction.
+ */
+typedef struct pj_stun_client_tsx pj_stun_client_tsx;
+
+/**
+ * STUN client transaction callback.
+ */
+typedef struct pj_stun_tsx_cb
+{
+ /**
+ * This callback is called when the STUN transaction completed.
+ *
+ * @param tsx The STUN transaction.
+ * @param status Status of the transaction. Status PJ_SUCCESS
+ * means that the request has received a successful
+ * response.
+ * @param response The STUN response, which value may be NULL if
+ * \a status is not PJ_SUCCESS.
+ * @param src_addr The source address of the response, if response
+ * is not NULL.
+ * @param src_addr_len The length of the source address.
+ */
+ void (*on_complete)(pj_stun_client_tsx *tsx,
+ pj_status_t status,
+ const pj_stun_msg *response,
+ const pj_sockaddr_t *src_addr,
+ unsigned src_addr_len);
+
+ /**
+ * This callback is called by the STUN transaction when it wants to send
+ * outgoing message.
+ *
+ * @param tsx The STUN transaction instance.
+ * @param stun_pkt The STUN packet to be sent.
+ * @param pkt_size Size of the STUN packet.
+ *
+ * @return If return value of the callback is not PJ_SUCCESS,
+ * the transaction will fail. Application MUST return
+ * PJNATH_ESTUNDESTROYED if it has destroyed the
+ * transaction in this callback.
+ */
+ pj_status_t (*on_send_msg)(pj_stun_client_tsx *tsx,
+ const void *stun_pkt,
+ pj_size_t pkt_size);
+
+ /**
+ * This callback is called after the timer that was scheduled by
+ * #pj_stun_client_tsx_schedule_destroy() has elapsed. Application
+ * should call #pj_stun_client_tsx_destroy() upon receiving this
+ * callback.
+ *
+ * This callback is optional if application will not call
+ * #pj_stun_client_tsx_schedule_destroy().
+ *
+ * @param tsx The STUN transaction instance.
+ */
+ void (*on_destroy)(pj_stun_client_tsx *tsx);
+
+} pj_stun_tsx_cb;
+
+
+
+/**
+ * Create an instance of STUN client transaction. The STUN client
+ * transaction is used to transmit outgoing STUN request and to
+ * ensure the reliability of the request by periodically retransmitting
+ * the request, if necessary.
+ *
+ * @param cfg The STUN endpoint, which will be used to retrieve
+ * various settings for the transaction.
+ * @param pool Pool to be used to allocate memory from.
+ * @param grp_lock Group lock to synchronize.
+ * @param cb Callback structure, to be used by the transaction
+ * to send message and to notify the application about
+ * the completion of the transaction.
+ * @param p_tsx Pointer to receive the transaction instance.
+ *
+ * @return PJ_SUCCESS on success, or the appropriate error code.
+ */
+PJ_DECL(pj_status_t) pj_stun_client_tsx_create( pj_stun_config *cfg,
+ pj_pool_t *pool,
+ pj_grp_lock_t *grp_lock,
+ const pj_stun_tsx_cb *cb,
+ pj_stun_client_tsx **p_tsx);
+
+/**
+ * Schedule timer to destroy the transaction after the transaction is
+ * complete. Application normally calls this function in the on_complete()
+ * callback. When this timer elapsed, the on_destroy() callback will be
+ * called.
+ *
+ * This is convenient to let the STUN transaction absorbs any response
+ * for the previous request retransmissions. If application doesn't want
+ * this, it can destroy the transaction immediately by calling
+ * #pj_stun_client_tsx_destroy().
+ *
+ * @param tsx The STUN transaction.
+ * @param delay The delay interval before on_destroy() callback
+ * is called.
+ *
+ * @return PJ_SUCCESS on success, or the appropriate error code.
+ */
+PJ_DECL(pj_status_t)
+pj_stun_client_tsx_schedule_destroy(pj_stun_client_tsx *tsx,
+ const pj_time_val *delay);
+
+
+/**
+ * Stop the client transaction.
+ *
+ * @param tsx The STUN transaction.
+ *
+ * @return PJ_SUCCESS on success or PJ_EINVAL if the parameter
+ * is NULL.
+ */
+PJ_DECL(pj_status_t) pj_stun_client_tsx_stop(pj_stun_client_tsx *tsx);
+
+
+/**
+ * Check if transaction has completed.
+ *
+ * @param tsx The STUN transaction.
+ *
+ * @return Non-zero if transaction has completed.
+ */
+PJ_DECL(pj_bool_t) pj_stun_client_tsx_is_complete(pj_stun_client_tsx *tsx);
+
+
+/**
+ * Associate an arbitrary data with the STUN transaction. This data
+ * can be then retrieved later from the transaction, by using
+ * pj_stun_client_tsx_get_data() function.
+ *
+ * @param tsx The STUN client transaction.
+ * @param data Application data to be associated with the
+ * STUN transaction.
+ *
+ * @return PJ_SUCCESS on success.
+ */
+PJ_DECL(pj_status_t) pj_stun_client_tsx_set_data(pj_stun_client_tsx *tsx,
+ void *data);
+
+
+/**
+ * Get the user data that was previously associated with the STUN
+ * transaction.
+ *
+ * @param tsx The STUN client transaction.
+ *
+ * @return The user data.
+ */
+PJ_DECL(void*) pj_stun_client_tsx_get_data(pj_stun_client_tsx *tsx);
+
+
+/**
+ * Start the STUN client transaction by sending STUN request using
+ * this transaction. If reliable transport such as TCP or TLS is used,
+ * the retransmit flag should be set to PJ_FALSE because reliablity
+ * will be assured by the transport layer.
+ *
+ * @param tsx The STUN client transaction.
+ * @param retransmit Should this message be retransmitted by the
+ * STUN transaction.
+ * @param pkt The STUN packet to send.
+ * @param pkt_len Length of STUN packet.
+ *
+ * @return PJ_SUCCESS on success, or PJNATH_ESTUNDESTROYED
+ * when the user has destroyed the transaction in
+ * \a on_send_msg() callback, or any other error code
+ * as returned by \a on_send_msg() callback.
+ */
+PJ_DECL(pj_status_t) pj_stun_client_tsx_send_msg(pj_stun_client_tsx *tsx,
+ pj_bool_t retransmit,
+ void *pkt,
+ unsigned pkt_len);
+
+/**
+ * Request to retransmit the request. Normally application should not need
+ * to call this function since retransmission would be handled internally,
+ * but this functionality is needed by ICE.
+ *
+ * @param tsx The STUN client transaction instance.
+ * @param mod_count Boolean flag to indicate whether transmission count
+ * needs to be incremented.
+ *
+ * @return PJ_SUCCESS on success, or PJNATH_ESTUNDESTROYED
+ * when the user has destroyed the transaction in
+ * \a on_send_msg() callback, or any other error code
+ * as returned by \a on_send_msg() callback.
+ */
+PJ_DECL(pj_status_t) pj_stun_client_tsx_retransmit(pj_stun_client_tsx *tsx,
+ pj_bool_t mod_count);
+
+
+/**
+ * Notify the STUN transaction about the arrival of STUN response.
+ * If the STUN response contains a final error (300 and greater), the
+ * transaction will be terminated and callback will be called. If the
+ * STUN response contains response code 100-299, retransmission
+ * will cease, but application must still call this function again
+ * with a final response later to allow the transaction to complete.
+ *
+ * @param tsx The STUN client transaction instance.
+ * @param msg The incoming STUN message.
+ * @param src_addr The source address of the packet.
+ * @param src_addr_len The length of the source address.
+ *
+ * @return PJ_SUCCESS on success or the appropriate error code.
+ */
+PJ_DECL(pj_status_t) pj_stun_client_tsx_on_rx_msg(pj_stun_client_tsx *tsx,
+ const pj_stun_msg *msg,
+ const pj_sockaddr_t*src_addr,
+ unsigned src_addr_len);
+
+
+/**
+ * @}
+ */
+
+
+PJ_END_DECL
+
+
+#endif /* __PJNATH_STUN_TRANSACTION_H__ */
+
diff --git a/jni/pjproject-android/.svn/pristine/03/03304eaa571a02ed2d10f77f6a4749d9020ef475.svn-base b/jni/pjproject-android/.svn/pristine/03/03304eaa571a02ed2d10f77f6a4749d9020ef475.svn-base
new file mode 100644
index 0000000..3bcbe2f
--- /dev/null
+++ b/jni/pjproject-android/.svn/pristine/03/03304eaa571a02ed2d10f77f6a4749d9020ef475.svn-base
@@ -0,0 +1,75 @@
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <speex/speex_jitter.h>
+#include <stdio.h>
+
+union jbpdata {
+ unsigned int idx;
+ unsigned char data[4];
+};
+
+void synthIn(JitterBufferPacket *in, int idx, int span) {
+ union jbpdata d;
+ d.idx = idx;
+
+ in->data = d.data;
+ in->len = sizeof(d);
+ in->timestamp = idx * 10;
+ in->span = span * 10;
+ in->sequence = idx;
+ in->user_data = 0;
+}
+
+void jitterFill(JitterBuffer *jb) {
+ char buffer[65536];
+ JitterBufferPacket in, out;
+ int i;
+
+ out.data = buffer;
+
+ jitter_buffer_reset(jb);
+
+ for(i=0;i<100;++i) {
+ synthIn(&in, i, 1);
+ jitter_buffer_put(jb, &in);
+
+ out.len = 65536;
+ if (jitter_buffer_get(jb, &out, 10, NULL) != JITTER_BUFFER_OK) {
+ printf("Fill test failed iteration %d\n", i);
+ }
+ if (out.timestamp != i * 10) {
+ printf("Fill test expected %d got %d\n", i*10, out.timestamp);
+ }
+ jitter_buffer_tick(jb);
+ }
+}
+
+int main()
+{
+ char buffer[65536];
+ JitterBufferPacket in, out;
+ int i;
+
+ JitterBuffer *jb = jitter_buffer_init(10);
+
+ out.data = buffer;
+
+ /* Frozen sender case */
+ jitterFill(jb);
+ for(i=0;i<100;++i) {
+ out.len = 65536;
+ jitter_buffer_get(jb, &out, 10, NULL);
+ jitter_buffer_tick(jb);
+ }
+ synthIn(&in, 100, 1);
+ jitter_buffer_put(jb, &in);
+ out.len = 65536;
+ if (jitter_buffer_get(jb, &out, 10, NULL) != JITTER_BUFFER_OK) {
+ printf("Failed frozen sender resynchronize\n");
+ } else {
+ printf("Frozen sender: Jitter %d\n", out.timestamp - 100*10);
+ }
+ return 0;
+}
diff --git a/jni/pjproject-android/.svn/pristine/03/03bb087b6caab17a6d14f04769c4dc61b1b44cd8.svn-base b/jni/pjproject-android/.svn/pristine/03/03bb087b6caab17a6d14f04769c4dc61b1b44cd8.svn-base
new file mode 100644
index 0000000..9214a65
--- /dev/null
+++ b/jni/pjproject-android/.svn/pristine/03/03bb087b6caab17a6d14f04769c4dc61b1b44cd8.svn-base
@@ -0,0 +1,255 @@
+/*
+ * srtp_priv.h
+ *
+ * private internal data structures and functions for libSRTP
+ *
+ * David A. McGrew
+ * Cisco Systems, Inc.
+ */
+/*
+ *
+ * Copyright (c) 2001-2006 Cisco Systems, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ *
+ * Neither the name of the Cisco Systems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#ifndef SRTP_PRIV_H
+#define SRTP_PRIV_H
+
+#include "srtp.h"
+#include "rdbx.h"
+#include "rdb.h"
+#include "integers.h"
+
+/*
+ * an srtp_hdr_t represents the srtp header
+ *
+ * in this implementation, an srtp_hdr_t is assumed to be 32-bit aligned
+ *
+ * (note that this definition follows that of RFC 1889 Appendix A, but
+ * is not identical)
+ */
+
+#ifdef _MSC_VER
+# pragma warning(push)
+# pragma warning(disable:4214) // bit field types other than int
+#endif
+
+#ifndef WORDS_BIGENDIAN
+
+/*
+ * srtp_hdr_t represents an RTP or SRTP header. The bit-fields in
+ * this structure should be declared "unsigned int" instead of
+ * "unsigned char", but doing so causes the MS compiler to not
+ * fully pack the bit fields.
+ */
+typedef struct {
+ unsigned char cc:4; /* CSRC count */
+ unsigned char x:1; /* header extension flag */
+ unsigned char p:1; /* padding flag */
+ unsigned char version:2; /* protocol version */
+ unsigned char pt:7; /* payload type */
+ unsigned char m:1; /* marker bit */
+ uint16_t seq; /* sequence number */
+ uint32_t ts; /* timestamp */
+ uint32_t ssrc; /* synchronization source */
+} srtp_hdr_t;
+
+#else /* BIG_ENDIAN */
+
+typedef struct {
+ unsigned char version:2; /* protocol version */
+ unsigned char p:1; /* padding flag */
+ unsigned char x:1; /* header extension flag */
+ unsigned char cc:4; /* CSRC count */
+ unsigned char m:1; /* marker bit */
+ unsigned pt:7; /* payload type */
+ uint16_t seq; /* sequence number */
+ uint32_t ts; /* timestamp */
+ uint32_t ssrc; /* synchronization source */
+} srtp_hdr_t;
+
+#endif
+
+
+typedef struct {
+ uint16_t profile_specific; /* profile-specific info */
+ uint16_t length; /* number of 32-bit words in extension */
+} srtp_hdr_xtnd_t;
+
+
+/*
+ * srtcp_hdr_t represents a secure rtcp header
+ *
+ * in this implementation, an srtcp header is assumed to be 32-bit
+ * alinged
+ */
+
+#ifndef WORDS_BIGENDIAN
+
+typedef struct {
+ unsigned char rc:5; /* reception report count */
+ unsigned char p:1; /* padding flag */
+ unsigned char version:2; /* protocol version */
+ unsigned char pt:8; /* payload type */
+ uint16_t len; /* length */
+ uint32_t ssrc; /* synchronization source */
+} srtcp_hdr_t;
+
+typedef struct {
+ unsigned int index:31; /* srtcp packet index in network order! */
+ unsigned int e:1; /* encrypted? 1=yes */
+ /* optional mikey/etc go here */
+ /* and then the variable-length auth tag */
+} srtcp_trailer_t;
+
+
+#else /* BIG_ENDIAN */
+
+typedef struct {
+ unsigned char version:2; /* protocol version */
+ unsigned char p:1; /* padding flag */
+ unsigned char rc:5; /* reception report count */
+ unsigned char pt:8; /* payload type */
+ uint16_t len; /* length */
+ uint32_t ssrc; /* synchronization source */
+} srtcp_hdr_t;
+
+typedef struct {
+ unsigned int version:2; /* protocol version */
+ unsigned int p:1; /* padding flag */
+ unsigned int count:5; /* varies by packet type */
+ unsigned int pt:8; /* payload type */
+ uint16_t length; /* len of uint32s of packet less header */
+} rtcp_common_t;
+
+typedef struct {
+ unsigned int e:1; /* encrypted? 1=yes */
+ unsigned int index:31; /* srtcp packet index */
+ /* optional mikey/etc go here */
+ /* and then the variable-length auth tag */
+} srtcp_trailer_t;
+
+#endif
+
+
+#ifdef _MSC_VER
+# pragma warning( pop )
+#endif
+
+
+/*
+ * the following declarations are libSRTP internal functions
+ */
+
+/*
+ * srtp_get_stream(ssrc) returns a pointer to the stream corresponding
+ * to ssrc, or NULL if no stream exists for that ssrc
+ */
+
+srtp_stream_t
+srtp_get_stream(srtp_t srtp, uint32_t ssrc);
+
+
+/*
+ * srtp_stream_init_keys(s, k) (re)initializes the srtp_stream_t s by
+ * deriving all of the needed keys using the KDF and the key k.
+ */
+
+
+err_status_t
+srtp_stream_init_keys(srtp_stream_t srtp, const void *key);
+
+/*
+ * libsrtp internal datatypes
+ */
+
+typedef enum direction_t {
+ dir_unknown = 0,
+ dir_srtp_sender = 1,
+ dir_srtp_receiver = 2
+} direction_t;
+
+/*
+ * an srtp_stream_t has its own SSRC, encryption key, authentication
+ * key, sequence number, and replay database
+ *
+ * note that the keys might not actually be unique, in which case the
+ * cipher_t and auth_t pointers will point to the same structures
+ */
+
+typedef struct srtp_stream_ctx_t {
+ uint32_t ssrc;
+ cipher_t *rtp_cipher;
+ auth_t *rtp_auth;
+ rdbx_t rtp_rdbx;
+ sec_serv_t rtp_services;
+ cipher_t *rtcp_cipher;
+ auth_t *rtcp_auth;
+ rdb_t rtcp_rdb;
+ sec_serv_t rtcp_services;
+ key_limit_ctx_t *limit;
+ direction_t direction;
+ struct srtp_stream_ctx_t *next; /* linked list of streams */
+} srtp_stream_ctx_t;
+
+
+/*
+ * an srtp_ctx_t holds a stream list and a service description
+ */
+
+typedef struct srtp_ctx_t {
+ srtp_stream_ctx_t *stream_list; /* linked list of streams */
+ srtp_stream_ctx_t *stream_template; /* act as template for other streams */
+} srtp_ctx_t;
+
+
+
+/*
+ * srtp_handle_event(srtp, srtm, evnt) calls the event handling
+ * function, if there is one.
+ *
+ * This macro is not included in the documentation as it is
+ * an internal-only function.
+ */
+
+#define srtp_handle_event(srtp, strm, evnt) \
+ if(srtp_event_handler) { \
+ srtp_event_data_t data; \
+ data.session = srtp; \
+ data.stream = strm; \
+ data.event = evnt; \
+ srtp_event_handler(&data); \
+}
+
+
+#endif /* SRTP_PRIV_H */
diff --git a/jni/pjproject-android/.svn/pristine/03/03dc61c64b6c9ae3751810c714fb40e58cabf313.svn-base b/jni/pjproject-android/.svn/pristine/03/03dc61c64b6c9ae3751810c714fb40e58cabf313.svn-base
new file mode 100644
index 0000000..9e357aa
--- /dev/null
+++ b/jni/pjproject-android/.svn/pristine/03/03dc61c64b6c9ae3751810c714fb40e58cabf313.svn-base
@@ -0,0 +1,29 @@
+/* $Id$ */
+/*
+ * Copyright (C) 2010-2011 Teluu Inc. (http://www.teluu.com)
+ *
+ * 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
+ */
+@interface ipjsystestAppDelegate : NSObject <UIApplicationDelegate> {
+
+ UIWindow *window;
+ UINavigationController *navigationController;
+}
+
+@property (nonatomic, retain) IBOutlet UIWindow *window;
+@property (nonatomic, retain) IBOutlet UINavigationController *navigationController;
+
+@end
+
diff --git a/jni/pjproject-android/.svn/pristine/03/03f7ef34c662c0a7adc10c20a7dcf4614ad0b13d.svn-base b/jni/pjproject-android/.svn/pristine/03/03f7ef34c662c0a7adc10c20a7dcf4614ad0b13d.svn-base
new file mode 100644
index 0000000..bc309dd
--- /dev/null
+++ b/jni/pjproject-android/.svn/pristine/03/03f7ef34c662c0a7adc10c20a7dcf4614ad0b13d.svn-base
Binary files differ