summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--orc.mak74
-rw-r--r--src/Makefile.am31
-rw-r--r--src/modules/echo-cancel/adrian-aec-orc-dist.c250
-rw-r--r--src/modules/echo-cancel/adrian-aec-orc-dist.h61
-rw-r--r--src/modules/echo-cancel/adrian-aec.c2
5 files changed, 47 insertions, 371 deletions
diff --git a/orc.mak b/orc.mak
index 90d403a5..5a6ff96b 100644
--- a/orc.mak
+++ b/orc.mak
@@ -1,35 +1,33 @@
#
-# This is a makefile.am fragment to build Orc code.
+# This is a Makefile.am fragment to build Orc code. It is based
+# on the orc.mak file distributed in the GStreamer common
+# repository.
#
-# Define ORC_SOURCE and then include this file, such as:
+# Include this file like this:
#
-# ORC_SOURCE=gstadderorc
-# include $(top_srcdir)/common/orc.mak
+# include $(top_srcdir)/orc.mak
#
-# This fragment will create tmp-orc.c and gstadderorc.h from
-# gstadderorc.orc.
+# For each Orc source file, append its name (without the extension)
+# to ORC_SOURCE:
#
-# When 'make dist' is run at the top level, or 'make orc-update'
-# in a directory including this fragment, the generated source
-# files will be copied to $(ORC_SOURCE)-dist.[ch]. These files
-# should be checked in to git, since they are used if Orc is
-# disabled.
+# ORC_SOURCE += gstadderorc
#
-# Note that this file defines BUILT_SOURCES, so any later usage
-# of BUILT_SOURCES in the Makefile.am that includes this file
-# must use '+='.
+# This will create gstadder-orc-gen.c and gstadder-orc-gen.h, which
+# you need to add to your nodist_module_SOURCES.
+#
+# Note that this file appends to BUILT_SOURCES and CLEANFILES, so
+# define them before including this file.
#
-EXTRA_DIST += $(ORC_SOURCE).orc
+EXTRA_DIST += $(addsuffix .orc,$(ORC_SOURCE))
-ORC_NODIST_SOURCES = tmp-orc.c $(ORC_SOURCE).h
-BUILT_SOURCES += tmp-orc.c $(ORC_SOURCE).h
+ORC_BUILT_SOURCE = $(addsuffix -orc-gen.c,$(ORC_SOURCE))
+ORC_BUILT_HEADER = $(addsuffix -orc-gen.h,$(ORC_SOURCE))
+BUILT_SOURCES += $(ORC_BUILT_SOURCE) $(ORC_BUILT_HEADER)
+CLEANFILES += $(BUILT_SOURCES)
-orc-update: tmp-orc.c $(ORC_SOURCE).h
- cp tmp-orc.c $(srcdir)/$(ORC_SOURCE)-dist.c
- cp $(ORC_SOURCE).h $(srcdir)/$(ORC_SOURCE)-dist.h
orcc_v_gen = $(orcc_v_gen_$(V))
orcc_v_gen_ = $(orcc_v_gen_$(AM_DEFAULT_VERBOSITY))
@@ -39,34 +37,10 @@ cp_v_gen = $(cp_v_gen_$(V))
cp_v_gen_ = $(cp_v_gen_$(AM_DEFAULT_VERBOSITY))
cp_v_gen_0 = @echo " CP $@";
-if HAVE_ORC
-tmp-orc.c: $(srcdir)/$(ORC_SOURCE).orc
- $(orcc_v_gen)$(ORCC) --implementation -o $(builddir)/tmp-orc.c $(srcdir)/$(ORC_SOURCE).orc
-
-$(ORC_SOURCE).h: $(srcdir)/$(ORC_SOURCE).orc
- mkdir -p $$(dirname $(builddir)/$(ORC_SOURCE).h)
- $(orcc_v_gen)$(ORCC) --header -o $(builddir)/$(ORC_SOURCE).h $(srcdir)/$(ORC_SOURCE).orc
-else
-tmp-orc.c: $(srcdir)/$(ORC_SOURCE).orc
- $(cp_v_gen)cp $(srcdir)/$(ORC_SOURCE)-dist.c tmp-orc.c
-
-$(ORC_SOURCE).h: $(srcdir)/$(ORC_SOURCE).orc
- $(cp_v_gen)cp $(srcdir)/$(ORC_SOURCE)-dist.h $(ORC_SOURCE).h
-endif
-
-clean-local: clean-orc
-.PHONY: clean-orc
-clean-orc:
- rm -f tmp-orc.c $(ORC_SOURCE).h
+%-orc-gen.c: %.orc
+ @mkdir -p $(@D)
+ $(orcc_v_gen)$(ORCC) --implementation -o $@ $<
-dist-hook: dist-hook-orc
-.PHONY: dist-hook-orc
-dist-hook-orc: tmp-orc.c $(ORC_SOURCE).h
- rm -f tmp-orc.c~
- cmp -s tmp-orc.c $(srcdir)/$(ORC_SOURCE)-dist.c || \
- cp tmp-orc.c $(srcdir)/$(ORC_SOURCE)-dist.c
- cmp -s $(ORC_SOURCE).h $(srcdir)/$(ORC_SOURCE)-dist.h || \
- cp $(ORC_SOURCE).h $(srcdir)/$(ORC_SOURCE)-dist.h
- mkdir -p $$(dirname $(ORC_SOURCE))
- cp -p $(srcdir)/$(ORC_SOURCE)-dist.c $(distdir)/$$(dirname $(ORC_SOURCE))
- cp -p $(srcdir)/$(ORC_SOURCE)-dist.h $(distdir)/$$(dirname $(ORC_SOURCE))
+%-orc-gen.h: %.orc
+ @mkdir -p $(@D)
+ $(orcc_v_gen)$(ORCC) --header -o $@ $<
diff --git a/src/Makefile.am b/src/Makefile.am
index eeb34315..82bd653c 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -125,6 +125,15 @@ xdgautostart_DATA = $(xdgautostart_in_files:.desktop.in=.desktop)
###################################
+# Includes #
+###################################
+
+BUILT_SOURCES =
+CLEANFILES =
+include $(top_srcdir)/orc.mak
+ORC_SOURCE =
+
+###################################
# Main daemon #
###################################
@@ -1293,7 +1302,7 @@ SYMDEF_FILES = \
module-virtual-source-symdef.h
EXTRA_DIST += $(SYMDEF_FILES)
-BUILT_SOURCES = $(SYMDEF_FILES) builddirs
+BUILT_SOURCES += $(SYMDEF_FILES) builddirs
$(SYMDEF_FILES): modules/module-defs.h.m4
$(AM_V_at)$(MKDIR_P) modules
@@ -1694,17 +1703,21 @@ module_suspend_on_idle_la_LIBADD = $(MODULE_LIBADD)
module_suspend_on_idle_la_CFLAGS = $(AM_CFLAGS)
# echo-cancel module
-ORC_SOURCE=modules/echo-cancel/adrian-aec-orc
-include $(top_srcdir)/orc.mak
module_echo_cancel_la_SOURCES = modules/echo-cancel/module-echo-cancel.c modules/echo-cancel/echo-cancel.h \
modules/echo-cancel/speex.c \
modules/echo-cancel/adrian-aec.c modules/echo-cancel/adrian-aec.h \
- modules/echo-cancel/adrian.c modules/echo-cancel/adrian.h \
- $(ORC_SOURCE).orc
-nodist_module_echo_cancel_la_SOURCES = $(ORC_NODIST_SOURCES)
+ modules/echo-cancel/adrian.c modules/echo-cancel/adrian.h
module_echo_cancel_la_LDFLAGS = $(MODULE_LDFLAGS)
-module_echo_cancel_la_LIBADD = $(MODULE_LIBADD) $(LIBSPEEX_LIBS) $(ORC_LIBS)
-module_echo_cancel_la_CFLAGS = $(AM_CFLAGS) $(LIBSPEEX_CFLAGS) $(ORC_CFLAGS) -I$(top_builddir)/src/modules/echo-cancel
+module_echo_cancel_la_LIBADD = $(MODULE_LIBADD) $(LIBSPEEX_LIBS)
+module_echo_cancel_la_CFLAGS = $(AM_CFLAGS) $(LIBSPEEX_CFLAGS)
+if HAVE_ORC
+ORC_SOURCE += modules/echo-cancel/adrian-aec-orc
+nodist_module_echo_cancel_la_SOURCES = \
+ modules/echo-cancel/adrian-aec-orc-orc-gen.c \
+ modules/echo-cancel/adrian-aec-orc-orc-gen.h
+module_echo_cancel_la_LIBADD += $(ORC_LIBS)
+module_echo_cancel_la_CFLAGS += $(ORC_CFLAGS) -I$(top_builddir)/src/modules/echo-cancel
+endif
# RTP modules
module_rtp_send_la_SOURCES = modules/rtp/module-rtp-send.c
@@ -1826,7 +1839,7 @@ module_rygel_media_server_la_CFLAGS = $(AM_CFLAGS) $(DBUS_CFLAGS)
# Some minor stuff #
###################################
-CLEANFILES = esdcompat client.conf default.pa system.pa daemon.conf start-pulseaudio-x11 start-pulseaudio-kde daemon/pulseaudio.desktop daemon/pulseaudio-kde.desktop
+CLEANFILES += esdcompat client.conf default.pa system.pa daemon.conf start-pulseaudio-x11 start-pulseaudio-kde daemon/pulseaudio.desktop daemon/pulseaudio-kde.desktop
esdcompat: daemon/esdcompat.in Makefile
sed -e 's,@PACKAGE_VERSION\@,$(PACKAGE_VERSION),g' \
diff --git a/src/modules/echo-cancel/adrian-aec-orc-dist.c b/src/modules/echo-cancel/adrian-aec-orc-dist.c
deleted file mode 100644
index ea93d0b8..00000000
--- a/src/modules/echo-cancel/adrian-aec-orc-dist.c
+++ /dev/null
@@ -1,250 +0,0 @@
-
-/* autogenerated from adrian-aec-orc.orc */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#ifndef DISABLE_ORC
-#include <orc/orc.h>
-#endif
-
-#ifndef _ORC_INTEGER_TYPEDEFS_
-#define _ORC_INTEGER_TYPEDEFS_
-#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-#include <stdint.h>
-typedef int8_t orc_int8;
-typedef int16_t orc_int16;
-typedef int32_t orc_int32;
-typedef int64_t orc_int64;
-typedef uint8_t orc_uint8;
-typedef uint16_t orc_uint16;
-typedef uint32_t orc_uint32;
-typedef uint64_t orc_uint64;
-#elif defined(_MSC_VER)
-typedef signed __int8 orc_int8;
-typedef signed __int16 orc_int16;
-typedef signed __int32 orc_int32;
-typedef signed __int64 orc_int64;
-typedef unsigned __int8 orc_uint8;
-typedef unsigned __int16 orc_uint16;
-typedef unsigned __int32 orc_uint32;
-typedef unsigned __int64 orc_uint64;
-#else
-#include <limits.h>
-typedef signed char orc_int8;
-typedef short orc_int16;
-typedef int orc_int32;
-typedef unsigned char orc_uint8;
-typedef unsigned short orc_uint16;
-typedef unsigned int orc_uint32;
-#if INT_MAX == LONG_MAX
-typedef long long orc_int64;
-typedef unsigned long long orc_uint64;
-#else
-typedef long orc_int64;
-typedef unsigned long orc_uint64;
-#endif
-#endif
-typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16;
-typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32;
-typedef union { orc_int64 i; double f; orc_int32 x2[2]; orc_int16 x4[4]; } orc_union64;
-#endif
-
-void update_tap_weights (float * d1, const float * s1, float p1, int n);
-
-
-/* begin Orc C target preamble */
-#define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x)))
-#define ORC_ABS(a) ((a)<0 ? -(a) : (a))
-#define ORC_MIN(a,b) ((a)<(b) ? (a) : (b))
-#define ORC_MAX(a,b) ((a)>(b) ? (a) : (b))
-#define ORC_SB_MAX 127
-#define ORC_SB_MIN (-1-ORC_SB_MAX)
-#define ORC_UB_MAX 255
-#define ORC_UB_MIN 0
-#define ORC_SW_MAX 32767
-#define ORC_SW_MIN (-1-ORC_SW_MAX)
-#define ORC_UW_MAX 65535
-#define ORC_UW_MIN 0
-#define ORC_SL_MAX 2147483647
-#define ORC_SL_MIN (-1-ORC_SL_MAX)
-#define ORC_UL_MAX 4294967295U
-#define ORC_UL_MIN 0
-#define ORC_CLAMP_SB(x) ORC_CLAMP(x,ORC_SB_MIN,ORC_SB_MAX)
-#define ORC_CLAMP_UB(x) ORC_CLAMP(x,ORC_UB_MIN,ORC_UB_MAX)
-#define ORC_CLAMP_SW(x) ORC_CLAMP(x,ORC_SW_MIN,ORC_SW_MAX)
-#define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX)
-#define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX)
-#define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX)
-#define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8))
-#define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24))
-#define ORC_SWAP_Q(x) ((((x)&0xffULL)<<56) | (((x)&0xff00ULL)<<40) | (((x)&0xff0000ULL)<<24) | (((x)&0xff000000ULL)<<8) | (((x)&0xff00000000ULL)>>8) | (((x)&0xff0000000000ULL)>>24) | (((x)&0xff000000000000ULL)>>40) | (((x)&0xff00000000000000ULL)>>56))
-#define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset)))
-#define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff))
-#define ORC_ISNAN(x) ((((x)&0x7f800000) == 0x7f800000) && (((x)&0x007fffff) != 0))
-#define ORC_DENORMAL_DOUBLE(x) ((x) & ((((x)&0x7ff0000000000000ULL) == 0) ? 0xfff0000000000000ULL : 0xffffffffffffffffULL))
-#define ORC_ISNAN_DOUBLE(x) ((((x)&0x7ff0000000000000ULL) == 0x7ff0000000000000ULL) && (((x)&0x000fffffffffffffULL) != 0))
-#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-#define ORC_RESTRICT restrict
-#elif defined(__GNUC__) && __GNUC__ >= 4
-#define ORC_RESTRICT __restrict__
-#else
-#define ORC_RESTRICT
-#endif
-/* end Orc C target preamble */
-
-
-
-/* update_tap_weights */
-#ifdef DISABLE_ORC
-void
-update_tap_weights (float * d1, const float * s1, float p1, int n){
- int i;
- orc_union32 * ORC_RESTRICT ptr0;
- const orc_union32 * ORC_RESTRICT ptr4;
- orc_union32 var33;
- orc_union32 var34;
- orc_union32 var35;
- orc_union32 var36;
- orc_union32 var37;
-
- ptr0 = (orc_union32 *)d1;
- ptr4 = (orc_union32 *)s1;
-
- /* 0: loadpl */
- var33.i = p1;
-
- for (i = 0; i < n; i++) {
- /* 1: loadl */
- var34 = ptr4[i];
- /* 2: mulf */
- {
- orc_union32 _src1;
- orc_union32 _src2;
- orc_union32 _dest1;
- _src1.i = ORC_DENORMAL(var33.i);
- _src2.i = ORC_DENORMAL(var34.i);
- _dest1.f = _src1.f * _src2.f;
- var37.i = ORC_DENORMAL(_dest1.i);
- }
- /* 3: loadl */
- var35 = ptr0[i];
- /* 4: addf */
- {
- orc_union32 _src1;
- orc_union32 _src2;
- orc_union32 _dest1;
- _src1.i = ORC_DENORMAL(var35.i);
- _src2.i = ORC_DENORMAL(var37.i);
- _dest1.f = _src1.f + _src2.f;
- var36.i = ORC_DENORMAL(_dest1.i);
- }
- /* 5: storel */
- ptr0[i] = var36;
- }
-
-}
-
-#else
-static void
-_backup_update_tap_weights (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_union32 * ORC_RESTRICT ptr0;
- const orc_union32 * ORC_RESTRICT ptr4;
- orc_union32 var33;
- orc_union32 var34;
- orc_union32 var35;
- orc_union32 var36;
- orc_union32 var37;
-
- ptr0 = (orc_union32 *)ex->arrays[0];
- ptr4 = (orc_union32 *)ex->arrays[4];
-
- /* 0: loadpl */
- var33.i = ex->params[24];
-
- for (i = 0; i < n; i++) {
- /* 1: loadl */
- var34 = ptr4[i];
- /* 2: mulf */
- {
- orc_union32 _src1;
- orc_union32 _src2;
- orc_union32 _dest1;
- _src1.i = ORC_DENORMAL(var33.i);
- _src2.i = ORC_DENORMAL(var34.i);
- _dest1.f = _src1.f * _src2.f;
- var37.i = ORC_DENORMAL(_dest1.i);
- }
- /* 3: loadl */
- var35 = ptr0[i];
- /* 4: addf */
- {
- orc_union32 _src1;
- orc_union32 _src2;
- orc_union32 _dest1;
- _src1.i = ORC_DENORMAL(var35.i);
- _src2.i = ORC_DENORMAL(var37.i);
- _dest1.f = _src1.f + _src2.f;
- var36.i = ORC_DENORMAL(_dest1.i);
- }
- /* 5: storel */
- ptr0[i] = var36;
- }
-
-}
-
-void
-update_tap_weights (float * d1, const float * s1, float p1, int n)
-{
- OrcExecutor _ex, *ex = &_ex;
- static int p_inited = 0;
- static OrcProgram *p = 0;
- void (*func) (OrcExecutor *);
-
- if (!p_inited) {
- orc_once_mutex_lock ();
- if (!p_inited) {
- OrcCompileResult result;
-
- p = orc_program_new ();
- orc_program_set_name (p, "update_tap_weights");
- orc_program_set_backup_function (p, _backup_update_tap_weights);
- orc_program_add_destination (p, 4, "d1");
- orc_program_add_source (p, 4, "s1");
- orc_program_add_constant (p, 0, 0x00000000, "c1");
- orc_program_add_constant (p, 0, 0x00000000, "c2");
- orc_program_add_constant (p, 0, 0x00000000, "c3");
- orc_program_add_constant (p, 0, 0x00000000, "c4");
- orc_program_add_constant (p, 0, 0x00000000, "c5");
- orc_program_add_constant (p, 0, 0x00000000, "c6");
- orc_program_add_constant (p, 0, 0x00000000, "c7");
- orc_program_add_constant (p, 0, 0x00000000, "c8");
- orc_program_add_parameter_float (p, 4, "p1");
- orc_program_add_temporary (p, 4, "t1");
-
- orc_program_append_2 (p, "mulf", 0, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_S1, ORC_VAR_D1);
- orc_program_append_2 (p, "addf", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1);
-
- result = orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_S1] = (void *)s1;
- {
- orc_union32 tmp;
- tmp.f = p1;
- ex->params[ORC_VAR_P1] = tmp.i;
- }
-
- func = p->code_exec;
- func (ex);
-}
-#endif
diff --git a/src/modules/echo-cancel/adrian-aec-orc-dist.h b/src/modules/echo-cancel/adrian-aec-orc-dist.h
deleted file mode 100644
index 00228c62..00000000
--- a/src/modules/echo-cancel/adrian-aec-orc-dist.h
+++ /dev/null
@@ -1,61 +0,0 @@
-
-/* autogenerated from adrian-aec-orc.orc */
-
-#ifndef ___MODULES_ECHO_CANCEL_ADRIAN_AEC_ORC_H_
-#define ___MODULES_ECHO_CANCEL_ADRIAN_AEC_ORC_H_
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-
-#ifndef _ORC_INTEGER_TYPEDEFS_
-#define _ORC_INTEGER_TYPEDEFS_
-#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-#include <stdint.h>
-typedef int8_t orc_int8;
-typedef int16_t orc_int16;
-typedef int32_t orc_int32;
-typedef int64_t orc_int64;
-typedef uint8_t orc_uint8;
-typedef uint16_t orc_uint16;
-typedef uint32_t orc_uint32;
-typedef uint64_t orc_uint64;
-#elif defined(_MSC_VER)
-typedef signed __int8 orc_int8;
-typedef signed __int16 orc_int16;
-typedef signed __int32 orc_int32;
-typedef signed __int64 orc_int64;
-typedef unsigned __int8 orc_uint8;
-typedef unsigned __int16 orc_uint16;
-typedef unsigned __int32 orc_uint32;
-typedef unsigned __int64 orc_uint64;
-#else
-#include <limits.h>
-typedef signed char orc_int8;
-typedef short orc_int16;
-typedef int orc_int32;
-typedef unsigned char orc_uint8;
-typedef unsigned short orc_uint16;
-typedef unsigned int orc_uint32;
-#if INT_MAX == LONG_MAX
-typedef long long orc_int64;
-typedef unsigned long long orc_uint64;
-#else
-typedef long orc_int64;
-typedef unsigned long orc_uint64;
-#endif
-#endif
-typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16;
-typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32;
-typedef union { orc_int64 i; double f; orc_int32 x2[2]; orc_int16 x4[4]; } orc_union64;
-#endif
-void update_tap_weights (float * d1, const float * s1, float p1, int n);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/src/modules/echo-cancel/adrian-aec.c b/src/modules/echo-cancel/adrian-aec.c
index 269bd616..5a455914 100644
--- a/src/modules/echo-cancel/adrian-aec.c
+++ b/src/modules/echo-cancel/adrian-aec.c
@@ -18,7 +18,7 @@
#include "adrian-aec.h"
#ifndef DISABLE_ORC
-#include "adrian-aec-orc.h"
+#include "adrian-aec-orc-orc-gen.h"
#endif
#ifdef __SSE__