-From 01108f66fd20dcdbb9fde0dd00924ee4e8c28a7c Mon Sep 17 00:00:00 2001
-From: John Crispin <blogic@openwrt.org>
-Date: Sat, 28 Jan 2012 21:41:18 +0100
-Subject: [PATCH 1/3] configure fixup
-
----
- pjproject-1.12/aconfigure.ac | 13 +++++++++++--
- pjproject-1.12/pjmedia/build/os-auto.mak.in | 9 ++++++++-
- 2 files changed, 19 insertions(+), 3 deletions(-)
-
-diff --git a/aconfigure.ac b/aconfigure.ac
-index 84295b5..e34fd32 100644
--- a/aconfigure.ac
+++ b/aconfigure.ac
@@ -48,9 +48,9 @@ if test -z "$CROSS_COMPILE"; then
AC_SUBST(LD)
if test "$LDOUT" = ""; then LDOUT="-o "; fi
AC_SUBST(LDOUT)
-@@ -604,6 +604,15 @@ AC_ARG_ENABLE(ext_sound,
+@@ -616,6 +616,15 @@ AC_ARG_ENABLE(ext_sound,
+ AC_MSG_RESULT([Checking if external sound is set... yes])
fi]
)
-
++
+AC_ARG_ENABLE(ltq_tapi,
+ AC_HELP_STRING([--enable-ltq-tapi],
+ [PJMEDIA will use ltq tapi backend]),
+ AC_MSG_RESULT([Checking if external sound is set... yes])
+ fi]
+ )
-+
+
dnl # Include resampling small filter
AC_SUBST(ac_no_small_filter)
- AC_ARG_ENABLE(small-filter,
-diff --git a/pjmedia/build/os-auto.mak.in b/pjmedia/build/os-auto.mak.in
-index 145f1d5..be38aeb 100644
--- a/pjmedia/build/os-auto.mak.in
+++ b/pjmedia/build/os-auto.mak.in
@@ -125,4 +125,11 @@ ifeq ($(AC_PJMEDIA_SND),external)
+export PJMEDIA_AUDIODEV_OBJS += tapi_dev.o
+export CFLAGS += -DPJMEDIA_AUDIO_DEV_HAS_TAPI_DEVICE=1
+endif
---
-1.7.7.1
-
-From 455f6f2234a36aeeb97d3e05e9cbe3afad147341 Mon Sep 17 00:00:00 2001
-From: John Crispin <blogic@openwrt.org>
-Date: Sat, 28 Jan 2012 21:43:49 +0100
-Subject: [PATCH 2/3] register tapi
-
----
- .../pjmedia/src/pjmedia-audiodev/audiodev.c | 7 +
- .../pjmedia/src/pjmedia-audiodev/tapi_dev.c | 1300 ++++++++++++++++++++
- 2 files changed, 1307 insertions(+), 0 deletions(-)
- create mode 100644 pjproject-1.12/pjmedia/src/pjmedia-audiodev/tapi_dev.c
-
-diff --git a/pjmedia/src/pjmedia-audiodev/audiodev.c b/pjmedia/src/pjmedia-audiodev/audiodev.c
-index 3b7e121..82b364c 100644
--- a/pjmedia/src/pjmedia-audiodev/audiodev.c
+++ b/pjmedia/src/pjmedia-audiodev/audiodev.c
-@@ -98,6 +98,10 @@ pjmedia_aud_dev_factory* pjmedia_symb_mda_factory(pj_pool_factory *pf);
+@@ -98,6 +98,10 @@ pjmedia_aud_dev_factory* pjmedia_symb_md
pjmedia_aud_dev_factory* pjmedia_null_audio_factory(pj_pool_factory *pf);
#endif
#define MAX_DRIVERS 16
#define MAX_DEVS 64
-@@ -409,6 +413,9 @@ PJ_DEF(pj_status_t) pjmedia_aud_subsys_init(pj_pool_factory *pf)
+@@ -409,6 +413,9 @@ PJ_DEF(pj_status_t) pjmedia_aud_subsys_i
#if PJMEDIA_AUDIO_DEV_HAS_NULL_AUDIO
aud_subsys.drv[aud_subsys.drv_cnt++].create = &pjmedia_null_audio_factory;
#endif
/* Initialize each factory and build the device ID list */
for (i=0; i<aud_subsys.drv_cnt; ++i) {
-diff --git a/pjmedia/src/pjmedia-audiodev/tapi_dev.c b/pjmedia/src/pjmedia-audiodev/tapi_dev.c
-new file mode 100644
-index 0000000..2c65a0d
--- /dev/null
+++ b/pjmedia/src/pjmedia-audiodev/tapi_dev.c
-@@ -0,0 +1,1300 @@
+@@ -0,0 +1,1307 @@
+/******************************************************************************
+
+ Copyright (c) 2010
+ } else if (!stricmp(cid, "kpn_dtmf_fsk")) {
+ tapi_cid_type = IFX_TAPI_CID_STD_KPN_DTMF_FSK;
+ PJ_LOG(3, (THIS_FILE, "using KPN DTMF FSK configuration for TAPI CID"));
-+ }
++ }
+}
+
+void tapi_locale_select(char *country)
+ if(tapi_digit_callback)
+ tapi_digit_callback(i, tapiEvent.data.dtmf.ascii);
+ break;
++ case IFX_TAPI_EVENT_PULSE_DIGIT:
++ if(tapi_digit_callback)
++ if(tapiEvent.data.pulse.digit == 0xB)
++ tapi_digit_callback(i, '0');
++ else
++ tapi_digit_callback(i, '0' + tapiEvent.data.pulse.digit);
++ break;
+ case IFX_TAPI_EVENT_COD_DEC_CHG:
+ case IFX_TAPI_EVENT_TONE_GEN_END:
+ case IFX_TAPI_EVENT_CID_TX_SEQ_END:
+}
+
+#endif /* PJMEDIA_AUDIO_DEV_HAS_TAPI_DEVICE */
---
-1.7.7.1
-
-From 1e0d5dbf8b7714dfd490add0e2b507fd513414f3 Mon Sep 17 00:00:00 2001
-From: John Crispin <blogic@openwrt.org>
-Date: Fri, 3 Feb 2012 21:45:08 +0100
-Subject: [PATCH 3/3] adds PJ_DEF(pj_status_t) pjsua_add_snd_port(int id)
-
----
- pjproject-1.12/pjsip/include/pjsua-lib/pjsua.h | 2 +
- .../pjsip/include/pjsua-lib/pjsua_internal.h | 4 +-
- pjproject-1.12/pjsip/src/pjsua-lib/pjsua_media.c | 69 ++++++++++++++------
- 3 files changed, 54 insertions(+), 21 deletions(-)
-
-diff --git a/pjsip/include/pjsua-lib/pjsua.h b/pjsip/include/pjsua-lib/pjsua.h
-index 85dbbbb..ad3e020 100644
--- a/pjsip/include/pjsua-lib/pjsua.h
+++ b/pjsip/include/pjsua-lib/pjsua.h
-@@ -1543,6 +1543,8 @@ PJ_DECL(pjmedia_endpt*) pjsua_get_pjmedia_endpt(void);
+@@ -1543,6 +1543,8 @@ PJ_DECL(pjmedia_endpt*) pjsua_get_pjmedi
PJ_DECL(pj_pool_factory*) pjsua_get_pool_factory(void);
/*****************************************************************************
* Utilities.
-diff --git a/pjsip/include/pjsua-lib/pjsua_internal.h b/pjsip/include/pjsua-lib/pjsua_internal.h
-index 6c27826..4ba91ed 100644
--- a/pjsip/include/pjsua-lib/pjsua_internal.h
+++ b/pjsip/include/pjsua-lib/pjsua_internal.h
@@ -261,6 +261,8 @@ typedef struct pjsua_stun_resolve
pj_timer_entry snd_idle_timer;/**< Sound device idle timer. */
pjmedia_master_port *null_snd; /**< Master port for null sound. */
pjmedia_port *null_port; /**< Null port. */
-diff --git a/pjsip/src/pjsua-lib/pjsua_media.c b/pjsip/src/pjsua-lib/pjsua_media.c
-index 7d53cad..8a882f3 100644
--- a/pjsip/src/pjsua-lib/pjsua_media.c
+++ b/pjsip/src/pjsua-lib/pjsua_media.c
@@ -588,7 +588,7 @@ static void check_snd_dev_idle()
* there is no active call.
*/
- if ((pjsua_var.snd_port!=NULL || pjsua_var.null_snd!=NULL) &&
-+ if ((pjsua_var.snd_port[0]!=NULL || pjsua_var.null_snd!=NULL) &&
++ if ((pjsua_var.snd_port[0]!=NULL || pjsua_var.null_snd!=NULL) &&
pjsua_var.snd_idle_timer.id == PJ_FALSE &&
pjmedia_conf_get_connect_count(pjsua_var.mconf) == 0 &&
call_cnt == 0 &&
-@@ -2009,7 +2009,7 @@ PJ_DEF(pj_status_t) pjsua_conf_connect( pjsua_conf_port_id source,
+@@ -2008,7 +2008,7 @@ PJ_DEF(pj_status_t) pjsua_conf_connect(
pj_assert(status == PJ_SUCCESS);
/* Check if sound device is instantiated. */
- need_reopen = (pjsua_var.snd_port==NULL && pjsua_var.null_snd==NULL &&
-+ need_reopen = (pjsua_var.snd_port[0]==NULL && pjsua_var.null_snd==NULL &&
++ need_reopen = (pjsua_var.snd_port[0]==NULL && pjsua_var.null_snd==NULL &&
!pjsua_var.no_snd);
/* Check if sound device need to reopen because it needs to modify
-@@ -2067,7 +2067,7 @@ PJ_DEF(pj_status_t) pjsua_conf_connect( pjsua_conf_port_id source,
+@@ -2072,7 +2072,7 @@ PJ_DEF(pj_status_t) pjsua_conf_connect(
/* The bridge version */
/* Create sound port if none is instantiated */
- if (pjsua_var.snd_port==NULL && pjsua_var.null_snd==NULL &&
-+ if (pjsua_var.snd_port[0]==NULL && pjsua_var.null_snd==NULL &&
++ if (pjsua_var.snd_port[0]==NULL && pjsua_var.null_snd==NULL &&
!pjsua_var.no_snd)
{
pj_status_t status;
-@@ -2679,9 +2679,9 @@ static pj_status_t update_initial_aud_param()
+@@ -2686,9 +2686,9 @@ static pj_status_t update_initial_aud_pa
pjmedia_aud_param param;
pj_status_t status;
status = pjmedia_aud_stream_get_param(strm, ¶m);
if (status != PJ_SUCCESS) {
-@@ -2747,7 +2747,7 @@ static pj_status_t open_snd_dev(pjmedia_snd_port_param *param)
+@@ -2754,7 +2754,7 @@ static pj_status_t open_snd_dev(pjmedia_
1000 / param->base.clock_rate));
status = pjmedia_snd_port_create2( pjsua_var.snd_pool,
if (status != PJ_SUCCESS)
return status;
-@@ -2805,13 +2805,13 @@ static pj_status_t open_snd_dev(pjmedia_snd_port_param *param)
+@@ -2812,13 +2812,13 @@ static pj_status_t open_snd_dev(pjmedia_
}
/* Connect sound port to the bridge */
- status = pjmedia_snd_port_connect(pjsua_var.snd_port,
-+ status = pjmedia_snd_port_connect(pjsua_var.snd_port[0],
++ status = pjmedia_snd_port_connect(pjsua_var.snd_port[0],
conf_port );
if (status != PJ_SUCCESS) {
pjsua_perror(THIS_FILE, "Unable to connect conference port to "
"sound device", status);
- pjmedia_snd_port_destroy(pjsua_var.snd_port);
- pjsua_var.snd_port = NULL;
-+ pjmedia_snd_port_destroy(pjsua_var.snd_port[0]);
-+ pjsua_var.snd_port[0] = NULL;
++ pjmedia_snd_port_destroy(pjsua_var.snd_port[0]);
++ pjsua_var.snd_port[0] = NULL;
return status;
}
-@@ -2826,7 +2826,7 @@ static pj_status_t open_snd_dev(pjmedia_snd_port_param *param)
+@@ -2833,7 +2833,7 @@ static pj_status_t open_snd_dev(pjmedia_
pjmedia_aud_param si;
pj_str_t tmp;
status = pjmedia_aud_stream_get_param(strm, &si);
if (status == PJ_SUCCESS)
status = pjmedia_aud_dev_get_info(si.rec_id, &rec_info);
-@@ -2869,12 +2869,12 @@ static pj_status_t open_snd_dev(pjmedia_snd_port_param *param)
+@@ -2876,12 +2876,12 @@ static pj_status_t open_snd_dev(pjmedia_
static void close_snd_dev(void)
{
/* Close sound device */
pjmedia_aud_stream_get_param(strm, ¶m);
if (pjmedia_aud_dev_get_info(param.rec_id, &cap_info) != PJ_SUCCESS)
-@@ -2886,9 +2886,9 @@ static void close_snd_dev(void)
+@@ -2893,9 +2893,9 @@ static void close_snd_dev(void)
"%s sound capture device",
play_info.name, cap_info.name));
}
/* Close null sound device */
-@@ -2968,6 +2968,35 @@ PJ_DEF(pj_status_t) pjsua_set_snd_dev( int capture_dev,
+@@ -2984,6 +2984,35 @@ PJ_DEF(pj_status_t) pjsua_set_snd_dev( i
return PJ_SUCCESS;
}
/*
* Get currently active sound devices. If sound devices has not been created
-@@ -3054,8 +3083,8 @@ PJ_DEF(pj_status_t) pjsua_set_ec(unsigned tail_ms, unsigned options)
- {
- pjsua_var.media_cfg.ec_tail_len = tail_ms;
+@@ -3088,7 +3117,7 @@ PJ_DEF(pj_status_t) pjsua_set_ec(unsigne
+ pjsua_var.media_cfg.ec_options = options;
-- if (pjsua_var.snd_port)
-- return pjmedia_snd_port_set_ec( pjsua_var.snd_port, pjsua_var.pool,
-+ if (pjsua_var.snd_port[0])
-+ return pjmedia_snd_port_set_ec( pjsua_var.snd_port[0], pjsua_var.pool,
- tail_ms, options);
+ if (pjsua_var.snd_port)
+- status = pjmedia_snd_port_set_ec(pjsua_var.snd_port, pjsua_var.pool,
++ status = pjmedia_snd_port_set_ec(pjsua_var.snd_port[0], pjsua_var.pool,
+ tail_ms, options);
- return PJ_SUCCESS;
-@@ -3077,7 +3106,7 @@ PJ_DEF(pj_status_t) pjsua_get_ec_tail(unsigned *p_tail_ms)
+ PJSUA_UNLOCK();
+@@ -3111,7 +3140,7 @@ PJ_DEF(pj_status_t) pjsua_get_ec_tail(un
*/
PJ_DEF(pj_bool_t) pjsua_snd_is_active(void)
{
}
-@@ -3099,7 +3128,7 @@ PJ_DEF(pj_status_t) pjsua_snd_set_setting( pjmedia_aud_dev_cap cap,
+@@ -3135,7 +3164,7 @@ PJ_DEF(pj_status_t) pjsua_snd_set_settin
if (pjsua_snd_is_active()) {
pjmedia_aud_stream *strm;
status = pjmedia_aud_stream_set_cap(strm, cap, pval);
} else {
status = PJ_SUCCESS;
-@@ -3137,7 +3166,7 @@ PJ_DEF(pj_status_t) pjsua_snd_get_setting( pjmedia_aud_dev_cap cap,
+@@ -3181,7 +3210,7 @@ PJ_DEF(pj_status_t) pjsua_snd_get_settin
/* Sound is active, retrieve from device directly */
pjmedia_aud_stream *strm;
- strm = pjmedia_snd_port_get_snd_stream(pjsua_var.snd_port);
+ strm = pjmedia_snd_port_get_snd_stream(pjsua_var.snd_port[0]);
- return pjmedia_aud_stream_get_cap(strm, cap, pval);
+ status = pjmedia_aud_stream_get_cap(strm, cap, pval);
} else {
/* Otherwise retrieve from internal param */
---
-1.7.7.1
-