How would you expect to use echo cancellation in FS?
I thinking it can be used like t38_gateway application (audio to image converter). In echo canceler application audio with echo converted to audio without echo.
> On the one hand SpanDSP library compiled with FS and contains
> functions for echo canceler libs/spandsp/src/echo.c
Not really. Look carefully at those routines.
In source
* echo.c - An echo cancellor, suitable for electrical and acoustic
* cancellation. This code does not currently comply with
* any relevant standards (e.g. G.164/5/7/8). One day....
And other 70 string of following comments describe file as echo canceler
Also in echo_can_update()
at string 429
clean_rx = rx - echo_value;
at string 569
if ((ec->adaption_mode & ECHO_CAN_USE_NLP))
{
/* Non-linear processor - a fancy way to say "zap small signals, to avoid
residual echo due to (uLaw/ALaw) non-linearity in the channel.". */
Look in echo.h comments ....
in the echo_tests.c
The echo cancellation tests test the echo cancellor against the G.168 spec.
spandsp : A subset of spandsp to support testing and development of Oslec. The echo canceller and G168 test suite source code live in here.
I thinking it really echo canceler functions.
SpanDSP does NOT contain OSLEC. OSLEC has its origins in the work in
progress echo canceller in SpanDSP.
If it two different product then echo canceler may be realized by
- SpanDSP library
- Oslec kernel driver
I has find relation In source files between OSLEC kernel driver (drivers/staging/echo) and SpanDSP functions:
oslec_create(int len, int adaption_mode) - echo_can_init(int len, int adaption_mode)
oslec_adaption_mode(struct oslec_state *ec, int adaption_mode) -
oslec_update(struct oslec_state *ec, int16_t tx, int16_t rx) - echo_can_update(echo_can_state_t *ec, int16_t tx, int16_t rx)
oslec_hpf_tx(struct oslec_state *ec, int16_t tx) - echo_can_hpf_tx(echo_can_state_t *ec, int16_t tx)
And FS may use two echo canceler engines (SpanSDP or OSLEC kernel driver). What is prevent to do it?