From c2ffe11838cd6966a79df6749828ca0d14f9b5a7 Mon Sep 17 00:00:00 2001 From: Nanang Izzuddin Date: Tue, 30 Jun 2009 13:37:26 +0000 Subject: Ticket #909: - Added new audio device VAS for Symbian platform. - Updated symsndtest to use the latest audio device framework. git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@2821 74dad513-b988-da41-8d7b-12977e46ad98 --- .../src/symbian_ua_gui/group/symbian_ua_gui.mmp | 2 +- pjsip-apps/src/symsndtest/app_main.cpp | 70 ++++++++++------------ 2 files changed, 32 insertions(+), 40 deletions(-) (limited to 'pjsip-apps') 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 e3e209a2..f5a7931b 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 @@ -62,7 +62,7 @@ STATICLIBRARY libresample.lib #endif #if SND_HAS_VAS -// LIBRARY + LIBRARY VoIPAudioIntfc.lib #endif #if SND_HAS_MDA diff --git a/pjsip-apps/src/symsndtest/app_main.cpp b/pjsip-apps/src/symsndtest/app_main.cpp index 056cde10..e58be081 100644 --- a/pjsip-apps/src/symsndtest/app_main.cpp +++ b/pjsip-apps/src/symsndtest/app_main.cpp @@ -17,8 +17,9 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include -#include +#include #include #include #include @@ -36,7 +37,7 @@ extern CConsoleBase* console; static pj_caching_pool cp; -static pjmedia_snd_stream *strm; +static pjmedia_aud_stream *strm; static unsigned rec_cnt, play_cnt; static pj_time_val t_start; @@ -85,7 +86,7 @@ static pj_status_t app_init() pj_caching_pool_init(&cp, NULL, 0); /* Init sound subsystem */ - status = pjmedia_snd_init(&cp.factory); + status = pjmedia_aud_subsys_init(&cp.factory); if (status != PJ_SUCCESS) { app_perror("pjmedia_snd_init()", status); pj_caching_pool_destroy(&cp); @@ -93,15 +94,17 @@ static pj_status_t app_init() return status; } - count = pjmedia_snd_get_dev_count(); + count = pjmedia_aud_dev_count(); PJ_LOG(3,(THIS_FILE, "Device count: %d", count)); for (i=0; iname, info->input_count, info->output_count, - info->default_samples_per_sec)); + i, info.name, info.input_count, info.output_count, + info.default_samples_per_sec)); } /* Create pool */ @@ -130,19 +133,15 @@ static pj_status_t app_init() /* Sound capture callback */ static pj_status_t rec_cb(void *user_data, - pj_uint32_t timestamp, - void *input, - unsigned size) + pjmedia_frame *frame) { PJ_UNUSED_ARG(user_data); - PJ_UNUSED_ARG(timestamp); - PJ_UNUSED_ARG(size); - pjmedia_delay_buf_put(delaybuf, (pj_int16_t*)input); + pjmedia_delay_buf_put(delaybuf, (pj_int16_t*)frame->buf); - if (size != SAMPLES_PER_FRAME*2) { + if (frame->size != SAMPLES_PER_FRAME*2) { PJ_LOG(3, (THIS_FILE, "Size captured = %u", - size)); + frame->size)); } ++rec_cnt; @@ -151,15 +150,13 @@ static pj_status_t rec_cb(void *user_data, /* Play cb */ static pj_status_t play_cb(void *user_data, - pj_uint32_t timestamp, - void *output, - unsigned size) + pjmedia_frame *frame) { PJ_UNUSED_ARG(user_data); - PJ_UNUSED_ARG(timestamp); - PJ_UNUSED_ARG(size); - pjmedia_delay_buf_get(delaybuf, (pj_int16_t*)output); + pjmedia_delay_buf_get(delaybuf, (pj_int16_t*)frame->buf); + frame->size = SAMPLES_PER_FRAME*2; + frame->type = PJMEDIA_FRAME_TYPE_AUDIO; ++play_cnt; return PJ_SUCCESS; @@ -168,6 +165,7 @@ static pj_status_t play_cb(void *user_data, /* Start sound */ static pj_status_t snd_start(unsigned flag) { + pjmedia_aud_param param; pj_status_t status; if (strm != NULL) { @@ -175,19 +173,13 @@ static pj_status_t snd_start(unsigned flag) return PJ_EINVALIDOP; } - if (flag==PJMEDIA_DIR_CAPTURE_PLAYBACK) - status = pjmedia_snd_open(-1, -1, CLOCK_RATE, CHANNEL_COUNT, - SAMPLES_PER_FRAME, BITS_PER_SAMPLE, - &rec_cb, &play_cb, NULL, &strm); - else if (flag==PJMEDIA_DIR_CAPTURE) - status = pjmedia_snd_open_rec(-1, CLOCK_RATE, CHANNEL_COUNT, - SAMPLES_PER_FRAME, BITS_PER_SAMPLE, - &rec_cb, NULL, &strm); - else - status = pjmedia_snd_open_player(-1, CLOCK_RATE, CHANNEL_COUNT, - SAMPLES_PER_FRAME, BITS_PER_SAMPLE, - &play_cb, NULL, &strm); + pjmedia_aud_dev_default_param(0, ¶m); + param.channel_count = CHANNEL_COUNT; + param.clock_rate = CLOCK_RATE; + param.samples_per_frame = SAMPLES_PER_FRAME; + param.dir = (pjmedia_dir) flag; + status = pjmedia_aud_stream_create(¶m, &rec_cb, &play_cb, NULL, &strm); if (status != PJ_SUCCESS) { app_perror("snd open", status); return status; @@ -198,10 +190,10 @@ static pj_status_t snd_start(unsigned flag) pjmedia_delay_buf_reset(delaybuf); - status = pjmedia_snd_stream_start(strm); + status = pjmedia_aud_stream_start(strm); if (status != PJ_SUCCESS) { app_perror("snd start", status); - pjmedia_snd_stream_close(strm); + pjmedia_aud_stream_destroy(strm); strm = NULL; return status; } @@ -220,11 +212,11 @@ static pj_status_t snd_stop() return PJ_EINVALIDOP; } - status = pjmedia_snd_stream_stop(strm); + status = pjmedia_aud_stream_stop(strm); if (status != PJ_SUCCESS) { app_perror("snd failed to stop", status); } - status = pjmedia_snd_stream_close(strm); + status = pjmedia_aud_stream_destroy(strm); strm = NULL; pj_gettimeofday(&now); @@ -243,7 +235,7 @@ static void app_fini() if (strm) snd_stop(); - pjmedia_snd_deinit(); + pjmedia_aud_subsys_shutdown(); pjmedia_delay_buf_destroy(delaybuf); pj_pool_release(pool); pj_caching_pool_destroy(&cp); -- cgit v1.2.3