* #36737: switch back to svn repo, remove assert in sip_transaction.c
diff --git a/jni/pjproject-android/.svn/pristine/d4/d4350be0772570ea85ccdae9872685f9ec00baa2.svn-base b/jni/pjproject-android/.svn/pristine/d4/d4350be0772570ea85ccdae9872685f9ec00baa2.svn-base
new file mode 100644
index 0000000..f82e937
--- /dev/null
+++ b/jni/pjproject-android/.svn/pristine/d4/d4350be0772570ea85ccdae9872685f9ec00baa2.svn-base
@@ -0,0 +1,77 @@
+#!/bin/sh
+# 
+# usage: rtpw_test <rtpw_commands>
+# 
+# tests the rtpw sender and receiver functions
+
+RTPW=rtpw
+DEST_PORT=9999
+DURATION=3
+
+key=2b2edc5034f61a72345ca5986d7bfd0189aa6dc2ecab32fd9af74df6dfc6
+
+ARGS="-k $key -ae"
+
+# First, we run "killall" to get rid of all existing rtpw processes.
+# This step also enables this script to clean up after itself; if this
+# script is interrupted after the rtpw processes are started but before
+# they are killed, those processes will linger.  Re-running the script
+# will get rid of them.
+
+killall rtpw 2&>/dev/null
+
+if test -x $RTPW; then
+
+echo  $0 ": starting rtpw receiver process... "
+
+$RTPW $* $ARGS -r 0.0.0.0 $DEST_PORT  &
+
+receiver_pid=$!
+
+echo $0 ": receiver PID = $receiver_pid"
+
+sleep 1 
+
+# verify that the background job is running
+ps | grep -q $receiver_pid
+retval=$?
+echo $retval
+if [ $retval != 0 ]; then
+    echo $0 ": error"
+    exit 254
+fi
+
+echo  $0 ": starting rtpw sender process..."
+
+$RTPW $* $ARGS -s 127.0.0.1 $DEST_PORT  &
+
+sender_pid=$!
+
+echo $0 ": sender PID = $sender_pid"
+
+# verify that the background job is running
+ps | grep -q $sender_pid
+retval=$?
+echo $retval
+if [ $retval != 0 ]; then
+    echo $0 ": error"
+    exit 255
+fi
+
+sleep $DURATION
+
+kill $receiver_pid
+kill $sender_pid
+
+echo $0 ": done (test passed)"
+
+else 
+
+echo "error: can't find executable" $RTPW
+exit 1
+
+fi
+
+# EOF
+
+
diff --git a/jni/pjproject-android/.svn/pristine/d4/d43eb2666caba296584d9b8979cc4e2d446844f2.svn-base b/jni/pjproject-android/.svn/pristine/d4/d43eb2666caba296584d9b8979cc4e2d446844f2.svn-base
new file mode 100644
index 0000000..f559116
--- /dev/null
+++ b/jni/pjproject-android/.svn/pristine/d4/d43eb2666caba296584d9b8979cc4e2d446844f2.svn-base
@@ -0,0 +1,43 @@
+
+include $(KERNEL_DIR)/.config
+
+#
+# Basic kernel compilation flags.
+#
+export OS_CFLAGS   := $(CC_DEF)PJ_LINUX_KERNEL=1 -D__KERNEL__  \
+		      -I$(KERNEL_DIR)/include -iwithprefix include \
+		      -nostdinc -msoft-float
+
+#
+# Additional kernel compilation flags are taken from the kernel Makefile
+# itself.
+#
+
+KERNEL_CFLAGS := \
+    $(shell cd $(KERNEL_DIR) ; \
+    make script SCRIPT='@echo $$(CFLAGS) $$(CFLAGS_MODULE)' $(KERNEL_ARCH))
+
+export OS_CFLAGS += $(KERNEL_CFLAGS)
+
+#		      -DMODULE -I$(KERNEL_DIR)/include  -nostdinc \
+#		      -Wstrict-prototypes \
+#		      -Wno-trigraphs -fno-strict-aliasing -fno-common \
+#		      -msoft-float -m32 -fno-builtin-sprintf -fno-builtin-log2\
+#		      -fno-builtin-puts -mpreferred-stack-boundary=2 \
+#		      -fno-unit-at-a-time -march=i686 -mregparm=3 \
+#		      -iwithprefix include
+
+#export OS_CFLAGS += -U__i386__ -Ui386 -D__arch_um__ -DSUBARCH=\"i386\" \
+#		    -D_LARGEFILE64_SOURCE -I$(KERNEL_DIR)/arch/um/include \
+#		    -Derrno=kernel_errno \
+#		    -I$(KERNEL_DIR)/arch/um/kernel/tt/include \
+#		    -I$(KERNEL_DIR)/arch/um/kernel/skas/include \
+		    
+
+export OS_CXXFLAGS := 
+
+export OS_LDFLAGS  :=  
+
+export OS_SOURCES  := 
+
+
diff --git a/jni/pjproject-android/.svn/pristine/d4/d44178dff01f0d7adde0c006367007baa659fada.svn-base b/jni/pjproject-android/.svn/pristine/d4/d44178dff01f0d7adde0c006367007baa659fada.svn-base
new file mode 100644
index 0000000..e2e1f9b
--- /dev/null
+++ b/jni/pjproject-android/.svn/pristine/d4/d44178dff01f0d7adde0c006367007baa659fada.svn-base
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE scenario SYSTEM "sipp.dtd">
+
+<!-- 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             -->
+<!--                                                                    -->
+<!-- See https://trac.pjsip.org/repos/ticket/1146                       -->
+<!--                                                                    -->
+
+<scenario name="SUBSCRIBE tests">
+  <!-- Establish subscription -->
+  <recv request="SUBSCRIBE" crlf="true">
+    <action>
+	<ereg regexp=".*" search_in="hdr" header="From" assign_to="3"/>
+	<ereg regexp="sip:(.*)>" search_in="hdr" header="Contact" assign_to="4,5"/>
+        <assign assign_to="4" variable="5" />
+    </action>
+  </recv>
+
+  <send>
+    <![CDATA[
+
+      SIP/2.0 200 OK
+      [last_Via:]
+      [last_From:]
+      [last_To:];tag=[call_number]
+      [last_Call-ID:]
+      [last_CSeq:]
+      Contact: <sip:sipp@[local_ip]:[local_port]>
+      Content-Length: 0
+      Expires: 60
+    ]]>
+  </send>
+
+  <send retrans="500">
+    <![CDATA[
+      NOTIFY sip:[$5] SIP/2.0
+      Via: SIP/2.0/[transport] [local_ip]:[local_port];rport;branch=z9hG4bKPj01
+      From: sipp <sip:sipp@[local_ip]>;tag=[call_number]
+      To[$3]
+      Call-ID: [call_id]
+      Cseq: 1 NOTIFY
+      Contact: sip:sipp@[local_ip]:[local_port]
+      Max-Forwards: 70
+      Event: presence
+      Subscription-State: active;expires=10
+      Content-Type: multipart/mixed;boundary=abcd
+
+      --abcd
+      Content-Type: text/plain
+
+      Hi there, please don't read this part.
+      --abcd
+      Content-Type: application/pidf+xml
+
+      <?xml version="1.0" encoding="UTF-8"?>
+      <presence xmlns="urn:ietf:params:xml:ns:pidf" xmlns:op="urn:oma:xml:prs:pidf:oma-pres" entity="sip:test@pjsip.org">
+       <tuple id="17415d5738f332a64a2f1d8cfb4ab0a5">
+         <status>
+            <basic>open</basic>
+         </status>
+       </tuple>
+      </presence>
+      --abcd--
+    ]]>
+  </send>
+
+   <recv response="200">
+   </recv>
+
+  <!-- Subscription has been established at this point -->
+
+
+  <!-- *******
+    
+       Wait for subscription refresh, reply with 481
+       
+  -->
+
+  <recv request="SUBSCRIBE" crlf="true">
+  </recv>
+
+  <send>
+    <![CDATA[
+
+      SIP/2.0 481 You should resubscribe mow
+      [last_Via:]
+      [last_From:]
+      [last_To:];tag=[call_number]
+      [last_Call-ID:]
+      [last_CSeq:]
+      Contact: <sip:sipp@[local_ip]:[local_port]>
+      Content-Length: 0
+    ]]>
+  </send>
+
+
+
+
+  <!-- definition of the response time repartition table (unit is ms)   -->
+  <ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200"/>
+
+  <!-- definition of the call length repartition table (unit is ms)     -->
+  <CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/>
+
+</scenario>
+
diff --git a/jni/pjproject-android/.svn/pristine/d4/d44438d4f5c3c0db0b63c0e30851427f0ba196ad.svn-base b/jni/pjproject-android/.svn/pristine/d4/d44438d4f5c3c0db0b63c0e30851427f0ba196ad.svn-base
new file mode 100644
index 0000000..c6bfcb3
--- /dev/null
+++ b/jni/pjproject-android/.svn/pristine/d4/d44438d4f5c3c0db0b63c0e30851427f0ba196ad.svn-base
@@ -0,0 +1,12 @@
+# $Id$
+#
+from inc_cfg import *
+
+# Simple call
+test_param = TestParam(
+		"Basic call",
+		[
+			InstanceParam("callee", "--null-audio --max-calls=1"),
+			InstanceParam("caller", "--null-audio --max-calls=1")
+		]
+		)
diff --git a/jni/pjproject-android/.svn/pristine/d4/d4477bedba4016f9f7b108fc68dbec7ff53e2c20.svn-base b/jni/pjproject-android/.svn/pristine/d4/d4477bedba4016f9f7b108fc68dbec7ff53e2c20.svn-base
new file mode 100644
index 0000000..bd70165
--- /dev/null
+++ b/jni/pjproject-android/.svn/pristine/d4/d4477bedba4016f9f7b108fc68dbec7ff53e2c20.svn-base
@@ -0,0 +1,214 @@
+/* $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 <pjlib.h>
+#include "test.h"
+
+static pj_ioqueue_key_t *key;
+static pj_atomic_t *total_bytes;
+static pj_bool_t thread_quit_flag;
+
+struct op_key
+{
+    pj_ioqueue_op_key_t  op_key_;
+    struct op_key       *peer;
+    char                *buffer;
+    pj_size_t            size;
+    int                  is_pending;
+    pj_status_t          last_err;
+    pj_sockaddr_in       addr;
+    int                  addrlen;
+};
+
+static void on_read_complete(pj_ioqueue_key_t *key, 
+                             pj_ioqueue_op_key_t *op_key, 
+                             pj_ssize_t bytes_received)
+{
+    pj_status_t rc;
+    struct op_key *recv_rec = (struct op_key *)op_key;
+
+    for (;;) {
+        struct op_key *send_rec = recv_rec->peer;
+        recv_rec->is_pending = 0;
+
+        if (bytes_received < 0) {
+            if (-bytes_received != recv_rec->last_err) {
+                recv_rec->last_err = (pj_status_t)-bytes_received;
+                app_perror("...error receiving data", recv_rec->last_err);
+            }
+        } else if (bytes_received == 0) {
+            /* note: previous error, or write callback */
+        } else {
+            pj_atomic_add(total_bytes, (pj_atomic_value_t)bytes_received);
+
+            if (!send_rec->is_pending) {
+                pj_ssize_t sent = bytes_received;
+                pj_memcpy(send_rec->buffer, recv_rec->buffer, bytes_received);
+                pj_memcpy(&send_rec->addr, &recv_rec->addr, recv_rec->addrlen);
+                send_rec->addrlen = recv_rec->addrlen;
+                rc = pj_ioqueue_sendto(key, &send_rec->op_key_, 
+                                       send_rec->buffer, &sent, 0,
+                                       &send_rec->addr, send_rec->addrlen);
+                send_rec->is_pending = (rc==PJ_EPENDING);
+
+                if (rc!=PJ_SUCCESS && rc!=PJ_EPENDING) {
+                    app_perror("...send error(1)", rc);
+                }
+            }
+        }
+
+        if (!send_rec->is_pending) {
+            bytes_received = recv_rec->size;
+            rc = pj_ioqueue_recvfrom(key, &recv_rec->op_key_, 
+                                     recv_rec->buffer, &bytes_received, 0,
+                                     &recv_rec->addr, &recv_rec->addrlen);
+            recv_rec->is_pending = (rc==PJ_EPENDING);
+            if (rc == PJ_SUCCESS) {
+                /* fall through next loop. */
+            } else if (rc == PJ_EPENDING) {
+                /* quit callback. */
+                break;
+            } else {
+                /* error */
+                app_perror("...recv error", rc);
+                recv_rec->last_err = rc;
+
+                bytes_received = 0;
+                /* fall through next loop. */
+            }
+        } else {
+            /* recv will be done when write completion callback is called. */
+            break;
+        }
+    }
+}
+
+static void on_write_complete(pj_ioqueue_key_t *key, 
+                              pj_ioqueue_op_key_t *op_key, 
+                              pj_ssize_t bytes_sent)
+{
+    struct op_key *send_rec = (struct op_key*)op_key;
+
+    if (bytes_sent <= 0) {
+        pj_status_t rc = (pj_status_t)-bytes_sent;
+        if (rc != send_rec->last_err) {
+            send_rec->last_err = rc;
+            app_perror("...send error(2)", rc);
+        }
+    }
+
+    send_rec->is_pending = 0;
+    on_read_complete(key, &send_rec->peer->op_key_, 0);
+}
+
+static int worker_thread(void *arg)
+{
+    pj_ioqueue_t *ioqueue = (pj_ioqueue_t*) arg;
+    struct op_key read_op, write_op;
+    char recv_buf[512], send_buf[512];
+    pj_ssize_t length;
+    pj_status_t rc;
+
+    read_op.peer = &write_op;
+    read_op.is_pending = 0;
+    read_op.last_err = 0;
+    read_op.buffer = recv_buf;
+    read_op.size = sizeof(recv_buf);
+    read_op.addrlen = sizeof(read_op.addr);
+
+    write_op.peer = &read_op;
+    write_op.is_pending = 0;
+    write_op.last_err = 0;
+    write_op.buffer = send_buf;
+    write_op.size = sizeof(send_buf);
+
+    length = sizeof(recv_buf);
+    rc = pj_ioqueue_recvfrom(key, &read_op.op_key_, recv_buf, &length, 0,
+                             &read_op.addr, &read_op.addrlen);
+    if (rc == PJ_SUCCESS) {
+        read_op.is_pending = 1;
+        on_read_complete(key, &read_op.op_key_, length);
+    }
+    
+    while (!thread_quit_flag) {
+        pj_time_val timeout;
+        timeout.sec = 0; timeout.msec = 10;
+        rc = pj_ioqueue_poll(ioqueue, &timeout);
+    }
+    return 0;
+}
+
+int udp_echo_srv_ioqueue(void)
+{
+    pj_pool_t *pool;
+    pj_sock_t sock;
+    pj_ioqueue_t *ioqueue;
+    pj_ioqueue_callback callback;
+    int i;
+    pj_thread_t *thread[ECHO_SERVER_MAX_THREADS];
+    pj_status_t rc;
+
+    pj_bzero(&callback, sizeof(callback));
+    callback.on_read_complete = &on_read_complete;
+    callback.on_write_complete = &on_write_complete;
+
+    pool = pj_pool_create(mem, NULL, 4000, 4000, NULL);
+    if (!pool)
+        return -10;
+
+    rc = pj_ioqueue_create(pool, 2, &ioqueue);
+    if (rc != PJ_SUCCESS) {
+        app_perror("...pj_ioqueue_create error", rc);
+        return -20;
+    }
+
+    rc = app_socket(pj_AF_INET(), pj_SOCK_DGRAM(), 0, 
+                    ECHO_SERVER_START_PORT, &sock);
+    if (rc != PJ_SUCCESS) {
+        app_perror("...app_socket error", rc);
+        return -30;
+    }
+
+    rc = pj_ioqueue_register_sock(pool, ioqueue, sock, NULL,
+                                  &callback, &key);
+    if (rc != PJ_SUCCESS) {
+        app_perror("...error registering socket", rc);
+        return -40;
+    }
+
+    rc = pj_atomic_create(pool, 0, &total_bytes);
+    if (rc != PJ_SUCCESS) {
+        app_perror("...error creating atomic variable", rc);
+        return -45;
+    }
+
+    for (i=0; i<ECHO_SERVER_MAX_THREADS; ++i) {
+        rc = pj_thread_create(pool, NULL, &worker_thread, ioqueue,
+                              PJ_THREAD_DEFAULT_STACK_SIZE, 0,
+                              &thread[i]);
+        if (rc != PJ_SUCCESS) {
+            app_perror("...create thread error", rc);
+            return -50;
+        }
+    }
+
+    echo_srv_common_loop(total_bytes);
+
+    return 0;
+}
diff --git a/jni/pjproject-android/.svn/pristine/d4/d44f582363fd3c52121aa48f5baee46e127a54e5.svn-base b/jni/pjproject-android/.svn/pristine/d4/d44f582363fd3c52121aa48f5baee46e127a54e5.svn-base
new file mode 100644
index 0000000..8acdd78
--- /dev/null
+++ b/jni/pjproject-android/.svn/pristine/d4/d44f582363fd3c52121aa48f5baee46e127a54e5.svn-base
@@ -0,0 +1,170 @@
+/* $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 
+ */
+#ifndef __PJMEDIA_AVI_STREAM_H__
+#define __PJMEDIA_AVI_STREAM_H__
+
+/**
+ * @file avi_stream.h
+ * @brief AVI file player.
+ */
+#include <pjmedia/port.h>
+
+
+
+PJ_BEGIN_DECL
+
+
+/**
+ * @defgroup PJMEDIA_FILE_PLAY AVI File Player
+ * @ingroup PJMEDIA_PORT
+ * @brief Video and audio playback from AVI file
+ * @{
+ */
+
+/**
+ * AVI file player options.
+ */
+enum pjmedia_avi_file_player_option
+{
+    /**
+     * Tell the file player to return NULL frame when the whole
+     * file has been played.
+     */
+    PJMEDIA_AVI_FILE_NO_LOOP = 1
+};
+
+/**
+ * AVI stream data type.
+ */
+typedef pjmedia_port pjmedia_avi_stream;
+
+/**
+ * Opaque data type for AVI streams. AVI streams is a collection of
+ * zero or more AVI stream.
+ */
+typedef struct pjmedia_avi_streams pjmedia_avi_streams;
+
+/**
+ * Create avi streams to play an AVI file. AVI player supports 
+ * reading AVI file with uncompressed video format and 
+ * 16 bit PCM or compressed G.711 A-law/U-law audio format.
+ *
+ * @param pool		Pool to create the streams.
+ * @param filename	File name to open.
+ * @param flags		Avi streams creation flags.
+ * @param p_streams	Pointer to receive the avi streams instance.
+ *
+ * @return		PJ_SUCCESS on success.
+ */
+PJ_DECL(pj_status_t)
+pjmedia_avi_player_create_streams(pj_pool_t *pool,
+                                  const char *filename,
+                                  unsigned flags,
+                                  pjmedia_avi_streams **p_streams);
+
+/**
+ * Get the number of AVI stream.
+ *
+ * @param streams	The AVI streams.
+ *
+ * @return		The number of AVI stream.
+ */
+PJ_DECL(unsigned)
+pjmedia_avi_streams_get_num_streams(pjmedia_avi_streams *streams);
+
+/**
+ * Return the idx-th stream of the AVI streams.
+ *
+ * @param streams	The AVI streams.
+ * @param idx	        The stream index.
+ *
+ * @return		The AVI stream or NULL if it does not exist.
+ */
+PJ_DECL(pjmedia_avi_stream *)
+pjmedia_avi_streams_get_stream(pjmedia_avi_streams *streams,
+                               unsigned idx);
+
+/**
+ * Return an AVI stream with a certain media type from the AVI streams.
+ *
+ * @param streams	The AVI streams.
+ * @param start_idx     The starting index.
+ * @param media_type    The media type of the stream.
+ *
+ * @return		The AVI stream or NULL if it does not exist.
+ */
+PJ_DECL(pjmedia_avi_stream *)
+pjmedia_avi_streams_get_stream_by_media(pjmedia_avi_streams *streams,
+                                        unsigned start_idx,
+                                        pjmedia_type media_type);
+
+/**
+ * Return the media port of an AVI stream.
+ *
+ * @param stream	The AVI stream.
+ *
+ * @return		The media port.
+ */
+PJ_INLINE(pjmedia_port *)
+pjmedia_avi_stream_get_port(pjmedia_avi_stream *stream)
+{
+    return (pjmedia_port *)stream;
+}
+
+/**
+ * Get the data length, in bytes.
+ *
+ * @param stream        The AVI stream.
+ *
+ * @return		The length of the data, in bytes. Upon error it will
+ *			return negative value.
+ */
+PJ_DECL(pj_ssize_t) pjmedia_avi_stream_get_len(pjmedia_avi_stream *stream);
+
+
+/**
+ * Register a callback to be called when the file reading has reached the
+ * end of file. If the file is set to play repeatedly, then the callback
+ * will be called multiple times. Note that only one callback can be 
+ * registered for each AVI stream.
+ *
+ * @param stream	The AVI stream.
+ * @param user_data	User data to be specified in the callback
+ * @param cb		Callback to be called. If the callback returns non-
+ *			PJ_SUCCESS, the playback will stop. Note that if
+ *			application destroys the file port in the callback,
+ *			it must return non-PJ_SUCCESS here.
+ *
+ * @return		PJ_SUCCESS on success.
+ */
+PJ_DECL(pj_status_t) 
+pjmedia_avi_stream_set_eof_cb(pjmedia_avi_stream *stream,
+			      void *user_data,
+			      pj_status_t (*cb)(pjmedia_avi_stream *stream,
+					        void *usr_data));
+
+/**
+ * @}
+ */
+
+
+PJ_END_DECL
+
+
+#endif	/* __PJMEDIA_AVI_STREAM_H__ */
diff --git a/jni/pjproject-android/.svn/pristine/d4/d4570017b0a4f72c5e8422d549bb9b12a48feb73.svn-base b/jni/pjproject-android/.svn/pristine/d4/d4570017b0a4f72c5e8422d549bb9b12a48feb73.svn-base
new file mode 100644
index 0000000..fa841a0
--- /dev/null
+++ b/jni/pjproject-android/.svn/pristine/d4/d4570017b0a4f72c5e8422d549bb9b12a48feb73.svn-base
@@ -0,0 +1,379 @@
+/* Copyright (C) 2005 Jean-Marc Valin */
+/**
+   @file pseudofloat.h
+   @brief Pseudo-floating point
+ * This header file provides a lightweight floating point type for
+ * use on fixed-point platforms when a large dynamic range is 
+ * required. The new type is not compatible with the 32-bit IEEE format,
+ * it is not even remotely as accurate as 32-bit floats, and is not
+ * even guaranteed to produce even remotely correct results for code
+ * other than Speex. It makes all kinds of shortcuts that are acceptable
+ * for Speex, but may not be acceptable for your application. You're
+ * quite welcome to reuse this code and improve it, but don't assume
+ * it works out of the box. Most likely, it doesn't.
+ */
+/*
+   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.
+*/
+
+#ifndef PSEUDOFLOAT_H
+#define PSEUDOFLOAT_H
+
+#include "arch.h"
+#include "os_support.h"
+#include "math_approx.h"
+#include <math.h>
+
+#ifdef FIXED_POINT
+
+typedef struct {
+   spx_int16_t m;
+   spx_int16_t e;
+} spx_float_t;
+
+static const spx_float_t FLOAT_ZERO = {0,0};
+static const spx_float_t FLOAT_ONE = {16384,-14};
+static const spx_float_t FLOAT_HALF = {16384,-15};
+
+#define MIN(a,b) ((a)<(b)?(a):(b))
+static inline spx_float_t PSEUDOFLOAT(spx_int32_t x)
+{
+   int e=0;
+   int sign=0;
+   if (x<0)
+   {
+      sign = 1;
+      x = -x;
+   }
+   if (x==0)
+   {
+      spx_float_t r = {0,0};
+      return r;
+   }
+   e = spx_ilog2(ABS32(x))-14;
+   x = VSHR32(x, e);
+   if (sign)
+   {
+      spx_float_t r;
+      r.m = -x;
+      r.e = e;
+      return r;
+   }
+   else      
+   {
+      spx_float_t r;
+      r.m = x;
+      r.e = e;
+      return r;
+   }
+}
+
+
+static inline spx_float_t FLOAT_ADD(spx_float_t a, spx_float_t b)
+{
+   spx_float_t r;
+   if (a.m==0)
+      return b;
+   else if (b.m==0)
+      return a;
+   if ((a).e > (b).e) 
+   {
+      r.m = ((a).m>>1) + ((b).m>>MIN(15,(a).e-(b).e+1));
+      r.e = (a).e+1;
+   }
+   else 
+   {
+      r.m = ((b).m>>1) + ((a).m>>MIN(15,(b).e-(a).e+1));
+      r.e = (b).e+1;
+   }
+   if (r.m>0)
+   {
+      if (r.m<16384)
+      {
+         r.m<<=1;
+         r.e-=1;
+      }
+   } else {
+      if (r.m>-16384)
+      {
+         r.m<<=1;
+         r.e-=1;
+      }
+   }
+   /*printf ("%f + %f = %f\n", REALFLOAT(a), REALFLOAT(b), REALFLOAT(r));*/
+   return r;
+}
+
+static inline spx_float_t FLOAT_SUB(spx_float_t a, spx_float_t b)
+{
+   spx_float_t r;
+   if (a.m==0)
+      return b;
+   else if (b.m==0)
+      return a;
+   if ((a).e > (b).e)
+   {
+      r.m = ((a).m>>1) - ((b).m>>MIN(15,(a).e-(b).e+1));
+      r.e = (a).e+1;
+   }
+   else 
+   {
+      r.m = ((a).m>>MIN(15,(b).e-(a).e+1)) - ((b).m>>1);
+      r.e = (b).e+1;
+   }
+   if (r.m>0)
+   {
+      if (r.m<16384)
+      {
+         r.m<<=1;
+         r.e-=1;
+      }
+   } else {
+      if (r.m>-16384)
+      {
+         r.m<<=1;
+         r.e-=1;
+      }
+   }
+   /*printf ("%f + %f = %f\n", REALFLOAT(a), REALFLOAT(b), REALFLOAT(r));*/
+   return r;
+}
+
+static inline int FLOAT_LT(spx_float_t a, spx_float_t b)
+{
+   if (a.m==0)
+      return b.m>0;
+   else if (b.m==0)
+      return a.m<0;   
+   if ((a).e > (b).e)
+      return ((a).m>>1) < ((b).m>>MIN(15,(a).e-(b).e+1));
+   else 
+      return ((b).m>>1) > ((a).m>>MIN(15,(b).e-(a).e+1));
+
+}
+
+static inline int FLOAT_GT(spx_float_t a, spx_float_t b)
+{
+   return FLOAT_LT(b,a);
+}
+
+static inline spx_float_t FLOAT_MULT(spx_float_t a, spx_float_t b)
+{
+   spx_float_t r;
+   r.m = (spx_int16_t)((spx_int32_t)(a).m*(b).m>>15);
+   r.e = (a).e+(b).e+15;
+   if (r.m>0)
+   {
+      if (r.m<16384)
+      {
+         r.m<<=1;
+         r.e-=1;
+      }
+   } else {
+      if (r.m>-16384)
+      {
+         r.m<<=1;
+         r.e-=1;
+      }
+   }
+   /*printf ("%f * %f = %f\n", REALFLOAT(a), REALFLOAT(b), REALFLOAT(r));*/
+   return r;   
+}
+
+static inline spx_float_t FLOAT_AMULT(spx_float_t a, spx_float_t b)
+{
+   spx_float_t r;
+   r.m = (spx_int16_t)((spx_int32_t)(a).m*(b).m>>15);
+   r.e = (a).e+(b).e+15;
+   return r;   
+}
+
+
+static inline spx_float_t FLOAT_SHL(spx_float_t a, int b)
+{
+   spx_float_t r;
+   r.m = a.m;
+   r.e = a.e+b;
+   return r;
+}
+
+static inline spx_int16_t FLOAT_EXTRACT16(spx_float_t a)
+{
+   if (a.e<0)
+      return EXTRACT16((EXTEND32(a.m)+(EXTEND32(1)<<(-a.e-1)))>>-a.e);
+   else
+      return a.m<<a.e;
+}
+
+static inline spx_int32_t FLOAT_EXTRACT32(spx_float_t a)
+{
+   if (a.e<0)
+      return (EXTEND32(a.m)+(EXTEND32(1)<<(-a.e-1)))>>-a.e;
+   else
+      return EXTEND32(a.m)<<a.e;
+}
+
+static inline spx_int32_t FLOAT_MUL32(spx_float_t a, spx_word32_t b)
+{
+   return VSHR32(MULT16_32_Q15(a.m, b),-a.e-15);
+}
+
+static inline spx_float_t FLOAT_MUL32U(spx_word32_t a, spx_word32_t b)
+{
+   int e1, e2;
+   spx_float_t r;
+   if (a==0 || b==0)
+   {
+      return FLOAT_ZERO;
+   }
+   e1 = spx_ilog2(ABS32(a));
+   a = VSHR32(a, e1-14);
+   e2 = spx_ilog2(ABS32(b));
+   b = VSHR32(b, e2-14);
+   r.m = MULT16_16_Q15(a,b);
+   r.e = e1+e2-13;
+   return r;
+}
+
+/* Do NOT attempt to divide by a negative number */
+static inline spx_float_t FLOAT_DIV32_FLOAT(spx_word32_t a, spx_float_t b)
+{
+   int e=0;
+   spx_float_t r;
+   if (a==0)
+   {
+      return FLOAT_ZERO;
+   }
+   e = spx_ilog2(ABS32(a))-spx_ilog2(b.m-1)-15;
+   a = VSHR32(a, e);
+   if (ABS32(a)>=SHL32(EXTEND32(b.m-1),15))
+   {
+      a >>= 1;
+      e++;
+   }
+   r.m = DIV32_16(a,b.m);
+   r.e = e-b.e;
+   return r;
+}
+
+
+/* Do NOT attempt to divide by a negative number */
+static inline spx_float_t FLOAT_DIV32(spx_word32_t a, spx_word32_t b)
+{
+   int e0=0,e=0;
+   spx_float_t r;
+   if (a==0)
+   {
+      return FLOAT_ZERO;
+   }
+   if (b>32767)
+   {
+      e0 = spx_ilog2(b)-14;
+      b = VSHR32(b, e0);
+      e0 = -e0;
+   }
+   e = spx_ilog2(ABS32(a))-spx_ilog2(b-1)-15;
+   a = VSHR32(a, e);
+   if (ABS32(a)>=SHL32(EXTEND32(b-1),15))
+   {
+      a >>= 1;
+      e++;
+   }
+   e += e0;
+   r.m = DIV32_16(a,b);
+   r.e = e;
+   return r;
+}
+
+/* Do NOT attempt to divide by a negative number */
+static inline spx_float_t FLOAT_DIVU(spx_float_t a, spx_float_t b)
+{
+   int e=0;
+   spx_int32_t num;
+   spx_float_t r;
+   if (b.m<=0)
+   {
+      speex_warning_int("Attempted to divide by", b.m);
+      return FLOAT_ONE;
+   }
+   num = a.m;
+   a.m = ABS16(a.m);
+   while (a.m >= b.m)
+   {
+      e++;
+      a.m >>= 1;
+   }
+   num = num << (15-e);
+   r.m = DIV32_16(num,b.m);
+   r.e = a.e-b.e-15+e;
+   return r;
+}
+
+static inline spx_float_t FLOAT_SQRT(spx_float_t a)
+{
+   spx_float_t r;
+   spx_int32_t m;
+   m = SHL32(EXTEND32(a.m), 14);
+   r.e = a.e - 14;
+   if (r.e & 1)
+   {
+      r.e -= 1;
+      m <<= 1;
+   }
+   r.e >>= 1;
+   r.m = spx_sqrt(m);
+   return r;
+}
+
+#else
+
+#define spx_float_t float
+#define FLOAT_ZERO 0.f
+#define FLOAT_ONE 1.f
+#define FLOAT_HALF 0.5f
+#define PSEUDOFLOAT(x) (x)
+#define FLOAT_MULT(a,b) ((a)*(b))
+#define FLOAT_AMULT(a,b) ((a)*(b))
+#define FLOAT_MUL32(a,b) ((a)*(b))
+#define FLOAT_DIV32(a,b) ((a)/(b))
+#define FLOAT_EXTRACT16(a) (a)
+#define FLOAT_EXTRACT32(a) (a)
+#define FLOAT_ADD(a,b) ((a)+(b))
+#define FLOAT_SUB(a,b) ((a)-(b))
+#define REALFLOAT(x) (x)
+#define FLOAT_DIV32_FLOAT(a,b) ((a)/(b))
+#define FLOAT_MUL32U(a,b) ((a)*(b))
+#define FLOAT_SHL(a,b) (a)
+#define FLOAT_LT(a,b) ((a)<(b))
+#define FLOAT_GT(a,b) ((a)>(b))
+#define FLOAT_DIVU(a,b) ((a)/(b))
+#define FLOAT_SQRT(a) (spx_sqrt(a))
+
+#endif
+
+#endif
diff --git a/jni/pjproject-android/.svn/pristine/d4/d463b6ddd1c612d3280917c8450810ba2679495b.svn-base b/jni/pjproject-android/.svn/pristine/d4/d463b6ddd1c612d3280917c8450810ba2679495b.svn-base
new file mode 100644
index 0000000..28ea02e
--- /dev/null
+++ b/jni/pjproject-android/.svn/pristine/d4/d463b6ddd1c612d3280917c8450810ba2679495b.svn-base
@@ -0,0 +1,310 @@
+/*
+ * lfsr.c
+ *
+ */
+
+
+#include <stdio.h>
+#include "datatypes.h"
+
+uint32_t 
+parity(uint32_t x) {
+
+  x ^= (x >> 16);
+  x ^= (x >> 8);
+  x ^= (x >> 4);
+  x ^= (x >> 2);
+  x ^= (x >> 1);
+
+  return x & 1;
+}
+
+
+/* typedef struct { */
+/*   uint32_t register[8]; */
+/* } lfsr_t; */
+
+void
+compute_period(uint32_t feedback_polynomial) {
+  int i;
+  v32_t lfsr;
+  v32_t mask;
+
+  mask.value = feedback_polynomial;
+  lfsr.value = 1;
+
+  printf("polynomial: %s\t", v32_bit_string(mask));
+
+  for (i=0; i < 256; i++) {
+/*     printf("%s\n", v32_bit_string(lfsr)); */
+    if (parity(mask.value & lfsr.value))
+      lfsr.value = ((lfsr.value << 1) | 1) & 0xff;
+    else
+      lfsr.value = (lfsr.value << 1) & 0xff;
+    
+    /* now halt if we're back at the initial state */
+    if (lfsr.value == 1) {
+      printf("period: %d\n", i);
+      break;
+    }
+  }
+}
+
+uint32_t poly0 = 223;
+
+
+uint32_t polynomials[39] = {
+31, 
+47,
+55,
+59,
+61,
+79,
+87,
+91,
+103,
+107,
+109,
+115,
+117,
+121,
+143,
+151,
+157,
+167,
+171,
+173,
+179,
+181,
+185,
+199,
+203,
+205,
+211,
+213,
+227,
+229,
+233, 
+241,
+127,
+191,
+223, 
+239,
+247,
+251,
+253 
+};
+
+char binary_string[32];
+
+char *
+u32_bit_string(uint32_t x, unsigned int length) {
+  unsigned int mask;
+  int index;
+ 
+  mask = 1 << length;
+  index = 0;
+  for (; mask > 0; mask >>= 1)
+    if ((x & mask) == 0)
+      binary_string[index++] = '0';
+    else
+      binary_string[index++] = '1';
+
+  binary_string[index++] = 0;  /* NULL terminate string */
+  return binary_string;
+}
+
+extern int octet_weight[256];
+
+unsigned int 
+weight(uint32_t poly) {
+  int wt = 0;
+
+  /* note: endian-ness makes no difference */
+  wt += octet_weight[poly        & 0xff]; 
+  wt += octet_weight[(poly >> 8) & 0xff];
+  wt += octet_weight[(poly >> 16) & 0xff];
+  wt += octet_weight[(poly >> 24)];
+
+  return wt;
+}
+
+#define MAX_PERIOD 65535
+
+#define debug_print 0
+
+int
+period(uint32_t poly) {
+  int i;
+  uint32_t x;
+
+
+  /* set lfsr to 1 */
+  x = 1;
+#if debug_print
+  printf("%d:\t%s\n", 0, u32_bit_string(x,8));
+#endif
+  for (i=1; i < MAX_PERIOD; i++) {
+    if (x & 1) 
+      x = (x >> 1) ^ poly;
+    else
+      x = (x >> 1);
+
+#if debug_print
+    /* print for a sanity check */
+    printf("%d:\t%s\n", i, u32_bit_string(x,8));
+#endif
+
+    /* check for return to original value */
+    if (x == 1)
+      return i;
+  }
+  return i;
+}
+
+/*
+ * weight distribution computes the weight distribution of the
+ * code generated by the polynomial poly
+ */
+
+#define MAX_LEN    8
+#define MAX_WEIGHT (1 << MAX_LEN)
+
+int A[MAX_WEIGHT+1];
+
+void
+weight_distribution2(uint32_t poly, int *A) {
+  int i;
+  uint32_t x;
+
+  /* zeroize array */
+  for (i=0; i < MAX_WEIGHT+1; i++)
+    A[i] = 0;
+
+  /* loop over all input sequences */
+  
+  
+  /* set lfsr to 1 */
+  x = 1;
+#if debug_print
+  printf("%d:\t%s\n", 0, u32_bit_string(x,8));
+#endif
+  for (i=1; i < MAX_PERIOD; i++) {
+    if (x & 1) 
+      x = (x >> 1) ^ poly;
+    else
+      x = (x >> 1);
+
+#if debug_print
+    /* print for a sanity check */
+    printf("%d:\t%s\n", i, u32_bit_string(x,8));
+#endif
+    
+    /* increment weight */
+    wt += (x & 1);
+
+    /* check for return to original value */
+    if (x == 1)
+      break;
+  }
+
+  /* set zero */
+  A[0] = 0;
+}
+
+
+void
+weight_distribution(uint32_t poly, int *A) {
+  int i;
+  uint32_t x;
+
+  /* zeroize array */
+  for (i=0; i < MAX_WEIGHT+1; i++)
+    A[i] = 0;
+
+  /* set lfsr to 1 */
+  x = 1;
+#if debug_print
+  printf("%d:\t%s\n", 0, u32_bit_string(x,8));
+#endif
+  for (i=1; i < MAX_PERIOD; i++) {
+    if (x & 1) 
+      x = (x >> 1) ^ poly;
+    else
+      x = (x >> 1);
+
+#if debug_print
+    /* print for a sanity check */
+    printf("%d:\t%s\n", i, u32_bit_string(x,8));
+#endif
+
+    /* compute weight, increment proper element */
+    A[weight(x)]++;
+
+    /* check for return to original value */
+    if (x == 1)
+      break;
+  }
+
+  /* set zero */
+  A[0] = 0;
+}
+
+
+
+
+int
+main () {
+
+  int i,j;
+  v32_t x;
+  v32_t p;
+
+  /* originally 0xaf */
+  p.value = 0x9;
+
+  printf("polynomial: %s\tperiod: %d\n",  
+ 	   u32_bit_string(p.value,8), period(p.value)); 
+ 
+   /* compute weight distribution */
+  weight_distribution(p.value, A);
+  
+  /* print weight distribution */
+  for (i=0; i <= 8; i++) {
+    printf("A[%d]: %d\n", i, A[i]);
+  }
+  
+#if 0
+  for (i=0; i < 39; i++) {
+     printf("polynomial: %s\tperiod: %d\n",  
+ 	   u32_bit_string(polynomials[i],8), period(polynomials[i])); 
+   
+     /* compute weight distribution */
+     weight_distribution(p.value, A);
+     
+     /* print weight distribution */
+     for (j=0; j <= 8; j++) {
+       printf("A[%d]: %d\n", j, A[j]);
+     }   
+  }
+#endif
+
+  { 
+    int bits = 8;
+    uint32_t y;
+    for (y=0; y < (1 << bits); y++) {
+      printf("polynomial: %s\tweight: %d\tperiod: %d\n", 
+	     u32_bit_string(y,bits), weight(y), period(y));
+      
+      /* compute weight distribution */
+      weight_distribution(y, A);
+      
+      /* print weight distribution */
+      for (j=0; j <= 8; j++) {
+	printf("A[%d]: %d\n", j, A[j]);
+      }     
+    }
+  }
+
+  return 0;
+}
diff --git a/jni/pjproject-android/.svn/pristine/d4/d468e793b97fa7d27a38c197ba964069720ff740.svn-base b/jni/pjproject-android/.svn/pristine/d4/d468e793b97fa7d27a38c197ba964069720ff740.svn-base
new file mode 100644
index 0000000..64e917a
--- /dev/null
+++ b/jni/pjproject-android/.svn/pristine/d4/d468e793b97fa7d27a38c197ba964069720ff740.svn-base
@@ -0,0 +1,83 @@
+/* $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 <pj/types.h>
+#include <pj/compat/string.h>
+#include <pj/ctype.h>
+#include <pj/assert.h>
+
+
+#if defined(PJ_HAS_STRING_H) && PJ_HAS_STRING_H != 0
+/* Nothing to do */
+#else
+PJ_DEF(int) strcasecmp(const char *s1, const char *s2)
+{
+    while ((*s1==*s2) || (pj_tolower(*s1)==pj_tolower(*s2))) {
+	if (!*s1++)
+	    return 0;
+	++s2;
+    }
+    return (pj_tolower(*s1) < pj_tolower(*s2)) ? -1 : 1;
+}
+
+PJ_DEF(int) strncasecmp(const char *s1, const char *s2, int len)
+{
+    if (!len) return 0;
+
+    while ((*s1==*s2) || (pj_tolower(*s1)==pj_tolower(*s2))) {
+	if (!*s1++ || --len <= 0)
+	    return 0;
+	++s2;
+    }
+    return (pj_tolower(*s1) < pj_tolower(*s2)) ? -1 : 1;
+}
+#endif
+
+#if defined(PJ_HAS_NO_SNPRINTF) && PJ_HAS_NO_SNPRINTF != 0
+
+PJ_DEF(int) snprintf(char *s1, pj_size_t len, const char *s2, ...)
+{
+    int ret;
+    va_list arg;
+
+    PJ_UNUSED_ARG(len);
+
+    va_start(arg, s2);
+    ret = vsprintf(s1, s2, arg);
+    va_end(arg);
+    
+    return ret;
+}
+
+PJ_DEF(int) vsnprintf(char *s1, pj_size_t len, const char *s2, va_list arg)
+{
+#define MARK_CHAR   ((char)255)
+    int rc;
+
+    s1[len-1] = MARK_CHAR;
+
+    rc = vsprintf(s1,s2,arg);
+
+    pj_assert(s1[len-1] == MARK_CHAR || s1[len-1] == '\0');
+
+    return rc;
+}
+
+#endif
+
diff --git a/jni/pjproject-android/.svn/pristine/d4/d4904b058799c5c263ec4ce6a0e043210cc8728f.svn-base b/jni/pjproject-android/.svn/pristine/d4/d4904b058799c5c263ec4ce6a0e043210cc8728f.svn-base
new file mode 100644
index 0000000..c2147bb
--- /dev/null
+++ b/jni/pjproject-android/.svn/pristine/d4/d4904b058799c5c263ec4ce6a0e043210cc8728f.svn-base
@@ -0,0 +1,26 @@
+/* $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 <pj/addr_resolv.h>
+
+PJ_DEF(pj_status_t) pj_gethostbyname(const pj_str_t *hostname, pj_hostent *phe)
+{
+    return -1;
+}
+
diff --git a/jni/pjproject-android/.svn/pristine/d4/d4fe9ed93f9a35db29ad08970551b0ea80604b30.svn-base b/jni/pjproject-android/.svn/pristine/d4/d4fe9ed93f9a35db29ad08970551b0ea80604b30.svn-base
new file mode 100644
index 0000000..19c0fcd
--- /dev/null
+++ b/jni/pjproject-android/.svn/pristine/d4/d4fe9ed93f9a35db29ad08970551b0ea80604b30.svn-base
@@ -0,0 +1,101 @@
+//------------------------------------------------------------------------------

+// File: FourCC.h

+//

+// Desc: DirectShow base classes.

+//

+// Copyright (c) 1992-2001 Microsoft Corporation.  All rights reserved.

+//------------------------------------------------------------------------------

+

+

+// FOURCCMap

+//

+// provides a mapping between old-style multimedia format DWORDs

+// and new-style GUIDs.

+//

+// A range of 4 billion GUIDs has been allocated to ensure that this

+// mapping can be done straightforwardly one-to-one in both directions.

+//

+// January 95

+

+

+#ifndef __FOURCC__

+#define __FOURCC__

+

+

+// Multimedia format types are marked with DWORDs built from four 8-bit

+// chars and known as FOURCCs. New multimedia AM_MEDIA_TYPE definitions include

+// a subtype GUID. In order to simplify the mapping, GUIDs in the range:

+//    XXXXXXXX-0000-0010-8000-00AA00389B71

+// are reserved for FOURCCs.

+

+class FOURCCMap : public GUID

+{

+

+public:

+    FOURCCMap();

+    FOURCCMap(DWORD Fourcc);

+    FOURCCMap(const GUID *);

+

+

+    DWORD GetFOURCC(void);

+    void SetFOURCC(DWORD fourcc);

+    void SetFOURCC(const GUID *);

+

+private:

+    void InitGUID();

+};

+

+#define GUID_Data2      0

+#define GUID_Data3     0x10

+#define GUID_Data4_1   0xaa000080

+#define GUID_Data4_2   0x719b3800

+

+inline void

+FOURCCMap::InitGUID() {

+    Data2 = GUID_Data2;

+    Data3 = GUID_Data3;

+    ((DWORD *)Data4)[0] = GUID_Data4_1;

+    ((DWORD *)Data4)[1] = GUID_Data4_2;

+}

+

+inline

+FOURCCMap::FOURCCMap() {

+    InitGUID();

+    SetFOURCC( DWORD(0));

+}

+

+inline

+FOURCCMap::FOURCCMap(DWORD fourcc)

+{

+    InitGUID();

+    SetFOURCC(fourcc);

+}

+

+inline

+FOURCCMap::FOURCCMap(const GUID * pGuid)

+{

+    InitGUID();

+    SetFOURCC(pGuid);

+}

+

+inline void

+FOURCCMap::SetFOURCC(const GUID * pGuid)

+{

+    FOURCCMap * p = (FOURCCMap*) pGuid;

+    SetFOURCC(p->GetFOURCC());

+}

+

+inline void

+FOURCCMap::SetFOURCC(DWORD fourcc)

+{

+    Data1 = fourcc;

+}

+

+inline DWORD

+FOURCCMap::GetFOURCC(void)

+{

+    return Data1;

+}

+

+#endif /* __FOURCC__ */

+