summaryrefslogtreecommitdiff
path: root/pjsip-apps
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2007-12-28 18:55:02 +0000
committerBenny Prijono <bennylp@teluu.com>2007-12-28 18:55:02 +0000
commit4cc0627a188a719358d9deb8a884b3941ee86820 (patch)
treeb8151af7aae830dec86bd54d1fa2aa68f8a08d5e /pjsip-apps
parenta1a1a2babda1465967373157c26c3d88a44f3cca (diff)
Ticket #435: Fixed and tested audio on Symbian device
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1641 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip-apps')
-rw-r--r--pjsip-apps/src/symbian_ua/ua.cpp15
-rw-r--r--pjsip-apps/src/symsndtest/app_main.cpp32
2 files changed, 40 insertions, 7 deletions
diff --git a/pjsip-apps/src/symbian_ua/ua.cpp b/pjsip-apps/src/symbian_ua/ua.cpp
index f8a2ec38..1dd8a20d 100644
--- a/pjsip-apps/src/symbian_ua/ua.cpp
+++ b/pjsip-apps/src/symbian_ua/ua.cpp
@@ -31,7 +31,7 @@
//
// Destination URI (to make call, or to subscribe presence)
//
-#define SIP_DST_URI "sip:192.168.0.7:5061"
+#define SIP_DST_URI "sip:192.168.0.11:5060"
//
// Account
@@ -57,7 +57,7 @@
//
// STUN server
-#if 1
+#if 0
// Use this to have the STUN server resolved normally
# define STUN_DOMAIN NULL
# define STUN_SERVER "stun.fwdnet.net"
@@ -74,7 +74,7 @@
//
// Use ICE?
//
-#define USE_ICE 1
+#define USE_ICE 0
//
@@ -320,6 +320,7 @@ static pj_status_t app_startup()
med_cfg.thread_cnt = 0; // Disable threading on Symbian
med_cfg.has_ioqueue = PJ_FALSE;
med_cfg.clock_rate = 8000;
+ med_cfg.audio_frame_ptime = 40;
med_cfg.ec_tail_len = 0;
med_cfg.enable_ice = USE_ICE;
@@ -452,6 +453,8 @@ static void PrintMenu()
" d Dump states\n"
" D Dump states detail\n"
" P Dump pool factory\n"
+ " l Start loopback audio device\n"
+ " L Stop loopback audio device\n"
" m Call " SIP_DST_URI "\n"
" a Answer call\n"
" h Hangup all calls\n"
@@ -481,6 +484,12 @@ void ConsoleUI::RunL()
case 'P':
pj_pool_factory_dump(pjsua_get_pool_factory(), PJ_TRUE);
break;
+ case 'l':
+ pjsua_conf_connect(0, 0);
+ break;
+ case 'L':
+ pjsua_conf_disconnect(0, 0);
+ break;
case 'm':
if (g_call_id != PJSUA_INVALID_ID) {
PJ_LOG(3,(THIS_FILE, "Another call is active"));
diff --git a/pjsip-apps/src/symsndtest/app_main.cpp b/pjsip-apps/src/symsndtest/app_main.cpp
index dcd6ed88..981e5308 100644
--- a/pjsip-apps/src/symsndtest/app_main.cpp
+++ b/pjsip-apps/src/symsndtest/app_main.cpp
@@ -28,9 +28,9 @@
#define CLOCK_RATE 8000
#define CHANNEL_COUNT 1
#define PTIME 100
-#define SAMPLES_PER_FRAME (2048)
+#define SAMPLES_PER_FRAME (80)
#define BITS_PER_SAMPLE 16
-
+#define LOOPBACK_BUFF_COUNT 100
extern CConsoleBase* console;
@@ -40,6 +40,9 @@ static unsigned rec_cnt, play_cnt;
static pj_time_val t_start;
+static pj_int16_t buff_loopback[SAMPLES_PER_FRAME*LOOPBACK_BUFF_COUNT];
+static pj_uint32_t pointer_w, pointer_r;
+
/* Logging callback */
static void log_writer(int level, const char *buf, unsigned len)
{
@@ -70,6 +73,7 @@ static pj_status_t app_init()
/* Redirect log */
pj_log_set_log_func((void (*)(int,const char*,int)) &log_writer);
pj_log_set_decor(PJ_LOG_HAS_NEWLINE);
+ pj_log_set_level(5);
/* Init pjlib */
status = pj_init();
@@ -114,6 +118,18 @@ static pj_status_t rec_cb(void *user_data,
PJ_UNUSED_ARG(timestamp);
PJ_UNUSED_ARG(input);
PJ_UNUSED_ARG(size);
+
+ pj_memcpy(&buff_loopback[pointer_w*SAMPLES_PER_FRAME], input, size);
+
+ if (size != SAMPLES_PER_FRAME*2) {
+ PJ_LOG(3, (THIS_FILE, "Size captured = %u",
+ size));
+ pj_bzero(&buff_loopback[pointer_w*SAMPLES_PER_FRAME]+size/2, SAMPLES_PER_FRAME*2 - size);
+ }
+
+ if (++pointer_w >= LOOPBACK_BUFF_COUNT) {
+ pointer_w = 0;
+ }
++rec_cnt;
return PJ_SUCCESS;
@@ -128,7 +144,12 @@ static pj_status_t play_cb(void *user_data,
PJ_UNUSED_ARG(user_data);
PJ_UNUSED_ARG(timestamp);
- pj_bzero(output, size);
+ //pj_bzero(output, size);
+ pj_memcpy(output, &buff_loopback[pointer_r*SAMPLES_PER_FRAME], SAMPLES_PER_FRAME*2);
+
+ if (++pointer_r >= LOOPBACK_BUFF_COUNT) {
+ pointer_r = 0;
+ }
++play_cnt;
return PJ_SUCCESS;
@@ -173,6 +194,9 @@ static pj_status_t snd_start(unsigned flag)
return status;
}
+ pointer_w = LOOPBACK_BUFF_COUNT/2;
+ pointer_r = 0;
+
return PJ_SUCCESS;
}
@@ -297,7 +321,7 @@ void ConsoleUI::RunL()
break;
case 'p':
snd_start(PJMEDIA_DIR_PLAYBACK);
- break;
+ break;
case 'c':
snd_stop();
break;