From 6a5771b9e3118040f2ac19dd249f3ee50db043b3 Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Tue, 31 Mar 2015 23:37:34 +0200 Subject: [PATCH] dahdi-linux: fix oslec build Depend on kmod-echo rather than building echo.ko as a part of kmod-dahdi-echo-oslec. Signed-off-by: Daniel Golle --- libs/dahdi-linux/Makefile | 7 +- libs/dahdi-linux/files/oslec.h | 94 +++++++++++++++++++ .../patches/003-fix-oslec-build.patch | 15 +++ 3 files changed, 112 insertions(+), 4 deletions(-) create mode 100644 libs/dahdi-linux/files/oslec.h create mode 100644 libs/dahdi-linux/patches/003-fix-oslec-build.patch diff --git a/libs/dahdi-linux/Makefile b/libs/dahdi-linux/Makefile index cefe288..9823c1b 100644 --- a/libs/dahdi-linux/Makefile +++ b/libs/dahdi-linux/Makefile @@ -40,10 +40,9 @@ endef define KernelPackage/dahdi-echocan-oslec SUBMENU:=Voice over IP TITLE:=DAHDI OSLEC echo canceller support - DEPENDS:=kmod-dahdi + DEPENDS:=kmod-dahdi +kmod-echo URL:=http://www.asterisk.org/ - FILES:= $(PKG_BUILD_DIR)/drivers/staging/echo/echo.$(LINUX_KMOD_SUFFIX) \ - $(PKG_BUILD_DIR)/drivers/dahdi/dahdi_echocan_oslec.$(LINUX_KMOD_SUFFIX) + FILES:=$(PKG_BUILD_DIR)/drivers/dahdi/dahdi_echocan_oslec.$(LINUX_KMOD_SUFFIX) AUTOLOAD:=$(call AutoProbe,echo dahdi_echocan_oslec) endef @@ -73,7 +72,7 @@ TARGET_CFLAGS += $(FPIC) define Build/Prepare $(Build/Prepare/Default) mkdir -p $(PKG_BUILD_DIR)/drivers/staging/echo/ - $(CP) $(PKG_BUILD_DIR)/../linux-$(LINUX_VERSION)/drivers/misc/echo/* $(PKG_BUILD_DIR)/drivers/staging/echo/ || $(CP) $(PKG_BUILD_DIR)/../linux-$(LINUX_VERSION)/drivers/staging/echo/* $(PKG_BUILD_DIR)/drivers/staging/echo/ + $(CP) ./files/oslec.h $(PKG_BUILD_DIR)/drivers/staging/echo/ endef define Build/Compile diff --git a/libs/dahdi-linux/files/oslec.h b/libs/dahdi-linux/files/oslec.h new file mode 100644 index 0000000..f417536 --- /dev/null +++ b/libs/dahdi-linux/files/oslec.h @@ -0,0 +1,94 @@ +/* + * OSLEC - A line echo canceller. This code is being developed + * against and partially complies with G168. Using code from SpanDSP + * + * Written by Steve Underwood + * and David Rowe + * + * 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 */ diff --git a/libs/dahdi-linux/patches/003-fix-oslec-build.patch b/libs/dahdi-linux/patches/003-fix-oslec-build.patch new file mode 100644 index 0000000..fbc5d50 --- /dev/null +++ b/libs/dahdi-linux/patches/003-fix-oslec-build.patch @@ -0,0 +1,15 @@ +Index: dahdi-linux-2.10.0.1/drivers/dahdi/Kbuild +=================================================================== +--- dahdi-linux-2.10.0.1.orig/drivers/dahdi/Kbuild ++++ dahdi-linux-2.10.0.1/drivers/dahdi/Kbuild +@@ -61,9 +61,8 @@ obj-m += $(DAHDI_MODULES_EXTRA) + # If you want to build OSLEC, include the code in the standard location: + # drivers/staging/echo . The DAHDI OSLEC echo canceller will be built as + # well: +-ifneq (,$(wildcard $(src)/../staging/echo/echo.c)) ++ifneq (,$(wildcard $(src)/../staging/echo/oslec.h)) + obj-m += dahdi_echocan_oslec.o +-obj-m += ../staging/echo/echo.o + endif + + CFLAGS_MODULE += -I$(DAHDI_INCLUDE) -I$(src) -- 2.30.2