Staging: echo: coding style cleanups

Some remaining coding style cleanups to the header files
and the echo.c file.

Cc: David Rowe <david@rowetel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
Greg Kroah-Hartman 2009-08-25 22:07:56 -07:00
parent c8b3953c4c
commit 56791f0a85
4 changed files with 67 additions and 63 deletions

View file

@ -220,12 +220,12 @@ static inline void lms_adapt_bg(struct oslec_state *ec, int clean,
} }
#endif #endif
static __inline__ int top_bit(unsigned int bits) static inline int top_bit(unsigned int bits)
{ {
if (bits == 0) if (bits == 0)
return -1; return -1;
else else
return (int)fls((int32_t)bits)-1; return (int)fls((int32_t)bits)-1;
} }
struct oslec_state *oslec_create(int len, int adaption_mode) struct oslec_state *oslec_create(int len, int adaption_mode)
@ -466,7 +466,7 @@ int16_t oslec_update(struct oslec_state *ec, int16_t tx, int16_t rx)
factor = (2^30) * (2^-2) * clean_bg_rx/P factor = (2^30) * (2^-2) * clean_bg_rx/P
(30 - 2 - log2(P)) (30 - 2 - log2(P))
factor = clean_bg_rx 2 ----- (3) factor = clean_bg_rx 2 ----- (3)
To avoid a divide we approximate log2(P) as top_bit(P), To avoid a divide we approximate log2(P) as top_bit(P),

View file

@ -28,13 +28,17 @@
#ifndef __ECHO_H #ifndef __ECHO_H
#define __ECHO_H #define __ECHO_H
/*! \page echo_can_page Line echo cancellation for voice /*
Line echo cancellation for voice
What does it do?
\section echo_can_page_sec_1 What does it do?
This module aims to provide G.168-2002 compliant echo cancellation, to remove This module aims to provide G.168-2002 compliant echo cancellation, to remove
electrical echoes (e.g. from 2-4 wire hybrids) from voice calls. electrical echoes (e.g. from 2-4 wire hybrids) from voice calls.
\section echo_can_page_sec_2 How does it work?
How does it work?
The heart of the echo cancellor is FIR filter. This is adapted to match the The heart of the echo cancellor is FIR filter. This is adapted to match the
echo impulse response of the telephone line. It must be long enough to echo impulse response of the telephone line. It must be long enough to
adequately cover the duration of that impulse response. The signal transmitted adequately cover the duration of that impulse response. The signal transmitted
@ -108,7 +112,8 @@ major mis-convergence in the adaption process. An assessment algorithm is
needed which produces a fairly accurate result from a very short burst of far needed which produces a fairly accurate result from a very short burst of far
end energy. end energy.
\section echo_can_page_sec_3 How do I use it? How do I use it?
The echo cancellor processes both the transmit and receive streams sample by The echo cancellor processes both the transmit and receive streams sample by
sample. The processing function is not declared inline. Unfortunately, sample. The processing function is not declared inline. Unfortunately,
cancellation requires many operations per sample, so the call overhead is only cancellation requires many operations per sample, so the call overhead is only
@ -118,7 +123,7 @@ a minor burden.
#include "fir.h" #include "fir.h"
#include "oslec.h" #include "oslec.h"
/*! /*
G.168 echo canceller descriptor. This defines the working state for a line G.168 echo canceller descriptor. This defines the working state for a line
echo canceller. echo canceller.
*/ */

View file

@ -23,14 +23,6 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/ */
/*! \page fir_page FIR filtering
\section fir_page_sec_1 What does it do?
???.
\section fir_page_sec_2 How does it work?
???.
*/
#if !defined(_FIR_H_) #if !defined(_FIR_H_)
#define _FIR_H_ #define _FIR_H_
@ -62,10 +54,10 @@
can. can.
*/ */
/*! /*
16 bit integer FIR descriptor. This defines the working state for a single * 16 bit integer FIR descriptor. This defines the working state for a single
instance of an FIR filter using 16 bit integer coefficients. * instance of an FIR filter using 16 bit integer coefficients.
*/ */
struct fir16_state_t { struct fir16_state_t {
int taps; int taps;
int curr_pos; int curr_pos;
@ -73,11 +65,11 @@ struct fir16_state_t {
int16_t *history; int16_t *history;
}; };
/*! /*
32 bit integer FIR descriptor. This defines the working state for a single * 32 bit integer FIR descriptor. This defines the working state for a single
instance of an FIR filter using 32 bit integer coefficients, and filtering * instance of an FIR filter using 32 bit integer coefficients, and filtering
16 bit integer data. * 16 bit integer data.
*/ */
struct fir32_state_t { struct fir32_state_t {
int taps; int taps;
int curr_pos; int curr_pos;
@ -85,10 +77,10 @@ struct fir32_state_t {
int16_t *history; int16_t *history;
}; };
/*! /*
Floating point FIR descriptor. This defines the working state for a single * Floating point FIR descriptor. This defines the working state for a single
instance of an FIR filter using floating point coefficients and data. * instance of an FIR filter using floating point coefficients and data.
*/ */
struct fir_float_state_t { struct fir_float_state_t {
int taps; int taps;
int curr_pos; int curr_pos;
@ -222,4 +214,3 @@ static inline int16_t fir32(struct fir32_state_t *fir, int16_t sample)
} }
#endif #endif
/*- End of file ------------------------------------------------------------*/

View file

@ -27,8 +27,6 @@
#ifndef __OSLEC_H #ifndef __OSLEC_H
#define __OSLEC_H #define __OSLEC_H
/* TODO: document interface */
/* Mask bits for the adaption mode */ /* Mask bits for the adaption mode */
#define ECHO_CAN_USE_ADAPTION 0x01 #define ECHO_CAN_USE_ADAPTION 0x01
#define ECHO_CAN_USE_NLP 0x02 #define ECHO_CAN_USE_NLP 0x02
@ -38,49 +36,59 @@
#define ECHO_CAN_USE_RX_HPF 0x20 #define ECHO_CAN_USE_RX_HPF 0x20
#define ECHO_CAN_DISABLE 0x40 #define ECHO_CAN_DISABLE 0x40
/*! /**
G.168 echo canceller descriptor. This defines the working state for a line * oslec_state: G.168 echo canceller descriptor.
echo canceller. *
*/ * This defines the working state for a line echo canceller.
*/
struct oslec_state; struct oslec_state;
/*! Create a voice echo canceller context. /**
\param len The length of the canceller, in samples. * oslec_create - Create a voice echo canceller context.
\return The new canceller context, or NULL if the canceller could not be created. * @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); struct oslec_state *oslec_create(int len, int adaption_mode);
/*! Free a voice echo canceller context. /**
\param ec The echo canceller context. * oslec_free - Free a voice echo canceller context.
*/ * @ec: The echo canceller context.
*/
void oslec_free(struct oslec_state *ec); void oslec_free(struct oslec_state *ec);
/*! Flush (reinitialise) a voice echo canceller context. /**
\param ec The echo canceller context. * oslec_flush - Flush (reinitialise) a voice echo canceller context.
*/ * @ec: The echo canceller context.
*/
void oslec_flush(struct oslec_state *ec); void oslec_flush(struct oslec_state *ec);
/*! Set the adaption mode of a voice echo canceller context. /**
\param ec The echo canceller context. * oslec_adaption_mode - set the adaption mode of a voice echo canceller context.
\param adapt The mode. * @ec The echo canceller context.
*/ * @adaption_mode: The mode.
*/
void oslec_adaption_mode(struct oslec_state *ec, int adaption_mode); void oslec_adaption_mode(struct oslec_state *ec, int adaption_mode);
void oslec_snapshot(struct oslec_state *ec); void oslec_snapshot(struct oslec_state *ec);
/*! Process a sample through a voice echo canceller. /**
\param ec The echo canceller context. * oslec_update: Process a sample through a voice echo canceller.
\param tx The transmitted audio sample. * @ec: The echo canceller context.
\param rx The received audio sample. * @tx: The transmitted audio sample.
\return The clean (echo cancelled) received 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); int16_t oslec_update(struct oslec_state *ec, int16_t tx, int16_t rx);
/*! Process to high pass filter the tx signal. /**
\param ec The echo canceller context. * oslec_hpf_tx: Process to high pass filter the tx signal.
\param tx The transmitted auio sample. * @ec: The echo canceller context.
\return The HP filtered transmit sample, send this to your D/A. * @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); int16_t oslec_hpf_tx(struct oslec_state *ec, int16_t tx);
#endif /* __OSLEC_H */ #endif /* __OSLEC_H */