diff options
author | Benny Prijono <bennylp@teluu.com> | 2007-12-28 18:55:02 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2007-12-28 18:55:02 +0000 |
commit | 4cc0627a188a719358d9deb8a884b3941ee86820 (patch) | |
tree | b8151af7aae830dec86bd54d1fa2aa68f8a08d5e /pjsip-apps/src | |
parent | a1a1a2babda1465967373157c26c3d88a44f3cca (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/src')
-rw-r--r-- | pjsip-apps/src/symbian_ua/ua.cpp | 15 | ||||
-rw-r--r-- | pjsip-apps/src/symsndtest/app_main.cpp | 32 |
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; |