root/drivers/misc/echo/oslec.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0-only */
   2 /*
   3  *  OSLEC - A line echo canceller.  This code is being developed
   4  *          against and partially complies with G168. Using code from SpanDSP
   5  *
   6  * Written by Steve Underwood <steveu@coppice.org>
   7  *         and David Rowe <david_at_rowetel_dot_com>
   8  *
   9  * Copyright (C) 2001 Steve Underwood and 2007-2008 David Rowe
  10  *
  11  * All rights reserved.
  12  */
  13 
  14 #ifndef __OSLEC_H
  15 #define __OSLEC_H
  16 
  17 /* Mask bits for the adaption mode */
  18 #define ECHO_CAN_USE_ADAPTION   0x01
  19 #define ECHO_CAN_USE_NLP        0x02
  20 #define ECHO_CAN_USE_CNG        0x04
  21 #define ECHO_CAN_USE_CLIP       0x08
  22 #define ECHO_CAN_USE_TX_HPF     0x10
  23 #define ECHO_CAN_USE_RX_HPF     0x20
  24 #define ECHO_CAN_DISABLE        0x40
  25 
  26 /**
  27  * oslec_state: G.168 echo canceller descriptor.
  28  *
  29  * This defines the working state for a line echo canceller.
  30  */
  31 struct oslec_state;
  32 
  33 /**
  34  * oslec_create - Create a voice echo canceller context.
  35  * @len: The length of the canceller, in samples.
  36  * @return: The new canceller context, or NULL if the canceller could not be
  37  * created.
  38  */
  39 struct oslec_state *oslec_create(int len, int adaption_mode);
  40 
  41 /**
  42  * oslec_free - Free a voice echo canceller context.
  43  * @ec: The echo canceller context.
  44  */
  45 void oslec_free(struct oslec_state *ec);
  46 
  47 /**
  48  * oslec_flush - Flush (reinitialise) a voice echo canceller context.
  49  * @ec: The echo canceller context.
  50  */
  51 void oslec_flush(struct oslec_state *ec);
  52 
  53 /**
  54  * oslec_adaption_mode - set the adaption mode of a voice echo canceller context.
  55  * @ec The echo canceller context.
  56  * @adaption_mode: The mode.
  57  */
  58 void oslec_adaption_mode(struct oslec_state *ec, int adaption_mode);
  59 
  60 void oslec_snapshot(struct oslec_state *ec);
  61 
  62 /**
  63  * oslec_update: Process a sample through a voice echo canceller.
  64  * @ec: The echo canceller context.
  65  * @tx: The transmitted audio sample.
  66  * @rx: The received audio sample.
  67  *
  68  * The return value is the clean (echo cancelled) received sample.
  69  */
  70 int16_t oslec_update(struct oslec_state *ec, int16_t tx, int16_t rx);
  71 
  72 /**
  73  * oslec_hpf_tx: Process to high pass filter the tx signal.
  74  * @ec: The echo canceller context.
  75  * @tx: The transmitted auio sample.
  76  *
  77  * The return value is the HP filtered transmit sample, send this to your D/A.
  78  */
  79 int16_t oslec_hpf_tx(struct oslec_state *ec, int16_t tx);
  80 
  81 #endif /* __OSLEC_H */

/* [<][>][^][v][top][bottom][index][help] */