* #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/e2/e262a3af372a41bb8987d07fb54500a7ba283949.svn-base b/jni/pjproject-android/.svn/pristine/e2/e262a3af372a41bb8987d07fb54500a7ba283949.svn-base
new file mode 100644
index 0000000..b3daa0a
--- /dev/null
+++ b/jni/pjproject-android/.svn/pristine/e2/e262a3af372a41bb8987d07fb54500a7ba283949.svn-base
@@ -0,0 +1,71 @@
+/* $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 __PJLIB_UTIL_H__
+#define __PJLIB_UTIL_H__
+
+/**
+ * @file pjlib-util.h
+ * @brief pjlib-util.h
+ */
+
+/* Base */
+#include <pjlib-util/errno.h>
+#include <pjlib-util/types.h>
+
+/* Getopt */
+#include <pjlib-util/getopt.h>
+
+/* Crypto */
+#include <pjlib-util/base64.h>
+#include <pjlib-util/crc32.h>
+#include <pjlib-util/hmac_md5.h>
+#include <pjlib-util/hmac_sha1.h>
+#include <pjlib-util/md5.h>
+#include <pjlib-util/sha1.h>
+
+/* DNS and resolver */
+#include <pjlib-util/dns.h>
+#include <pjlib-util/resolver.h>
+#include <pjlib-util/srv_resolver.h>
+
+/* Simple DNS server */
+#include <pjlib-util/dns_server.h>
+
+/* Text scanner */
+#include <pjlib-util/scanner.h>
+
+/* XML */
+#include <pjlib-util/xml.h>
+
+/* Old STUN */
+#include <pjlib-util/stun_simple.h>
+
+/* PCAP */
+#include <pjlib-util/pcap.h>
+
+/* HTTP */
+#include <pjlib-util/http_client.h>
+
+/** CLI **/
+#include <pjlib-util/cli.h>
+#include <pjlib-util/cli_console.h>
+#include <pjlib-util/cli_telnet.h>
+
+#endif /* __PJLIB_UTIL_H__ */
diff --git a/jni/pjproject-android/.svn/pristine/e2/e2733a55e61941ab3b3606a2157c3673d51ef5d3.svn-base b/jni/pjproject-android/.svn/pristine/e2/e2733a55e61941ab3b3606a2157c3673d51ef5d3.svn-base
new file mode 100644
index 0000000..6343e33
--- /dev/null
+++ b/jni/pjproject-android/.svn/pristine/e2/e2733a55e61941ab3b3606a2157c3673d51ef5d3.svn-base
@@ -0,0 +1,107 @@
+/* $Id$ */
+/*
+ * Copyright (C) 2008-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
+ */
+
+/**
+@defgroup PJNATH_ICE ICE: Interactive Connectivity Establishment
+@brief Interactive Connectivity Establishment (ICE)
+@ingroup PJNATH
+*/
+
+/**
+@defgroup PJNATH_ICE_STREAM_TRANSPORT ICE stream transport
+@brief Transport for media streams using ICE
+@ingroup PJNATH_ICE
+ */
+
+/**
+@defgroup PJNATH_ICE_SESSION ICE Session
+@brief Transport Independent ICE Session
+@ingroup PJNATH_ICE
+ */
+
+/**
+@addtogroup PJNATH_ICE
+\section org Library organizations
+
+See <b>Table of Contents</b> below.
+
+\section ice_intro_sec Introduction to ICE
+
+Interactive Connectivity Establishment (ICE) is the ultimate
+weapon a client can have in its NAT traversal solution arsenals,
+as it promises that if there is indeed one path for two clients
+to communicate, then ICE will find this path. And if there are
+more than one paths which the clients can communicate, ICE will
+use the best/most efficient one.
+
+ICE works by combining several protocols (such as STUN and TURN)
+altogether and offering several candidate paths for the communication,
+thereby maximising the chance of success, but at the same time also
+has the capability to prioritize the candidates, so that the more
+expensive alternative (namely relay) will only be used as the last
+resort when else fails. ICE negotiation process involves several
+stages:
+
+ - candidate gathering, where the client finds out all the possible
+ addresses that it can use for the communication. It may find
+ three types of candidates: host candidate to represent its
+ physical NICs, server reflexive candidate for the address that
+ has been resolved from STUN, and relay candidate for the address
+ that the client has allocated from a TURN relay.
+ - prioritizing these candidates. Typically the relay candidate will
+ have the lowest priority to use since it's the most expensive.
+ - encoding these candidates, sending it to remote peer, and
+ negotiating it with offer-answer.
+ - pairing the candidates, where it pairs every local candidates
+ with every remote candidates that it receives from the remote peer.
+ - checking the connectivity for each candidate pairs.
+ - concluding the result. Since every possible path combinations are
+ checked, if there is a path to communicate ICE will find it.
+
+
+\section icestrans_sec Using ICE transport
+
+The \ref PJNATH_ICE_STREAM_TRANSPORT is a ready to use object which
+performs the above ICE operations as well as provides application with
+interface to send and receive data using the negotiated path.
+
+Please see \ref PJNATH_ICE_STREAM_TRANSPORT on how to use this object.
+
+
+\section ice_owntransport_sec Creating custom ICE transport
+
+If the \ref PJNATH_ICE_STREAM_TRANSPORT is not suitable for use
+for some reason, you will need to implement your own ICE transport,
+by combining the \ref PJNATH_ICE_SESSION with your own means to
+send and receive packets. The \ref PJNATH_ICE_STREAM_TRANSPORT
+provides the best example on how to do this.
+
+
+\section ice_samples_sec Samples
+
+The \ref ice_demo_sample sample demonstrates how to use
+\ref PJNATH_ICE_STREAM_TRANSPORT <b>without</b> using signaling
+protocol such as <b>SIP</b>. It provides interactive user interface
+to create and manage the ICE sessions as well as to exchange SDP
+with another ice_demo instance.
+
+Also see <b>\ref samples_page</b> for other samples.
+ */
+
+
diff --git a/jni/pjproject-android/.svn/pristine/e2/e276f74a8d3f22146bd7af31537d18448f507d22.svn-base b/jni/pjproject-android/.svn/pristine/e2/e276f74a8d3f22146bd7af31537d18448f507d22.svn-base
new file mode 100644
index 0000000..275d2da
--- /dev/null
+++ b/jni/pjproject-android/.svn/pristine/e2/e276f74a8d3f22146bd7af31537d18448f507d22.svn-base
@@ -0,0 +1,127 @@
+/* $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
+ */
+#include "test.h"
+
+#define THIS_FILE "test.c"
+
+#define DO_TEST(test) do { \
+ PJ_LOG(3, (THIS_FILE, "Running %s...", #test)); \
+ rc = test; \
+ PJ_LOG(3, (THIS_FILE, \
+ "%s(%d)", \
+ (rc ? "..ERROR" : "..success"), rc)); \
+ if (rc!=0) goto on_return; \
+ } while (0)
+
+
+pj_pool_factory *mem;
+
+
+void app_perror(pj_status_t status, const char *msg)
+{
+ char errbuf[PJ_ERR_MSG_SIZE];
+
+ pjmedia_strerror(status, errbuf, sizeof(errbuf));
+
+ PJ_LOG(3,(THIS_FILE, "%s: %s", msg, errbuf));
+}
+
+/* Force linking PLC stuff if G.711 is disabled. See:
+ * https://trac.pjsip.org/repos/ticket/1337
+ */
+#if PJMEDIA_HAS_G711_CODEC==0
+int dummy()
+{
+ // Dummy
+ return (int) &pjmedia_plc_save;
+}
+#endif
+
+int test_main(void)
+{
+ int rc = 0;
+ pj_caching_pool caching_pool;
+ pj_pool_t *pool;
+
+ pj_init();
+ pj_caching_pool_init(&caching_pool, &pj_pool_factory_default_policy, 0);
+ pool = pj_pool_create(&caching_pool.factory, "test", 1000, 512, NULL);
+
+ pj_log_set_decor(PJ_LOG_HAS_NEWLINE);
+ pj_log_set_level(3);
+
+ mem = &caching_pool.factory;
+
+#if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0)
+ pjmedia_video_format_mgr_create(pool, 64, 0, NULL);
+ pjmedia_converter_mgr_create(pool, NULL);
+ pjmedia_event_mgr_create(pool, 0, NULL);
+ pjmedia_vid_codec_mgr_create(pool, NULL);
+#endif
+
+#if HAS_VID_PORT_TEST
+ DO_TEST(vid_port_test());
+#endif
+
+#if HAS_VID_DEV_TEST
+ DO_TEST(vid_dev_test());
+#endif
+
+#if HAS_VID_CODEC_TEST
+ DO_TEST(vid_codec_test());
+#endif
+
+#if HAS_SDP_NEG_TEST
+ DO_TEST(sdp_neg_test());
+#endif
+ //DO_TEST(sdp_test (&caching_pool.factory));
+ //DO_TEST(rtp_test(&caching_pool.factory));
+ //DO_TEST(session_test (&caching_pool.factory));
+#if HAS_JBUF_TEST
+ DO_TEST(jbuf_main());
+#endif
+#if HAS_MIPS_TEST
+ DO_TEST(mips_test());
+#endif
+#if HAS_CODEC_VECTOR_TEST
+ DO_TEST(codec_test_vectors());
+#endif
+
+ PJ_LOG(3,(THIS_FILE," "));
+
+on_return:
+ if (rc != 0) {
+ PJ_LOG(3,(THIS_FILE,"Test completed with error(s)!"));
+ } else {
+ PJ_LOG(3,(THIS_FILE,"Looks like everything is okay!"));
+ }
+
+#if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0)
+ pjmedia_video_format_mgr_destroy(pjmedia_video_format_mgr_instance());
+ pjmedia_converter_mgr_destroy(pjmedia_converter_mgr_instance());
+ pjmedia_event_mgr_destroy(pjmedia_event_mgr_instance());
+ pjmedia_vid_codec_mgr_destroy(pjmedia_vid_codec_mgr_instance());
+#endif
+
+ pj_pool_release(pool);
+ pj_caching_pool_destroy(&caching_pool);
+
+ return rc;
+}
diff --git a/jni/pjproject-android/.svn/pristine/e2/e277776d3f1e3e9f1ab38f2c0014caad814442e2.svn-base b/jni/pjproject-android/.svn/pristine/e2/e277776d3f1e3e9f1ab38f2c0014caad814442e2.svn-base
new file mode 100644
index 0000000..56d03dc
--- /dev/null
+++ b/jni/pjproject-android/.svn/pristine/e2/e277776d3f1e3e9f1ab38f2c0014caad814442e2.svn-base
@@ -0,0 +1,28 @@
+# $Id$
+import inc_sip as sip
+import inc_sdp as sdp
+
+sdp = \
+"""
+v=0
+o=- 0 0 IN IP4 127.0.0.1
+s=tester
+c=IN IP4 127.0.0.1
+t=0 0
+m=audio 4000 RTP/AVP 0 101
+a=rtpmap:0 PCMU/8000
+a=sendrecv
+a=rtpmap:101 telephone-event/8000
+a=fmtp:101 0-15
+a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:WnD7c1ksDGs+dIefCEo8omPg4uO8DYIinNGL5yxQ
+a=crypto:2 AES_CM_128_HMAC_SHA1_32 inline:t0r0/apkukU7JjjfR0mY8GEimBq4OiPEm9eKSFOx
+"""
+
+args = "--null-audio --auto-answer 200 --max-calls 1 --use-srtp 2 --srtp-secure 0"
+include = []
+exclude = []
+
+sendto_cfg = sip.SendtoCfg( "Callee has SRTP mandatory and receive RTP/AVP with crypto, should reject the call",
+ pjsua_args=args, sdp=sdp, resp_code=488,
+ resp_inc=include, resp_exc=exclude)
+
diff --git a/jni/pjproject-android/.svn/pristine/e2/e27911259f4a34058472c1f443b690567fdcd4f5.svn-base b/jni/pjproject-android/.svn/pristine/e2/e27911259f4a34058472c1f443b690567fdcd4f5.svn-base
new file mode 100644
index 0000000..d86866d
--- /dev/null
+++ b/jni/pjproject-android/.svn/pristine/e2/e27911259f4a34058472c1f443b690567fdcd4f5.svn-base
@@ -0,0 +1,129 @@
+/* $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 __PJLIB_TEST_H__
+#define __PJLIB_TEST_H__
+
+#include <pj/types.h>
+
+#define GROUP_LIBC 1
+#define GROUP_OS 1
+#define GROUP_DATA_STRUCTURE 1
+#define GROUP_NETWORK 1
+#if defined(PJ_SYMBIAN)
+# define GROUP_FILE 0
+#else
+# define GROUP_FILE 1
+#endif
+
+#define INCLUDE_ERRNO_TEST GROUP_LIBC
+#define INCLUDE_TIMESTAMP_TEST GROUP_OS
+#define INCLUDE_EXCEPTION_TEST GROUP_LIBC
+#define INCLUDE_RAND_TEST GROUP_LIBC
+#define INCLUDE_LIST_TEST GROUP_DATA_STRUCTURE
+#define INCLUDE_HASH_TEST GROUP_DATA_STRUCTURE
+#define INCLUDE_POOL_TEST GROUP_LIBC
+#define INCLUDE_POOL_PERF_TEST GROUP_LIBC
+#define INCLUDE_STRING_TEST GROUP_DATA_STRUCTURE
+#define INCLUDE_FIFOBUF_TEST 0 // GROUP_DATA_STRUCTURE
+#define INCLUDE_RBTREE_TEST GROUP_DATA_STRUCTURE
+#define INCLUDE_TIMER_TEST GROUP_DATA_STRUCTURE
+#define INCLUDE_ATOMIC_TEST GROUP_OS
+#define INCLUDE_MUTEX_TEST (PJ_HAS_THREADS && GROUP_OS)
+#define INCLUDE_SLEEP_TEST GROUP_OS
+#define INCLUDE_OS_TEST GROUP_OS
+#define INCLUDE_THREAD_TEST (PJ_HAS_THREADS && GROUP_OS)
+#define INCLUDE_SOCK_TEST GROUP_NETWORK
+#define INCLUDE_SOCK_PERF_TEST GROUP_NETWORK
+#define INCLUDE_SELECT_TEST GROUP_NETWORK
+#define INCLUDE_UDP_IOQUEUE_TEST GROUP_NETWORK
+#define INCLUDE_TCP_IOQUEUE_TEST GROUP_NETWORK
+#define INCLUDE_ACTIVESOCK_TEST GROUP_NETWORK
+#define INCLUDE_SSLSOCK_TEST (PJ_HAS_SSL_SOCK && GROUP_NETWORK)
+#define INCLUDE_IOQUEUE_PERF_TEST (PJ_HAS_THREADS && GROUP_NETWORK)
+#define INCLUDE_IOQUEUE_UNREG_TEST (PJ_HAS_THREADS && GROUP_NETWORK)
+#define INCLUDE_FILE_TEST GROUP_FILE
+
+#define INCLUDE_ECHO_SERVER 0
+#define INCLUDE_ECHO_CLIENT 0
+
+
+#define ECHO_SERVER_MAX_THREADS 2
+#define ECHO_SERVER_START_PORT 65000
+#define ECHO_SERVER_ADDRESS "compaq.home"
+#define ECHO_SERVER_DURATION_MSEC (60*60*1000)
+
+#define ECHO_CLIENT_MAX_THREADS 6
+
+PJ_BEGIN_DECL
+
+extern int errno_test(void);
+extern int timestamp_test(void);
+extern int exception_test(void);
+extern int rand_test(void);
+extern int list_test(void);
+extern int hash_test(void);
+extern int os_test(void);
+extern int pool_test(void);
+extern int pool_perf_test(void);
+extern int string_test(void);
+extern int fifobuf_test(void);
+extern int timer_test(void);
+extern int rbtree_test(void);
+extern int atomic_test(void);
+extern int mutex_test(void);
+extern int sleep_test(void);
+extern int thread_test(void);
+extern int sock_test(void);
+extern int sock_perf_test(void);
+extern int select_test(void);
+extern int udp_ioqueue_test(void);
+extern int udp_ioqueue_unreg_test(void);
+extern int tcp_ioqueue_test(void);
+extern int ioqueue_perf_test(void);
+extern int activesock_test(void);
+extern int file_test(void);
+extern int ssl_sock_test(void);
+
+extern int echo_server(void);
+extern int echo_client(int sock_type, const char *server, int port);
+
+extern int echo_srv_sync(void);
+extern int udp_echo_srv_ioqueue(void);
+extern int echo_srv_common_loop(pj_atomic_t *bytes_counter);
+
+
+extern pj_pool_factory *mem;
+
+extern int test_main(void);
+extern void app_perror(const char *msg, pj_status_t err);
+extern pj_status_t app_socket(int family, int type, int proto, int port,
+ pj_sock_t *ptr_sock);
+extern pj_status_t app_socketpair(int family, int type, int protocol,
+ pj_sock_t *server, pj_sock_t *client);
+extern int null_func(void);
+
+//#define TRACE_(expr) PJ_LOG(3,expr)
+#define TRACE_(expr)
+#define HALT(msg) { PJ_LOG(3,(THIS_FILE,"%s halted",msg)); for(;;) sleep(1); }
+
+PJ_END_DECL
+
+#endif /* __PJLIB_TEST_H__ */
+
diff --git a/jni/pjproject-android/.svn/pristine/e2/e2981b2babc85f0a86332fbafb5cbab1280f98cf.svn-base b/jni/pjproject-android/.svn/pristine/e2/e2981b2babc85f0a86332fbafb5cbab1280f98cf.svn-base
new file mode 100644
index 0000000..d23096e
--- /dev/null
+++ b/jni/pjproject-android/.svn/pristine/e2/e2981b2babc85f0a86332fbafb5cbab1280f98cf.svn-base
@@ -0,0 +1,136 @@
+/* $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_CONFIG_H__
+#define __PJNATH_STUN_CONFIG_H__
+
+/**
+ * @file stun_config.h
+ * @brief STUN endpoint.
+ */
+
+#include <pjnath/stun_msg.h>
+#include <pj/assert.h>
+#include <pj/errno.h>
+#include <pj/string.h>
+
+
+PJ_BEGIN_DECL
+
+
+/* **************************************************************************/
+/**
+ * @defgroup PJNATH_STUN_CONFIG STUN Config
+ * @brief STUN config
+ * @ingroup PJNATH_STUN_BASE
+ * @{
+ */
+
+/**
+ * STUN configuration.
+ */
+typedef struct pj_stun_config
+{
+ /**
+ * Pool factory to be used.
+ */
+ pj_pool_factory *pf;
+
+ /**
+ * Ioqueue.
+ */
+ pj_ioqueue_t *ioqueue;
+
+ /**
+ * Timer heap instance.
+ */
+ pj_timer_heap_t *timer_heap;
+
+ /**
+ * Options.
+ */
+ unsigned options;
+
+ /**
+ * The default initial STUN round-trip time estimation in msecs.
+ * The value normally is PJ_STUN_RTO_VALUE.
+ */
+ unsigned rto_msec;
+
+ /**
+ * The interval to cache outgoing STUN response in the STUN session,
+ * in miliseconds.
+ *
+ * Default 10000 (10 seconds).
+ */
+ unsigned res_cache_msec;
+
+ /**
+ * Software name to be included in all STUN requests and responses.
+ *
+ * Default: PJNATH_STUN_SOFTWARE_NAME.
+ */
+ pj_str_t software_name;
+
+} pj_stun_config;
+
+
+
+/**
+ * Initialize STUN config.
+ */
+PJ_INLINE(void) pj_stun_config_init(pj_stun_config *cfg,
+ pj_pool_factory *factory,
+ unsigned options,
+ pj_ioqueue_t *ioqueue,
+ pj_timer_heap_t *timer_heap)
+{
+ pj_bzero(cfg, sizeof(*cfg));
+
+ cfg->pf = factory;
+ cfg->options = options;
+ cfg->ioqueue = ioqueue;
+ cfg->timer_heap = timer_heap;
+ cfg->rto_msec = PJ_STUN_RTO_VALUE;
+ cfg->res_cache_msec = PJ_STUN_RES_CACHE_DURATION;
+ cfg->software_name = pj_str((char*)PJNATH_STUN_SOFTWARE_NAME);
+}
+
+
+/**
+ * Check that STUN config is valid.
+ */
+PJ_INLINE(pj_status_t) pj_stun_config_check_valid(const pj_stun_config *cfg)
+{
+ PJ_ASSERT_RETURN(cfg->ioqueue && cfg->pf && cfg->timer_heap &&
+ cfg->rto_msec && cfg->res_cache_msec, PJ_EINVAL);
+ return PJ_SUCCESS;
+}
+
+
+/**
+ * @}
+ */
+
+
+PJ_END_DECL
+
+
+#endif /* __PJNATH_STUN_CONFIG_H__ */
+
diff --git a/jni/pjproject-android/.svn/pristine/e2/e2eb68e0c0ceb2216343a4a7fe8773b7bb25c3f8.svn-base b/jni/pjproject-android/.svn/pristine/e2/e2eb68e0c0ceb2216343a4a7fe8773b7bb25c3f8.svn-base
new file mode 100644
index 0000000..cdb94e6
--- /dev/null
+++ b/jni/pjproject-android/.svn/pristine/e2/e2eb68e0c0ceb2216343a4a7fe8773b7bb25c3f8.svn-base
@@ -0,0 +1,187 @@
+/* Copyright (C) 2004 Jean-Marc Valin */
+/**
+ @file ltp_arm4.h
+ @brief Long-Term Prediction functions (ARM4 version)
+*/
+/*
+ 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 Xiph.org Foundation 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 FOUNDATION 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.
+*/
+
+#define OVERRIDE_INNER_PROD
+spx_word32_t inner_prod(const spx_word16_t *x, const spx_word16_t *y, int len)
+{
+ spx_word32_t sum1=0,sum2=0;
+ spx_word16_t *deadx, *deady;
+ int deadlen, dead1, dead2, dead3, dead4, dead5, dead6;
+ __asm__ __volatile__ (
+ "\tldrsh %5, [%0], #2 \n"
+ "\tldrsh %6, [%1], #2 \n"
+ ".inner_prod_loop%=:\n"
+ "\tsub %7, %7, %7\n"
+ "\tsub %10, %10, %10\n"
+
+ "\tldrsh %8, [%0], #2 \n"
+ "\tldrsh %9, [%1], #2 \n"
+ "\tmla %7, %5, %6, %7\n"
+ "\tldrsh %5, [%0], #2 \n"
+ "\tldrsh %6, [%1], #2 \n"
+ "\tmla %10, %8, %9, %10\n"
+ "\tldrsh %8, [%0], #2 \n"
+ "\tldrsh %9, [%1], #2 \n"
+ "\tmla %7, %5, %6, %7\n"
+ "\tldrsh %5, [%0], #2 \n"
+ "\tldrsh %6, [%1], #2 \n"
+ "\tmla %10, %8, %9, %10\n"
+
+ "\tldrsh %8, [%0], #2 \n"
+ "\tldrsh %9, [%1], #2 \n"
+ "\tmla %7, %5, %6, %7\n"
+ "\tldrsh %5, [%0], #2 \n"
+ "\tldrsh %6, [%1], #2 \n"
+ "\tmla %10, %8, %9, %10\n"
+ "\tldrsh %8, [%0], #2 \n"
+ "\tldrsh %9, [%1], #2 \n"
+ "\tmla %7, %5, %6, %7\n"
+ "\tldrsh %5, [%0], #2 \n"
+ "\tldrsh %6, [%1], #2 \n"
+ "\tmla %10, %8, %9, %10\n"
+
+ "\tsubs %4, %4, #1\n"
+ "\tadd %2, %2, %7, asr #5\n"
+ "\tadd %3, %3, %10, asr #5\n"
+ "\tbne .inner_prod_loop%=\n"
+ : "=r" (deadx), "=r" (deady), "+r" (sum1), "+r" (sum2),
+ "=r" (deadlen), "=r" (dead1), "=r" (dead2), "=r" (dead3),
+ "=r" (dead4), "=r" (dead5), "=r" (dead6)
+ : "0" (x), "1" (y), "4" (len>>3)
+ : "cc"
+ );
+ return (sum1+sum2)>>1;
+}
+
+#define OVERRIDE_PITCH_XCORR
+void pitch_xcorr(const spx_word16_t *_x, const spx_word16_t *_y, spx_word32_t *corr, int len, int nb_pitch, char *stack)
+{
+ int i,j;
+ for (i=0;i<nb_pitch;i+=4)
+ {
+ /* Compute correlation*/
+ //corr[nb_pitch-1-i]=inner_prod(x, _y+i, len);
+ spx_word32_t sum1=0;
+ spx_word32_t sum2=0;
+ spx_word32_t sum3=0;
+ spx_word32_t sum4=0;
+ const spx_word16_t *y = _y+i;
+ const spx_word16_t *x = _x;
+ spx_word32_t y0, y1, y2, y3;
+ y0=*y++;
+ y1=*y++;
+ y2=*y++;
+ y3=*y++;
+ for (j=0;j<len;j+=4)
+ {
+ spx_word32_t part1, part2, part3, part4, x0;
+ spx_word32_t dead1;
+ __asm__ __volatile__ (
+#ifdef SHORTCUTS
+ "\tldrsh %10, [%8], #4 \n"
+ "\tmul %4, %10, %0 \n"
+ "\tldrsh %15, [%8], #4 \n"
+ "\tmul %5, %10, %1 \n"
+ "\tldrsh %0, [%9], #2 \n"
+ "\tmul %6, %10, %2 \n"
+ "\tldrsh %1, [%9], #2 \n"
+ "\tmul %7, %10, %3 \n"
+
+
+ "\tmla %4, %15, %2, %4 \n"
+ "\tldrsh %2, [%9], #2 \n"
+ "\tmla %5, %15, %3, %5 \n"
+ "\tldrsh %3, [%9], #2 \n"
+ "\tmla %6, %15, %0, %6 \n"
+ "\tmla %7, %15, %1, %7 \n"
+
+#else
+ "\tldrsh %10, [%8], #2 \n"
+ "\tmul %4, %10, %0 \n"
+ "\tmul %5, %10, %1 \n"
+ "\tmul %6, %10, %2 \n"
+ "\tmul %7, %10, %3 \n"
+
+ "\tldrsh %10, [%8], #2 \n"
+ "\tldrsh %0, [%9], #2 \n"
+ "\tmla %4, %10, %1, %4 \n"
+ "\tmla %5, %10, %2, %5 \n"
+ "\tmla %6, %10, %3, %6 \n"
+ "\tmla %7, %10, %0, %7 \n"
+
+ "\tldrsh %10, [%8], #2 \n"
+ "\tldrsh %1, [%9], #2 \n"
+ "\tmla %4, %10, %2, %4 \n"
+ "\tmla %5, %10, %3, %5 \n"
+ "\tmla %6, %10, %0, %6 \n"
+ "\tmla %7, %10, %1, %7 \n"
+
+ "\tldrsh %10, [%8], #2 \n"
+ "\tldrsh %2, [%9], #2 \n"
+ "\tmla %4, %10, %3, %4 \n"
+ "\tmla %5, %10, %0, %5 \n"
+ "\tmla %6, %10, %1, %6 \n"
+ "\tmla %7, %10, %2, %7 \n"
+
+ "\tldrsh %3, [%9], #2 \n"
+#endif
+
+ "\tldr %10, %11 \n"
+ "\tldr %15, %12 \n"
+ "\tadd %4, %10, %4, asr #6 \n"
+ "\tstr %4, %11 \n"
+ "\tldr %10, %13 \n"
+ "\tadd %5, %15, %5, asr #6 \n"
+ "\tstr %5, %12 \n"
+ "\tldr %15, %14 \n"
+ "\tadd %6, %10, %6, asr #6 \n"
+ "\tadd %7, %15, %7, asr #6 \n"
+ "\tstr %6, %13 \n"
+ "\tstr %7, %14 \n"
+
+ : "+r" (y0), "+r" (y1), "+r" (y2), "+r" (y3),
+ "=r" (part1), "=r" (part2), "=r" (part3), "=r" (part4),
+ "+r" (x), "+r" (y), "=r" (x0), "+m" (sum1),
+ "+m" (sum2), "+m" (sum3), "+m" (sum4), "=r" (dead1)
+ :
+ : "cc", "memory"
+ );
+ }
+ corr[nb_pitch-1-i]=sum1;
+ corr[nb_pitch-2-i]=sum2;
+ corr[nb_pitch-3-i]=sum3;
+ corr[nb_pitch-4-i]=sum4;
+ }
+
+}