diff --git a/jni/pjproject-android/pjsip-apps/src/pjsua/gui.h b/jni/pjproject-android/pjsip-apps/src/pjsua/gui.h
index 21ab748..f7ad169 100644
--- a/jni/pjproject-android/pjsip-apps/src/pjsua/gui.h
+++ b/jni/pjproject-android/pjsip-apps/src/pjsua/gui.h
@@ -1,4 +1,4 @@
-/* $Id$ */
+/* $Id: gui.h 3553 2011-05-05 06:14:19Z nanang $ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  *
diff --git a/jni/pjproject-android/pjsip-apps/src/pjsua/ios/ipjsua.xcodeproj/project.pbxproj b/jni/pjproject-android/pjsip-apps/src/pjsua/ios/ipjsua.xcodeproj/project.pbxproj
index 5c0b4c6..1c6b0bd 100644
--- a/jni/pjproject-android/pjsip-apps/src/pjsua/ios/ipjsua.xcodeproj/project.pbxproj
+++ b/jni/pjproject-android/pjsip-apps/src/pjsua/ios/ipjsua.xcodeproj/project.pbxproj
@@ -15,6 +15,7 @@
 		3ADCCD2F172E40120007BE8E /* pjsua_app_config.c in Sources */ = {isa = PBXBuildFile; fileRef = 3ADCCD2A172E40120007BE8E /* pjsua_app_config.c */; };
 		3ADCCD30172E40120007BE8E /* pjsua_app_legacy.c in Sources */ = {isa = PBXBuildFile; fileRef = 3ADCCD2B172E40120007BE8E /* pjsua_app_legacy.c */; };
 		3ADCCD31172E40120007BE8E /* pjsua_app.c in Sources */ = {isa = PBXBuildFile; fileRef = 3ADCCD2C172E40120007BE8E /* pjsua_app.c */; };
+		3ADFCCFD1803B00600B0A097 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3ADFCCFC1803B00600B0A097 /* AVFoundation.framework */; };
 		3AF0580916F050770046B835 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3AF0580816F050770046B835 /* UIKit.framework */; };
 		3AF0580B16F050770046B835 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3AF0580A16F050770046B835 /* Foundation.framework */; };
 		3AF0580D16F050770046B835 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3AF0580C16F050770046B835 /* CoreGraphics.framework */; };
@@ -57,6 +58,7 @@
 		3ADCCD2A172E40120007BE8E /* pjsua_app_config.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pjsua_app_config.c; path = ../../pjsua_app_config.c; sourceTree = "<group>"; };
 		3ADCCD2B172E40120007BE8E /* pjsua_app_legacy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pjsua_app_legacy.c; path = ../../pjsua_app_legacy.c; sourceTree = "<group>"; };
 		3ADCCD2C172E40120007BE8E /* pjsua_app.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pjsua_app.c; path = ../../pjsua_app.c; sourceTree = "<group>"; };
+		3ADFCCFC1803B00600B0A097 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
 		3AF0580416F050770046B835 /* ipjsua.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ipjsua.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		3AF0580816F050770046B835 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
 		3AF0580A16F050770046B835 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
@@ -100,6 +102,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				3ADFCCFD1803B00600B0A097 /* AVFoundation.framework in Frameworks */,
 				3A92069316F1DEA500D49F96 /* CFNetwork.framework in Frameworks */,
 				3A92068F16F1DE7100D49F96 /* AudioToolbox.framework in Frameworks */,
 				3AF0580916F050770046B835 /* UIKit.framework in Frameworks */,
@@ -163,6 +166,7 @@
 		3AF0580716F050770046B835 /* Frameworks */ = {
 			isa = PBXGroup;
 			children = (
+				3ADFCCFC1803B00600B0A097 /* AVFoundation.framework */,
 				3A92069216F1DEA500D49F96 /* CFNetwork.framework */,
 				3A92068E16F1DE7100D49F96 /* AudioToolbox.framework */,
 				3AF0580816F050770046B835 /* UIKit.framework */,
diff --git a/jni/pjproject-android/pjsip-apps/src/pjsua/main.c b/jni/pjproject-android/pjsip-apps/src/pjsua/main.c
index ef89e6b..424b08a 100644
--- a/jni/pjproject-android/pjsip-apps/src/pjsua/main.c
+++ b/jni/pjproject-android/pjsip-apps/src/pjsua/main.c
@@ -1,4 +1,4 @@
-/* $Id$ */
+/* $Id: main.c 4522 2013-05-23 03:48:31Z riza $ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app.c b/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app.c
index 2521193..e7b66ff 100644
--- a/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app.c
+++ b/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app.c
@@ -1,4 +1,4 @@
-/* $Id$ */
+/* $Id: pjsua_app.c 4634 2013-10-23 09:29:35Z riza $ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
@@ -325,8 +325,8 @@
 		  notif_st,
 		  call_info.remote_info.ptr,
 		  call_info.local_info.ptr,
-		  (app_config.use_cli?"c a":"a"),
-		  (app_config.use_cli?"c g":"h")));
+		  (app_config.use_cli?"ca a":"a"),
+		  (app_config.use_cli?"g":"h")));
     }
 }
 
@@ -847,7 +847,7 @@
 	return;
     }
 
-    body.ptr = mwi_info->rdata->msg_info.msg->body->data;
+    body.ptr = (char *)mwi_info->rdata->msg_info.msg->body->data;
     body.slen = mwi_info->rdata->msg_info.msg->body->len;
 
     PJ_LOG(3,(THIS_FILE, " Body:\n%.*s", (int)body.slen, body.ptr));
@@ -1077,33 +1077,35 @@
     pj_status_t status;
 
     status = pjsip_endpt_create_response(pjsua_get_pjsip_endpt(),
-				 rdata, 200, NULL, &tdata);
+					 rdata, 200, NULL, &tdata);
     if (status != PJ_SUCCESS)
     return;
 
-    exp = pjsip_msg_find_hdr(rdata->msg_info.msg, PJSIP_H_EXPIRES, NULL);
+    exp = (pjsip_expires_hdr *)pjsip_msg_find_hdr(rdata->msg_info.msg, 
+						  PJSIP_H_EXPIRES, NULL);
 
     h = rdata->msg_info.msg->hdr.next;
     while (h != &rdata->msg_info.msg->hdr) {
-    if (h->type == PJSIP_H_CONTACT) {
-    const pjsip_contact_hdr *c = (const pjsip_contact_hdr*)h;
-    int e = c->expires;
+	if (h->type == PJSIP_H_CONTACT) {
+	    const pjsip_contact_hdr *c = (const pjsip_contact_hdr*)h;
+	    int e = c->expires;
 
-    if (e < 0) {
-	if (exp)
-	    e = exp->ivalue;
-	else
-	    e = 3600;
-    }
+	    if (e < 0) {
+		if (exp)
+		    e = exp->ivalue;
+		else
+		    e = 3600;
+	    }
 
-    if (e > 0) {
-	pjsip_contact_hdr *nc = pjsip_hdr_clone(tdata->pool, h);
-	nc->expires = e;
-	pjsip_msg_add_hdr(tdata->msg, (pjsip_hdr*)nc);
-	++cnt;
-    }
-    }
-    h = h->next;
+	    if (e > 0) {
+		pjsip_contact_hdr *nc = (pjsip_contact_hdr *)pjsip_hdr_clone(
+								tdata->pool, h);
+		nc->expires = e;
+		pjsip_msg_add_hdr(tdata->msg, (pjsip_hdr*)nc);
+		++cnt;
+	    }
+	}
+	h = h->next;
     }
 
     srv = pjsip_generic_string_hdr_create(tdata->pool, NULL, NULL);
@@ -1164,8 +1166,8 @@
 	cap_hdr = pjsip_endpt_get_capability(pjsua_get_pjsip_endpt(), 
 					     PJSIP_H_ALLOW, NULL);
 	if (cap_hdr) {
-	    pjsip_msg_add_hdr(tdata->msg, pjsip_hdr_clone(tdata->pool, 
-							   cap_hdr));
+	    pjsip_msg_add_hdr(tdata->msg, (pjsip_hdr *)pjsip_hdr_clone(
+							 tdata->pool, cap_hdr));
 	}
     }
 
@@ -1591,12 +1593,17 @@
 
 	/* Add local account */
 	pjsua_acc_add_local(transport_id, PJ_TRUE, &aid);
-	if (PJMEDIA_HAS_VIDEO) {
+
+	/* Adjust local account config based on pjsua app config */
+	{
 	    pjsua_acc_config acc_cfg;
 	    pjsua_acc_get_config(aid, tmp_pool, &acc_cfg);
+
 	    app_config_init_video(&acc_cfg);
+	    acc_cfg.rtp_cfg = app_config.rtp_cfg;
 	    pjsua_acc_modify(aid, &acc_cfg);
 	}
+
 	//pjsua_acc_set_transport(aid, transport_id);
 	pjsua_acc_set_online_status(current_acc, PJ_TRUE);
 
@@ -1630,14 +1637,18 @@
 
 	/* Add local account */
 	pjsua_acc_add_local(transport_id, PJ_TRUE, &aid);
-	if (PJMEDIA_HAS_VIDEO) {
+
+	/* Adjust local account config based on pjsua app config */
+	{
 	    pjsua_acc_config acc_cfg;
 	    pjsua_acc_get_config(aid, tmp_pool, &acc_cfg);
+
 	    app_config_init_video(&acc_cfg);
-	    if (app_config.ipv6)
-		acc_cfg.ipv6_media_use = PJSUA_IPV6_ENABLED;
+	    acc_cfg.rtp_cfg = app_config.rtp_cfg;
+	    acc_cfg.ipv6_media_use = PJSUA_IPV6_ENABLED;
 	    pjsua_acc_modify(aid, &acc_cfg);
 	}
+
 	//pjsua_acc_set_transport(aid, transport_id);
 	pjsua_acc_set_online_status(current_acc, PJ_TRUE);
 
@@ -1664,12 +1675,17 @@
 
 	/* Add local account */
 	pjsua_acc_add_local(transport_id, PJ_TRUE, &aid);
-	if (PJMEDIA_HAS_VIDEO) {
+
+	/* Adjust local account config based on pjsua app config */
+	{
 	    pjsua_acc_config acc_cfg;
 	    pjsua_acc_get_config(aid, tmp_pool, &acc_cfg);
+
 	    app_config_init_video(&acc_cfg);
+	    acc_cfg.rtp_cfg = app_config.rtp_cfg;
 	    pjsua_acc_modify(aid, &acc_cfg);
 	}
+
 	pjsua_acc_set_online_status(current_acc, PJ_TRUE);
 
     }
@@ -1689,14 +1705,18 @@
 
 	/* Add local account */
 	pjsua_acc_add_local(transport_id, PJ_TRUE, &aid);
-	if (PJMEDIA_HAS_VIDEO) {
+
+	/* Adjust local account config based on pjsua app config */
+	{
 	    pjsua_acc_config acc_cfg;
 	    pjsua_acc_get_config(aid, tmp_pool, &acc_cfg);
+
 	    app_config_init_video(&acc_cfg);
-	    if (app_config.ipv6)
-		acc_cfg.ipv6_media_use = PJSUA_IPV6_ENABLED;
+	    acc_cfg.rtp_cfg = app_config.rtp_cfg;
+	    acc_cfg.ipv6_media_use = PJSUA_IPV6_ENABLED;
 	    pjsua_acc_modify(aid, &acc_cfg);
 	}
+
 	//pjsua_acc_set_transport(aid, transport_id);
 	pjsua_acc_set_online_status(current_acc, PJ_TRUE);
     }
@@ -1724,12 +1744,17 @@
 	
 	/* Add local account */
 	pjsua_acc_add_local(transport_id, PJ_FALSE, &acc_id);
-	if (PJMEDIA_HAS_VIDEO) {
+
+	/* Adjust local account config based on pjsua app config */
+	{
 	    pjsua_acc_config acc_cfg;
 	    pjsua_acc_get_config(acc_id, tmp_pool, &acc_cfg);
+
 	    app_config_init_video(&acc_cfg);
+	    acc_cfg.rtp_cfg = app_config.rtp_cfg;
 	    pjsua_acc_modify(acc_id, &acc_cfg);
 	}
+
 	pjsua_acc_set_online_status(acc_id, PJ_TRUE);
     }
 
@@ -1748,14 +1773,18 @@
 
 	/* Add local account */
 	pjsua_acc_add_local(transport_id, PJ_TRUE, &aid);
-	if (PJMEDIA_HAS_VIDEO) {
+
+	/* Adjust local account config based on pjsua app config */
+	{
 	    pjsua_acc_config acc_cfg;
 	    pjsua_acc_get_config(aid, tmp_pool, &acc_cfg);
+
 	    app_config_init_video(&acc_cfg);
-	    if (app_config.ipv6)
-		acc_cfg.ipv6_media_use = PJSUA_IPV6_ENABLED;
+	    acc_cfg.rtp_cfg = app_config.rtp_cfg;
+	    acc_cfg.ipv6_media_use = PJSUA_IPV6_ENABLED;
 	    pjsua_acc_modify(aid, &acc_cfg);
 	}
+
 	//pjsua_acc_set_transport(aid, transport_id);
 	pjsua_acc_set_online_status(current_acc, PJ_TRUE);
     }
diff --git a/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app.h b/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app.h
index a9c627b..568fa76 100644
--- a/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app.h
+++ b/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app.h
@@ -1,4 +1,4 @@
-/* $Id$ */
+/* $Id: pjsua_app.h 4489 2013-04-23 07:53:25Z riza $ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  *
diff --git a/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_cli.c b/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_cli.c
index 4247de0..6dad7d2 100644
--- a/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_cli.c
+++ b/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_cli.c
@@ -1,4 +1,4 @@
-/* $Id$ */
+/* $Id: pjsua_app_cli.c 4634 2013-10-23 09:29:35Z riza $ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
@@ -1643,9 +1643,9 @@
      * Cycle next/prev dialog.
      */
     if (next) {
-	find_next_call(current_call);
+	find_next_call();
     } else {
-	find_prev_call(current_call);
+	find_prev_call();
     }
 
     if (current_call != PJSUA_INVALID_ID) {	
diff --git a/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_common.c b/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_common.c
index 2f79cae..e95d765 100644
--- a/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_common.c
+++ b/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_common.c
@@ -1,4 +1,4 @@
-/* $Id$ */
+/* $Id: pjsua_app_common.c 4537 2013-06-19 06:47:43Z riza $ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_common.h b/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_common.h
index 3d2ebc4..996ed06 100644
--- a/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_common.h
+++ b/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_common.h
@@ -1,4 +1,4 @@
-/* $Id$ */
+/* $Id: pjsua_app_common.h 4489 2013-04-23 07:53:25Z riza $ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  *
diff --git a/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_config.c b/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_config.c
index f7450d0..ce06d49 100644
--- a/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_config.c
+++ b/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_config.c
@@ -1,4 +1,4 @@
-/* $Id$ */
+/* $Id: pjsua_app_config.c 4537 2013-06-19 06:47:43Z riza $ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_config.h b/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_config.h
index 40a24ed..216757f 100644
--- a/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_config.h
+++ b/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_config.h
@@ -1,4 +1,4 @@
-/* $Id$ */
+/* $Id: pjsua_app_config.h 4492 2013-04-23 10:59:52Z nanang $ */
 /*
  * Copyright (C) 2008-2013 Teluu Inc. (http://www.teluu.com)
  *
diff --git a/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_legacy.c b/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_legacy.c
index 30725b5..54a9dc7 100644
--- a/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_legacy.c
+++ b/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_legacy.c
@@ -1,4 +1,4 @@
-/* $Id$ */
+/* $Id: pjsua_app_legacy.c 4580 2013-08-06 08:02:24Z bennylp $ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip-apps/src/pjsua/wm/main_wm.c b/jni/pjproject-android/pjsip-apps/src/pjsua/wm/main_wm.c
index 311ca77..d9c2139 100644
--- a/jni/pjproject-android/pjsip-apps/src/pjsua/wm/main_wm.c
+++ b/jni/pjproject-android/pjsip-apps/src/pjsua/wm/main_wm.c
@@ -1,4 +1,4 @@
-/* $Id$ */
+/* $Id: main_wm.c 4492 2013-04-23 10:59:52Z nanang $ */
 /* 
  * Copyright (C) 2013 Teluu Inc. (http://www.teluu.com)
  *
