Ticket #818:
 - Added libresample.mmp
 - Modified config_site_sample.h to enable resampling with small filter on Symbian platforms.




git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@2676 74dad513-b988-da41-8d7b-12977e46ad98
diff --git a/build.symbian/bld.inf b/build.symbian/bld.inf
index 5df1800..f8dd360 100644
--- a/build.symbian/bld.inf
+++ b/build.symbian/bld.inf
@@ -23,6 +23,9 @@
 libg7221codec.mmp
 libpassthroughcodec.mmp
 
+/* Resample */
+libresample.mmp
+
 /* Audio device. */
 pjmedia_audiodev.mmp
 
diff --git a/build.symbian/libresample.mmp b/build.symbian/libresample.mmp
new file mode 100644
index 0000000..1498714
--- /dev/null
+++ b/build.symbian/libresample.mmp
@@ -0,0 +1,25 @@
+TARGET 		libresample.lib

+TARGETTYPE 	lib

+

+SOURCEPATH	..\third_party\resample\src

+

+//

+// GCCE optimization setting

+//

+OPTION		GCCE -O2 -fno-unit-at-a-time

+

+MACRO		PJ_M_I386=1

+MACRO		PJ_SYMBIAN=1

+

+MACRO       	RESAMPLE_HAS_SMALL_FILTER=1

+MACRO       	RESAMPLE_HAS_LARGE_FILTER=0

+

+SOURCE		resamplesubs.c

+

+SYSTEMINCLUDE	..\third_party\resample\include

+SYSTEMINCLUDE	..\third_party\build\resample

+

+SYSTEMINCLUDE	\epoc32\include

+SYSTEMINCLUDE	\epoc32\include\libc

+

+

diff --git a/build.symbian/pjmedia.mmp b/build.symbian/pjmedia.mmp
index 6c48b6c..a712f61 100644
--- a/build.symbian/pjmedia.mmp
+++ b/build.symbian/pjmedia.mmp
@@ -98,6 +98,7 @@
 SYSTEMINCLUDE	..\third_party\srtp\include
 SYSTEMINCLUDE	..\third_party\srtp\crypto\include
 SYSTEMINCLUDE	..\third_party\build\srtp
+SYSTEMINCLUDE	..
 
 SYSTEMINCLUDE	\epoc32\include
 SYSTEMINCLUDE	\epoc32\include\libc
diff --git a/build.symbian/symbian_ua.mmp b/build.symbian/symbian_ua.mmp
index 96a2cc3..1473486 100644
--- a/build.symbian/symbian_ua.mmp
+++ b/build.symbian/symbian_ua.mmp
@@ -44,6 +44,7 @@
 STATICLIBRARY		pjnath.lib
 STATICLIBRARY		pjlib_util.lib pjlib.lib
 STATICLIBRARY		libsrtp.lib
+STATICLIBRARY		libresample.lib
 
 #if SND_HAS_APS
 	LIBRARY		APSSession2.lib
diff --git a/pjlib/include/pj/config_site_sample.h b/pjlib/include/pj/config_site_sample.h
index 9336221..efcd419 100644
--- a/pjlib/include/pj/config_site_sample.h
+++ b/pjlib/include/pj/config_site_sample.h
@@ -133,8 +133,17 @@
     /* For CPU reason, disable speex AEC and use the echo suppressor. */
     #define PJMEDIA_HAS_SPEEX_AEC		0
 
-    /* Shouldn't use resampling for performance reason too. */
-    #define PJMEDIA_RESAMPLE_IMP		PJMEDIA_RESAMPLE_NONE
+    /* Previously, resampling is disabled due to performance reason and
+     * this condition prevented some 'light' wideband codecs (e.g: G722.1)
+     * to work along with narrowband codecs. Lately, some tests showed
+     * that 16kHz <-> 8kHz resampling using libresample small filter was 
+     * affordable on ARM9 222 MHz, so here we decided to enable resampling.
+     * Note that it is important to make sure that libresample is created
+     * using small filter. For example PJSUA_DEFAULT_CODEC_QUALITY must
+     * be set to 3 or 4 so pjsua-lib will apply small filter resampling.
+     */
+    //#define PJMEDIA_RESAMPLE_IMP		PJMEDIA_RESAMPLE_NONE
+    #define PJMEDIA_RESAMPLE_IMP		PJMEDIA_RESAMPLE_LIBRESAMPLE
 
     /* Use the lighter WSOLA implementation */
     #define PJMEDIA_WSOLA_IMP			PJMEDIA_WSOLA_IMP_WSOLA_LITE
@@ -172,8 +181,10 @@
      * PJSUA settings.
      */
 
-    /* Default codec quality */
-    #define PJSUA_DEFAULT_CODEC_QUALITY		5
+    /* Default codec quality, previously was set to 5, however it is now
+     * set to 4 to make sure pjsua instantiates resampler with small filter.
+     */
+    #define PJSUA_DEFAULT_CODEC_QUALITY		4
 
     /* Set maximum number of dialog/transaction/calls to minimum */
     #define PJSIP_MAX_TSX_COUNT 		31
diff --git a/pjsip-apps/src/symbian_ua_gui/group/symbian_ua_gui.mmp b/pjsip-apps/src/symbian_ua_gui/group/symbian_ua_gui.mmp
index 7d4466e..1c508d0 100644
--- a/pjsip-apps/src/symbian_ua_gui/group/symbian_ua_gui.mmp
+++ b/pjsip-apps/src/symbian_ua_gui/group/symbian_ua_gui.mmp
@@ -45,6 +45,7 @@
 STATICLIBRARY	libgsmcodec.lib

 STATICLIBRARY	libspeexcodec.lib

 STATICLIBRARY	libg7221codec.lib

+STATICLIBRARY	libresample.lib

 

 

 #if SND_USE_NULL

diff --git a/third_party/build/resample/config.h b/third_party/build/resample/config.h
index fde8937..634fb6a 100644
--- a/third_party/build/resample/config.h
+++ b/third_party/build/resample/config.h
@@ -1,3 +1,7 @@
-#define RESAMPLE_HAS_SMALL_FILTER	1
-#define RESAMPLE_HAS_LARGE_FILTER	1
+#ifndef RESAMPLE_HAS_SMALL_FILTER
+#   define RESAMPLE_HAS_SMALL_FILTER	1
+#endif
 
+#ifndef RESAMPLE_HAS_LARGE_FILTER
+#   define RESAMPLE_HAS_LARGE_FILTER	1
+#endif