* #39101: updated pjsip stack, many android build enhancements.

The main issue here is due to the build system of the stack compared to a pure Android
NDK project. Generating arm and x86 ABI at the same time does not seem to be possible.
diff --git a/jni/pjproject-android/pjmedia/build/Makefile b/jni/pjproject-android/pjmedia/build/Makefile
index e21e9c0..a567e63 100644
--- a/jni/pjproject-android/pjmedia/build/Makefile
+++ b/jni/pjproject-android/pjmedia/build/Makefile
@@ -3,10 +3,6 @@
 
 THIRD_PARTY:=$(PJDIR)/third_party
 
-SRTP_INC=$(CC_INC)$(THIRD_PARTY)/build/srtp \
-	 $(CC_INC)$(THIRD_PARTY)/srtp/crypto/include \
-	 $(CC_INC)$(THIRD_PARTY)/srtp/include
-
 include $(PJDIR)/build/common.mak
 
 export LIBDIR := ../lib
@@ -48,8 +44,7 @@
 		   $(CC_INC)../../pjlib-util/include \
 		   $(CC_INC)../../pjmedia/include \
 		   $(CC_INC)../../pjnath/include \
-		   $(CC_INC)../.. \
-		   $(SRTP_INC) 
+		   $(CC_INC)../..
 export _CXXFLAGS:= $(_CFLAGS) $(CC_CXXFLAGS) $(OS_CXXFLAGS) $(M_CXXFLAGS) \
 		   $(HOST_CXXFLAGS) $(CXXFLAGS)
 
@@ -71,7 +66,7 @@
 			event.o format.o ffmpeg_util.o \
 			g711.o jbuf.o master_port.o mem_capture.o mem_player.o \
 			null_port.o plc_common.o port.o splitcomb.o \
-			resample_resample.o resample_libsamplerate.o \
+			resample_resample.o resample_libsamplerate.o resample_speex.o \
 			resample_port.o rtcp.o rtcp_xr.o rtp.o \
 			sdp.o sdp_cmp.o sdp_neg.o session.o silencedet.o \
 			sound_legacy.o sound_port.o stereo_port.o stream_common.o \
diff --git a/jni/pjproject-android/pjmedia/build/os-auto.mak.in b/jni/pjproject-android/pjmedia/build/os-auto.mak.in
index b0502f3..f451331 100644
--- a/jni/pjproject-android/pjmedia/build/os-auto.mak.in
+++ b/jni/pjproject-android/pjmedia/build/os-auto.mak.in
@@ -129,6 +129,42 @@
 
 
 #
+# SRTP
+#
+ifeq (@ac_external_srtp@,1)
+# External SRTP
+export CFLAGS += -DPJMEDIA_EXTERNAL_SRTP=1
+else
+# Our SRTP in third_party
+export CFLAGS += -I$(THIRD_PARTY)/build/srtp \
+	 -I$(THIRD_PARTY)/srtp/crypto/include \
+	 -I$(THIRD_PARTY)/srtp/include
+
+endif
+
+#
+# Resample
+#
+AC_PJMEDIA_RESAMPLE=@ac_pjmedia_resample@
+
+ifeq ($(AC_PJMEDIA_RESAMPLE),none)
+# No resample support
+export CFLAGS += -DPJMEDIA_RESAMPLE_IMP=PJMEDIA_RESAMPLE_NONE
+endif
+
+ifeq ($(AC_PJMEDIA_RESAMPLE),libresample)
+export CFLAGS += -DPJMEDIA_RESAMPLE_IMP=PJMEDIA_RESAMPLE_LIBRESAMPLE
+endif
+
+ifeq ($(AC_PJMEDIA_RESAMPLE),libsamplerate)
+export CFLAGS += -DPJMEDIA_RESAMPLE_IMP=PJMEDIA_RESAMPLE_LIBSAMPLERATE
+endif
+
+ifeq ($(AC_PJMEDIA_RESAMPLE),speex)
+export CFLAGS += -DPJMEDIA_RESAMPLE_IMP=PJMEDIA_RESAMPLE_SPEEX
+endif
+
+#
 # PortAudio
 #
 ifneq ($(findstring pa,$(AC_PJMEDIA_SND)),)
diff --git a/jni/pjproject-android/pjmedia/build/os-darwinos.mak b/jni/pjproject-android/pjmedia/build/os-darwinos.mak
index 7904594..3548c8e 100644
--- a/jni/pjproject-android/pjmedia/build/os-darwinos.mak
+++ b/jni/pjproject-android/pjmedia/build/os-darwinos.mak
@@ -78,6 +78,42 @@
 export G7221_CFLAGS += -I$(THIRD_PARTY)
 endif
 
+#
+# Resample
+#
+AC_PJMEDIA_RESAMPLE=libresample
+
+ifeq ($(AC_PJMEDIA_RESAMPLE),none)
+# No resample support
+export CFLAGS += -DPJMEDIA_RESAMPLE_IMP=PJMEDIA_RESAMPLE_NONE
+endif
+
+ifeq ($(AC_PJMEDIA_RESAMPLE),libresample)
+export CFLAGS += -DPJMEDIA_RESAMPLE_IMP=PJMEDIA_RESAMPLE_LIBRESAMPLE
+endif
+
+ifeq ($(AC_PJMEDIA_RESAMPLE),libsamplerate)
+export CFLAGS += -DPJMEDIA_RESAMPLE_IMP=PJMEDIA_RESAMPLE_LIBSAMPLERATE
+endif
+
+ifeq ($(AC_PJMEDIA_RESAMPLE),speex)
+export CFLAGS += -DPJMEDIA_RESAMPLE_IMP=PJMEDIA_RESAMPLE_SPEEX
+endif
+
+#
+# SRTP
+#
+#ifeq (@ac_external_srtp@,1)
+ifeq (0,1)
+# External SRTP
+export CFLAGS += -DPJMEDIA_EXTERNAL_SRTP=1
+else
+# Our SRTP in third_party
+export CFLAGS += -I$(THIRD_PARTY)/build/srtp \
+	 -I$(THIRD_PARTY)/srtp/crypto/include \
+	 -I$(THIRD_PARTY)/srtp/include
+
+endif
 
 #
 # PortAudio
diff --git a/jni/pjproject-android/pjmedia/build/os-linux.mak b/jni/pjproject-android/pjmedia/build/os-linux.mak
index 63910c4..eb05091 100644
--- a/jni/pjproject-android/pjmedia/build/os-linux.mak
+++ b/jni/pjproject-android/pjmedia/build/os-linux.mak
@@ -72,6 +72,42 @@
 export G7221_CFLAGS += -I$(THIRD_PARTY)
 endif
 
+#
+# Resample
+#
+AC_PJMEDIA_RESAMPLE=libresample
+
+ifeq ($(AC_PJMEDIA_RESAMPLE),none)
+# No resample support
+export CFLAGS += -DPJMEDIA_RESAMPLE_IMP=PJMEDIA_RESAMPLE_NONE
+endif
+
+ifeq ($(AC_PJMEDIA_RESAMPLE),libresample)
+export CFLAGS += -DPJMEDIA_RESAMPLE_IMP=PJMEDIA_RESAMPLE_LIBRESAMPLE
+endif
+
+ifeq ($(AC_PJMEDIA_RESAMPLE),libsamplerate)
+export CFLAGS += -DPJMEDIA_RESAMPLE_IMP=PJMEDIA_RESAMPLE_LIBSAMPLERATE
+endif
+
+ifeq ($(AC_PJMEDIA_RESAMPLE),speex)
+export CFLAGS += -DPJMEDIA_RESAMPLE_IMP=PJMEDIA_RESAMPLE_SPEEX
+endif
+
+#
+# SRTP
+#
+#ifeq (@ac_external_srtp@,1)
+ifeq (0,1)
+# External SRTP
+export CFLAGS += -DPJMEDIA_EXTERNAL_SRTP=1
+else
+# Our SRTP in third_party
+export CFLAGS += -I$(THIRD_PARTY)/build/srtp \
+	 -I$(THIRD_PARTY)/srtp/crypto/include \
+	 -I$(THIRD_PARTY)/srtp/include
+
+endif
 
 #
 # PortAudio
diff --git a/jni/pjproject-android/pjmedia/build/os-rtems.mak b/jni/pjproject-android/pjmedia/build/os-rtems.mak
index bbcfad4..cf7440f 100644
--- a/jni/pjproject-android/pjmedia/build/os-rtems.mak
+++ b/jni/pjproject-android/pjmedia/build/os-rtems.mak
@@ -6,3 +6,4 @@
 export PJMEDIA_OBJS += nullsound.o
 export SOUND_OBJS = $(NULLSOUND_OBJS)
 
+export CFLAGS += -DPJMEDIA_RESAMPLE_IMP=PJMEDIA_RESAMPLE_LIBRESAMPLE
diff --git a/jni/pjproject-android/pjmedia/build/os-win32.mak b/jni/pjproject-android/pjmedia/build/os-win32.mak
index 498a9e1..b85183a 100644
--- a/jni/pjproject-android/pjmedia/build/os-win32.mak
+++ b/jni/pjproject-android/pjmedia/build/os-win32.mak
@@ -74,6 +74,42 @@
 export G7221_CFLAGS += -I$(THIRD_PARTY)
 endif
 
+#
+# Resample
+#
+AC_PJMEDIA_RESAMPLE=libresample
+
+ifeq ($(AC_PJMEDIA_RESAMPLE),none)
+# No resample support
+export CFLAGS += -DPJMEDIA_RESAMPLE_IMP=PJMEDIA_RESAMPLE_NONE
+endif
+
+ifeq ($(AC_PJMEDIA_RESAMPLE),libresample)
+export CFLAGS += -DPJMEDIA_RESAMPLE_IMP=PJMEDIA_RESAMPLE_LIBRESAMPLE
+endif
+
+ifeq ($(AC_PJMEDIA_RESAMPLE),libsamplerate)
+export CFLAGS += -DPJMEDIA_RESAMPLE_IMP=PJMEDIA_RESAMPLE_LIBSAMPLERATE
+endif
+
+ifeq ($(AC_PJMEDIA_RESAMPLE),speex)
+export CFLAGS += -DPJMEDIA_RESAMPLE_IMP=PJMEDIA_RESAMPLE_SPEEX
+endif
+
+#
+# SRTP
+#
+#ifeq (@ac_external_srtp@,1)
+ifeq (0,1)
+# External SRTP
+export CFLAGS += -DPJMEDIA_EXTERNAL_SRTP=1
+else
+# Our SRTP in third_party
+export CFLAGS += -I$(THIRD_PARTY)/build/srtp \
+	 -I$(THIRD_PARTY)/srtp/crypto/include \
+	 -I$(THIRD_PARTY)/srtp/include
+
+endif
 
 #
 # PortAudio
diff --git a/jni/pjproject-android/pjmedia/include/pjmedia-videodev/videodev.h b/jni/pjproject-android/pjmedia/include/pjmedia-videodev/videodev.h
index 9ba4982..9bb42e6 100644
--- a/jni/pjproject-android/pjmedia/include/pjmedia-videodev/videodev.h
+++ b/jni/pjproject-android/pjmedia/include/pjmedia-videodev/videodev.h
@@ -1,4 +1,4 @@
-/* $Id: videodev.h 4167 2012-06-15 08:13:43Z ming $ */
+/* $Id: videodev.h 4704 2014-01-16 05:30:46Z ming $ */
 /*
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  *
@@ -131,7 +131,7 @@
 /**
  * Device index constants.
  */
-enum
+enum pjmedia_vid_dev_std_index
 {
     /**
      * Constant to denote default capture device
diff --git a/jni/pjproject-android/pjmedia/include/pjmedia/config.h b/jni/pjproject-android/pjmedia/include/pjmedia/config.h
index 666b7ff..cb0c53e 100644
--- a/jni/pjproject-android/pjmedia/include/pjmedia/config.h
+++ b/jni/pjproject-android/pjmedia/include/pjmedia/config.h
@@ -1,4 +1,4 @@
-/* $Id: config.h 4577 2013-08-01 04:18:15Z ming $ */
+/* $Id: config.h 4701 2014-01-03 03:44:05Z nanang $ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
@@ -914,6 +914,19 @@
 
 
 /**
+ * Let the library handle libsrtp initialization and deinitialization.
+ * Application may want to disable this and manually perform libsrtp
+ * initialization and deinitialization when it needs to use libsrtp
+ * before the library is initialized or after the library is shutdown.
+ *
+ * By default it is enabled.
+ */
+#ifndef PJMEDIA_LIBSRTP_AUTO_INIT_DEINIT
+#   define PJMEDIA_LIBSRTP_AUTO_INIT_DEINIT	    1
+#endif
+
+
+/**
  * Enable support to handle codecs with inconsistent clock rate
  * between clock rate in SDP/RTP & the clock rate that is actually used.
  * This happens for example with G.722 and MPEG audio codecs.
diff --git a/jni/pjproject-android/pjmedia/src/pjmedia-audiodev/bb10_dev.c b/jni/pjproject-android/pjmedia/src/pjmedia-audiodev/bb10_dev.c
index 91158b9..2be485e 100644
--- a/jni/pjproject-android/pjmedia/src/pjmedia-audiodev/bb10_dev.c
+++ b/jni/pjproject-android/pjmedia/src/pjmedia-audiodev/bb10_dev.c
@@ -1,4 +1,4 @@
-/* $Id: bb10_dev.c 4512 2013-04-30 09:00:36Z bennylp $ */
+/* $Id: bb10_dev.c 4707 2014-01-17 05:09:29Z bennylp $ */
 /*
  * Copyright (C) 2008-2012 Teluu Inc. (http://www.teluu.com)
  *
@@ -657,6 +657,7 @@
     }
 
     if (ret != 0) {
+        TRACE_((THIS_FILE, "audio_manager_set_handle_type error ret = %d",ret));
         return PJMEDIA_EAUD_SYSERR;
     }else{
         return PJ_SUCCESS;
diff --git a/jni/pjproject-android/pjmedia/src/pjmedia/transport_srtp.c b/jni/pjproject-android/pjmedia/src/pjmedia/transport_srtp.c
index 6d14885..0934275 100644
--- a/jni/pjproject-android/pjmedia/src/pjmedia/transport_srtp.c
+++ b/jni/pjproject-android/pjmedia/src/pjmedia/transport_srtp.c
@@ -1,4 +1,4 @@
-/* $Id: transport_srtp.c 4613 2013-10-08 09:08:13Z bennylp $ */
+/* $Id: transport_srtp.c 4701 2014-01-03 03:44:05Z nanang $ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
@@ -30,7 +30,11 @@
 
 #if defined(PJMEDIA_HAS_SRTP) && (PJMEDIA_HAS_SRTP != 0)
 
-#include <srtp.h>
+#if defined(PJMEDIA_EXTERNAL_SRTP) && (PJMEDIA_EXTERNAL_SRTP != 0)
+#  include <srtp/srtp.h>
+#else
+#  include <srtp.h>
+#endif
 
 #define THIS_FILE   "transport_srtp.c"
 
@@ -276,6 +280,7 @@
 
 PJ_DEF(pj_status_t) pjmedia_srtp_init_lib(pjmedia_endpt *endpt)
 {
+#if PJMEDIA_LIBSRTP_AUTO_INIT_DEINIT
     if (libsrtp_initialized == PJ_FALSE) {
 	err_status_t err;
 
@@ -298,6 +303,9 @@
 
 	libsrtp_initialized = PJ_TRUE;
     }
+#else
+    PJ_UNUSED_ARG(endpt);
+#endif
     
     return PJ_SUCCESS;
 }