summaryrefslogtreecommitdiff
path: root/pjsip/src/pjsua-lib
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2006-08-02 18:22:22 +0000
committerBenny Prijono <bennylp@teluu.com>2006-08-02 18:22:22 +0000
commit2c5b8f5dca277dd3fee1ab1298bb0b2308372eae (patch)
tree395e0e06ffdb66993cb79cd31f5b38ec561e0c67 /pjsip/src/pjsua-lib
parent6d4d05a0b62d4d7be91f807943009f2ec57c2421 (diff)
Added experimental AEC media port (aec_port.[hc]) based on Speex AEC in pjmedia and pjsua-lib.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@642 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/src/pjsua-lib')
-rw-r--r--pjsip/src/pjsua-lib/pjsua_media.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/pjsip/src/pjsua-lib/pjsua_media.c b/pjsip/src/pjsua-lib/pjsua_media.c
index d92d0cb9..284cdb58 100644
--- a/pjsip/src/pjsua-lib/pjsua_media.c
+++ b/pjsip/src/pjsua-lib/pjsua_media.c
@@ -968,8 +968,23 @@ PJ_DEF(pj_status_t) pjsua_set_snd_dev( int capture_dev,
conf_port = pjmedia_conf_get_master_port(pjsua_var.mconf);
pj_assert(conf_port != NULL);
- /* Connect to the conference port */
- status = pjmedia_snd_port_connect(pjsua_var.snd_port, conf_port);
+ /* Create AEC if it's not created */
+ if (pjsua_var.aec_port == NULL) {
+ status = pjmedia_aec_port_create(pjsua_var.pool, conf_port,
+ conf_port->info.clock_rate *
+ pjsua_var.media_cfg.ec_tail_len /
+ 1000,
+ &pjsua_var.aec_port);
+ if (status != PJ_SUCCESS) {
+ pjsua_perror(THIS_FILE, "Unable to create AEC port", status);
+ pjmedia_snd_port_destroy(pjsua_var.snd_port);
+ pjsua_var.snd_port = NULL;
+ return status;
+ }
+ }
+
+ /* Connect to the AEC port */
+ status = pjmedia_snd_port_connect(pjsua_var.snd_port, pjsua_var.aec_port);
if (status != PJ_SUCCESS) {
pjsua_perror(THIS_FILE, "Unable to connect conference port to "
"sound device", status);