summaryrefslogtreecommitdiff
path: root/apps/codecs/libspeex/speex/speex_echo.h
diff options
context:
space:
mode:
authorDan Everton <dan@iocaine.org>2007-02-09 10:06:53 +0000
committerDan Everton <dan@iocaine.org>2007-02-09 10:06:53 +0000
commitebc58c9f066e89088bfb6b8193b4266e5145d8e1 (patch)
tree309ccacdc57fae01fb2231b9e2b2faf468129b3c /apps/codecs/libspeex/speex/speex_echo.h
parent46424301c3c3974c9e1e682886f51a4828e4534a (diff)
downloadrockbox-ebc58c9f066e89088bfb6b8193b4266e5145d8e1.zip
rockbox-ebc58c9f066e89088bfb6b8193b4266e5145d8e1.tar.gz
rockbox-ebc58c9f066e89088bfb6b8193b4266e5145d8e1.tar.bz2
rockbox-ebc58c9f066e89088bfb6b8193b4266e5145d8e1.tar.xz
Add Speex playback support. Patch from FS #5607 thanks to Frederik Vestre.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12241 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs/libspeex/speex/speex_echo.h')
-rw-r--r--apps/codecs/libspeex/speex/speex_echo.h88
1 files changed, 88 insertions, 0 deletions
diff --git a/apps/codecs/libspeex/speex/speex_echo.h b/apps/codecs/libspeex/speex/speex_echo.h
new file mode 100644
index 0000000..4813b5a
--- /dev/null
+++ b/apps/codecs/libspeex/speex/speex_echo.h
@@ -0,0 +1,88 @@
+/* Copyright (C) Jean-Marc Valin */
+/**
+ @file speex_echo.h
+ @brief Echo cancellation
+*/
+/*
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ 3. The name of the author may not be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef SPEEX_ECHO_H
+#define SPEEX_ECHO_H
+
+#include "speex/speex_types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** Obtain frame size used by the AEC */
+#define SPEEX_ECHO_GET_FRAME_SIZE 3
+
+/** Set sampling rate */
+#define SPEEX_ECHO_SET_SAMPLING_RATE 24
+/** Get sampling rate */
+#define SPEEX_ECHO_GET_SAMPLING_RATE 25
+
+
+/*struct drft_lookup;*/
+struct SpeexEchoState_;
+
+typedef struct SpeexEchoState_ SpeexEchoState;
+
+/** Creates a new echo canceller state */
+SpeexEchoState *speex_echo_state_init(int frame_size, int filter_length);
+
+/** Destroys an echo canceller state */
+void speex_echo_state_destroy(SpeexEchoState *st);
+
+/** Performs echo cancellation a frame */
+void speex_echo_cancel(SpeexEchoState *st, const spx_int16_t *rec, const spx_int16_t *play, spx_int16_t *out, spx_int32_t *Yout);
+
+/** Perform echo cancellation using internal playback buffer */
+void speex_echo_capture(SpeexEchoState *st, const spx_int16_t *rec, spx_int16_t *out, spx_int32_t *Yout);
+
+/** Let the echo canceller know that a frame was just played */
+void speex_echo_playback(SpeexEchoState *st, const spx_int16_t *play);
+
+/** Reset the echo canceller state */
+void speex_echo_state_reset(SpeexEchoState *st);
+
+/** Used like the ioctl function to control the echo canceller parameters
+ *
+ * @param state Encoder state
+ * @param request ioctl-type request (one of the SPEEX_ECHO_* macros)
+ * @param ptr Data exchanged to-from function
+ * @return 0 if no error, -1 if request in unknown
+ */
+int speex_echo_ctl(SpeexEchoState *st, int request, void *ptr);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif