Staging: SLICOSS: Free multicast list at driver exit
[deliverable/linux.git] / drivers / staging / echo / oslec.h
CommitLineData
17f8c114
TC
1/*
2 * OSLEC - A line echo canceller. This code is being developed
3 * against and partially complies with G168. Using code from SpanDSP
4 *
5 * Written by Steve Underwood <steveu@coppice.org>
6 * and David Rowe <david_at_rowetel_dot_com>
7 *
8 * Copyright (C) 2001 Steve Underwood and 2007-2008 David Rowe
9 *
10 * All rights reserved.
11 *
12 * This program is free software; you can redistribute it and/or modify
13 * it under the terms of the GNU General Public License version 2, as
14 * published by the Free Software Foundation.
15 *
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public License
22 * along with this program; if not, write to the Free Software
23 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
24 *
25 */
26
27#ifndef __OSLEC_H
28#define __OSLEC_H
29
30/* TODO: document interface */
31
32/* Mask bits for the adaption mode */
33#define ECHO_CAN_USE_ADAPTION 0x01
34#define ECHO_CAN_USE_NLP 0x02
35#define ECHO_CAN_USE_CNG 0x04
36#define ECHO_CAN_USE_CLIP 0x08
37#define ECHO_CAN_USE_TX_HPF 0x10
38#define ECHO_CAN_USE_RX_HPF 0x20
39#define ECHO_CAN_DISABLE 0x40
40
41/*!
42 G.168 echo canceller descriptor. This defines the working state for a line
43 echo canceller.
44*/
9d8f2d5d 45struct oslec_state;
17f8c114
TC
46
47/*! Create a voice echo canceller context.
48 \param len The length of the canceller, in samples.
49 \return The new canceller context, or NULL if the canceller could not be created.
50*/
9d8f2d5d 51struct oslec_state *oslec_create(int len, int adaption_mode);
17f8c114
TC
52
53/*! Free a voice echo canceller context.
54 \param ec The echo canceller context.
55*/
9d8f2d5d 56void oslec_free(struct oslec_state *ec);
17f8c114
TC
57
58/*! Flush (reinitialise) a voice echo canceller context.
59 \param ec The echo canceller context.
60*/
9d8f2d5d 61void oslec_flush(struct oslec_state *ec);
17f8c114
TC
62
63/*! Set the adaption mode of a voice echo canceller context.
64 \param ec The echo canceller context.
65 \param adapt The mode.
66*/
9d8f2d5d 67void oslec_adaption_mode(struct oslec_state *ec, int adaption_mode);
17f8c114 68
9d8f2d5d 69void oslec_snapshot(struct oslec_state *ec);
17f8c114
TC
70
71/*! Process a sample through a voice echo canceller.
72 \param ec The echo canceller context.
73 \param tx The transmitted audio sample.
74 \param rx The received audio sample.
75 \return The clean (echo cancelled) received sample.
76*/
9d8f2d5d 77int16_t oslec_update(struct oslec_state *ec, int16_t tx, int16_t rx);
17f8c114
TC
78
79/*! Process to high pass filter the tx signal.
80 \param ec The echo canceller context.
81 \param tx The transmitted auio sample.
82 \return The HP filtered transmit sample, send this to your D/A.
83*/
9d8f2d5d 84int16_t oslec_hpf_tx(struct oslec_state *ec, int16_t tx);
17f8c114
TC
85
86#endif /* __OSLEC_H */
This page took 0.02827 seconds and 5 git commands to generate.