|  | /* | 
|  | *  OSLEC - A line echo canceller.  This code is being developed | 
|  | *          against and partially complies with G168. Using code from SpanDSP | 
|  | * | 
|  | * Written by Steve Underwood <steveu@coppice.org> | 
|  | *         and David Rowe <david_at_rowetel_dot_com> | 
|  | * | 
|  | * Copyright (C) 2001 Steve Underwood and 2007-2008 David Rowe | 
|  | * | 
|  | * All rights reserved. | 
|  | * | 
|  | * This program is free software; you can redistribute it and/or modify | 
|  | * it under the terms of the GNU General Public License version 2, as | 
|  | * published by the Free Software Foundation. | 
|  | * | 
|  | * This program is distributed in the hope that it will be useful, | 
|  | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
|  | * GNU General Public License for more details. | 
|  | * | 
|  | * You should have received a copy of the GNU General Public License | 
|  | * along with this program; if not, write to the Free Software | 
|  | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 
|  | * | 
|  | */ | 
|  |  | 
|  | #ifndef __OSLEC_H | 
|  | #define __OSLEC_H | 
|  |  | 
|  | /* Mask bits for the adaption mode */ | 
|  | #define ECHO_CAN_USE_ADAPTION	0x01 | 
|  | #define ECHO_CAN_USE_NLP	0x02 | 
|  | #define ECHO_CAN_USE_CNG	0x04 | 
|  | #define ECHO_CAN_USE_CLIP	0x08 | 
|  | #define ECHO_CAN_USE_TX_HPF	0x10 | 
|  | #define ECHO_CAN_USE_RX_HPF	0x20 | 
|  | #define ECHO_CAN_DISABLE	0x40 | 
|  |  | 
|  | /** | 
|  | * oslec_state: G.168 echo canceller descriptor. | 
|  | * | 
|  | * This defines the working state for a line echo canceller. | 
|  | */ | 
|  | struct oslec_state; | 
|  |  | 
|  | /** | 
|  | * oslec_create - Create a voice echo canceller context. | 
|  | * @len: The length of the canceller, in samples. | 
|  | * @return: The new canceller context, or NULL if the canceller could not be | 
|  | * created. | 
|  | */ | 
|  | struct oslec_state *oslec_create(int len, int adaption_mode); | 
|  |  | 
|  | /** | 
|  | * oslec_free - Free a voice echo canceller context. | 
|  | * @ec: The echo canceller context. | 
|  | */ | 
|  | void oslec_free(struct oslec_state *ec); | 
|  |  | 
|  | /** | 
|  | * oslec_flush - Flush (reinitialise) a voice echo canceller context. | 
|  | * @ec: The echo canceller context. | 
|  | */ | 
|  | void oslec_flush(struct oslec_state *ec); | 
|  |  | 
|  | /** | 
|  | * oslec_adaption_mode - set the adaption mode of a voice echo canceller context. | 
|  | * @ec The echo canceller context. | 
|  | * @adaption_mode: The mode. | 
|  | */ | 
|  | void oslec_adaption_mode(struct oslec_state *ec, int adaption_mode); | 
|  |  | 
|  | void oslec_snapshot(struct oslec_state *ec); | 
|  |  | 
|  | /** | 
|  | * oslec_update: Process a sample through a voice echo canceller. | 
|  | * @ec: The echo canceller context. | 
|  | * @tx: The transmitted audio sample. | 
|  | * @rx: The received audio sample. | 
|  | * | 
|  | * The return value is the clean (echo cancelled) received sample. | 
|  | */ | 
|  | int16_t oslec_update(struct oslec_state *ec, int16_t tx, int16_t rx); | 
|  |  | 
|  | /** | 
|  | * oslec_hpf_tx: Process to high pass filter the tx signal. | 
|  | * @ec: The echo canceller context. | 
|  | * @tx: The transmitted auio sample. | 
|  | * | 
|  | * The return value is the HP filtered transmit sample, send this to your D/A. | 
|  | */ | 
|  | int16_t oslec_hpf_tx(struct oslec_state *ec, int16_t tx); | 
|  |  | 
|  | #endif /* __OSLEC_H */ |