summaryrefslogtreecommitdiff
path: root/zaptel.c
diff options
context:
space:
mode:
authormarkster <markster@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2003-06-26 15:31:27 +0000
committermarkster <markster@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2003-06-26 15:31:27 +0000
commit57259a61fe1f92cd56c2e4b4d31ddf23bf42a013 (patch)
tree576c3dcfb1c57a85e7844b51ff1064ec91386deb /zaptel.c
parent92af76d7b7ef1f7963cedf17656f8b2573eadeca (diff)
Fix conferencing mode when soft echo can is in place
git-svn-id: http://svn.digium.com/svn/zaptel/trunk@202 5390a7c7-147a-4af0-8ec9-7488f05a26cb
Diffstat (limited to 'zaptel.c')
-rwxr-xr-xzaptel.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/zaptel.c b/zaptel.c
index 1579459..bd2ac96 100755
--- a/zaptel.c
+++ b/zaptel.c
@@ -4190,11 +4190,21 @@ static inline void __zt_process_getaudio_chunk(struct zt_chan *ss, unsigned char
txb[x] = ZT_LIN2X(getlin[x], ms);
break;
case ZT_CONF_DIGITALMON:
- /* Add monitored channel */
+ /* Real digital monitoring, but still echo cancel if desired */
if (chans[ms->confna]->flags & ZT_FLAG_PSEUDO) {
- memcpy(txb, chans[ms->confna]->getraw, ZT_CHUNKSIZE);
+ if (ms->ec) {
+ for (x=0;x<ZT_CHUNKSIZE;x++)
+ txb[x] = ZT_LIN2X(chans[ms->confna]->getlin[x], ms);
+ } else {
+ memcpy(txb, chans[ms->confna]->getraw, ZT_CHUNKSIZE);
+ }
} else {
- memcpy(txb, chans[ms->confna]->putraw, ZT_CHUNKSIZE);
+ if (ms->ec) {
+ for (x=0;x<ZT_CHUNKSIZE;x++)
+ txb[x] = ZT_LIN2X(chans[ms->confna]->putlin[x], ms);
+ } else {
+ memcpy(txb, chans[ms->confna]->putraw, ZT_CHUNKSIZE);
+ }
}
break;
}