diff options
author | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-06-07 23:38:39 +0000 |
---|---|---|
committer | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-06-07 23:38:39 +0000 |
commit | 4f340fd1bb630b6ec3e59c9f0267585d857b2a5d (patch) | |
tree | 2e6871dac30e0a600037fe9e80c69ec4176a8ef6 | |
parent | a8834cd4cfae9ab3b6f9a44712fd270f2d5ed57e (diff) |
Make faxdetect configurable and turn OFF by default
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@3170 f38db490-d61c-443f-a65b-d21fe96a405b
-rwxr-xr-x | channels/chan_zap.c | 16 | ||||
-rwxr-xr-x | dsp.c | 21 | ||||
-rwxr-xr-x | include/asterisk/dsp.h | 1 |
3 files changed, 17 insertions, 21 deletions
diff --git a/channels/chan_zap.c b/channels/chan_zap.c index 9cc2cb444..835f37ebc 100755 --- a/channels/chan_zap.c +++ b/channels/chan_zap.c @@ -4197,9 +4197,12 @@ static struct ast_channel *zt_new(struct zt_pvt *i, int state, int startpbx, int if (i->busydetect && CANBUSYDETECT(i)) { features |= DSP_FEATURE_BUSY_DETECT; } - if (i->callprogress && CANPROGRESSDETECT(i)) { + if ((i->callprogress & 1) && CANPROGRESSDETECT(i)) { features |= DSP_FEATURE_CALL_PROGRESS; } + if (i->callprogress & 2) { + features |= DSP_FEATURE_FAX_DETECT; + } features |= DSP_FEATURE_DTMF_DETECT; if (features) { if (i->dsp) { @@ -6589,7 +6592,6 @@ static void *pri_dchannel(void *vpri) struct zt_pri *pri = vpri; pri_event *e; struct pollfd fds[NUM_DCHANS]; - struct zt_spaninfo si; int res; int chanpos = 0; int x; @@ -8406,7 +8408,15 @@ static int setup_zap(void) } else if (!strcasecmp(v->name, "busycount")) { busycount = atoi(v->value); } else if (!strcasecmp(v->name, "callprogress")) { - callprogress = ast_true(v->value); + if (ast_true(v->value)) + callprogress |= 1; + else + callprogress &= ~1; + } else if (!strcasecmp(v->name, "faxdetect")) { + if (ast_true(v->value)) + callprogress |= 2; + else + callprogress &= ~2; } else if (!strcasecmp(v->name, "echocancel")) { if (v->value && !ast_strlen_zero(v->value)) { y = atoi(v->value); @@ -390,7 +390,7 @@ static void ast_mf_detect_init (mf_detect_state_t *s) static int dtmf_detect (dtmf_detect_state_t *s, int16_t amp[], int samples, - int digitmode, int *writeback) + int digitmode, int *writeback, int faxdetect) { float row_energy[4]; @@ -639,21 +639,7 @@ static int dtmf_detect (dtmf_detect_state_t *s, } } #ifdef FAX_DETECT -#ifdef OLD_DSP_ROUTINES - if (!hit && (fax_energy >= FAX_THRESHOLD) && (fax_energy > s->energy * 21.0)) { - fax_energy_2nd = goertzel_result(&s->fax_tone2nd); - fax_energy_2nd = goertzel_result(&s->fax_tone2nd); - if (fax_energy_2nd * FAX_2ND_HARMONIC < fax_energy) { -#if 0 - printf("Fax energy/Second Harmonic: %f/%f\n", fax_energy, fax_energy_2nd); -#endif - /* XXX Probably need better checking than just this the energy XXX */ - hit = 'f'; - s->fax_hits++; - } /* Don't reset fax hits counter */ - } -#else /* OLD_DSP_ROUTINES */ - if (!hit && (fax_energy >= FAX_THRESHOLD) && (fax_energy >= DTMF_TO_TOTAL_ENERGY*s->energy)) { + if (!hit && (fax_energy >= FAX_THRESHOLD) && (fax_energy >= DTMF_TO_TOTAL_ENERGY*s->energy) && (faxdetect)) { #if 0 printf("Fax energy/Second Harmonic: %f\n", fax_energy); #endif @@ -661,7 +647,6 @@ static int dtmf_detect (dtmf_detect_state_t *s, hit = 'f'; s->fax_hits++; } -#endif /* OLD_DSP_ROUTINES */ else { if (s->fax_hits > 5) { hit = 'f'; @@ -1057,7 +1042,7 @@ static int __ast_dsp_digitdetect(struct ast_dsp *dsp, short *s, int len, int *wr if (dsp->digitmode & DSP_DIGITMODE_MF) res = mf_detect(&dsp->td.mf, s, len, dsp->digitmode & DSP_DIGITMODE_RELAXDTMF, writeback); else - res = dtmf_detect(&dsp->td.dtmf, s, len, dsp->digitmode & DSP_DIGITMODE_RELAXDTMF, writeback); + res = dtmf_detect(&dsp->td.dtmf, s, len, dsp->digitmode & DSP_DIGITMODE_RELAXDTMF, writeback, dsp->features & DSP_FEATURE_FAX_DETECT); return res; } diff --git a/include/asterisk/dsp.h b/include/asterisk/dsp.h index 2f28c5d6e..916e24898 100755 --- a/include/asterisk/dsp.h +++ b/include/asterisk/dsp.h @@ -18,6 +18,7 @@ #define DSP_FEATURE_BUSY_DETECT (1 << 1) #define DSP_FEATURE_CALL_PROGRESS (1 << 2) #define DSP_FEATURE_DTMF_DETECT (1 << 3) +#define DSP_FEATURE_FAX_DETECT (1 << 4) #define DSP_DIGITMODE_DTMF 0 /* Detect DTMF digits */ #define DSP_DIGITMODE_MF 1 /* Detect MF digits */ |