summaryrefslogtreecommitdiff
path: root/kernel/framework/audio/grc3code.inc
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/framework/audio/grc3code.inc')
-rw-r--r--kernel/framework/audio/grc3code.inc384
1 files changed, 384 insertions, 0 deletions
diff --git a/kernel/framework/audio/grc3code.inc b/kernel/framework/audio/grc3code.inc
new file mode 100644
index 0000000..a44d037
--- /dev/null
+++ b/kernel/framework/audio/grc3code.inc
@@ -0,0 +1,384 @@
+/*
+ * Purpose: Low level macros for GRC3
+ *
+ * GRC library version 3.1
+ */
+/*
+ *
+ * This file is part of Open Sound System.
+ *
+ * Copyright (C) 4Front Technologies 1996-2008.
+ *
+ * This this source file is released under GPL v2 license (no other versions).
+ * See the COPYING file included in the main directory of this source
+ * distribution for the license terms and conditions.
+ *
+ */
+
+__inline__ signed short
+clamp16 (int sample)
+{
+ if (sample > 32767)
+ return 32767;
+ else if (sample < -32768)
+ return -32768;
+ else
+ return sample;
+}
+
+__inline__ signed char
+clamp8 (int sample)
+{
+ if (sample > 127)
+ return 127;
+ else if (sample < -128)
+ return -128;
+ else
+ return sample;
+}
+
+
+#define IN8(a) ((a^0x80)<<15)
+#define OUT8(d,a) d=((clamp8(a>>15))^0x80)
+
+#define IN16(a) (a<<7)
+#define OUT16(d,a) d=clamp16(a>>7)
+
+#define INv16(a) (_swap16(a)<<7)
+#define OUTv16(d,a) d=_swap16(clamp16(a>>7))
+
+#define IN32(a) (a)
+#define OUT32(d,a) d=(a)
+
+#define INv32(a) _swap32(a)
+#define OUTv32(d,a) d=_swap32(a)
+
+#define DOCLAMP(a) (a) /* do not clip overflows */
+
+#undef QSUFFIX
+
+/***********************************************************************/
+
+#ifdef GRC3_COMPILE_L
+
+#define QSUFFIX(a) a##L
+
+#if 0
+#define SUFFIX(a) a##L
+#define TYPEIN int16_t
+#define TYPEOUT int16_t
+#define IN IN16
+#define OUT OUT16
+#include "grc3inc.inc"
+#endif
+
+#define SUFFIX(a) a##L8_8
+#define TYPEIN uint8_t
+#define TYPEOUT uint8_t
+#define IN IN8
+#define OUT OUT8
+#include "grc3inc.inc"
+
+#define SUFFIX(a) a##L16_16
+#define TYPEIN int16_t
+#define TYPEOUT int16_t
+#define IN IN16
+#define OUT OUT16
+#include "grc3inc.inc"
+
+#define SUFFIX(a) a##Lv16_v16
+#define TYPEIN int16_t
+#define TYPEOUT int16_t
+#define IN INv16
+#define OUT OUTv16
+#include "grc3inc.inc"
+
+#define SUFFIX(a) a##L32_32
+#define TYPEIN int32_t
+#define TYPEOUT int32_t
+#define IN IN32
+#define OUT OUT32
+#include "grc3inc.inc"
+
+#define SUFFIX(a) a##Lv32_v32
+#define TYPEIN int32_t
+#define TYPEOUT int32_t
+#define IN INv32
+#define OUT OUTv32
+#include "grc3inc.inc"
+
+#undef QSUFFIX
+
+#endif
+
+/***********************************************************************/
+
+#ifdef GRC3_COMPILE_M
+
+#define QSUFFIX(a) a##M
+
+#if 0
+#define SUFFIX(a) a##M
+#define TYPEIN int16_t
+#define TYPEOUT int16_t
+#define IN IN16
+#define OUT OUT16
+#include "grc3inc.inc"
+#endif
+
+#define SUFFIX(a) a##M8_8
+#define TYPEIN uint8_t
+#define TYPEOUT uint8_t
+#define IN IN8
+#define OUT OUT8
+#include "grc3inc.inc"
+
+#define SUFFIX(a) a##M16_16
+#define TYPEIN int16_t
+#define TYPEOUT int16_t
+#define IN IN16
+#define OUT OUT16
+#include "grc3inc.inc"
+
+#define SUFFIX(a) a##Mv16_v16
+#define TYPEIN int16_t
+#define TYPEOUT int16_t
+#define IN INv16
+#define OUT OUTv16
+#include "grc3inc.inc"
+
+#define SUFFIX(a) a##M32_32
+#define TYPEIN int32_t
+#define TYPEOUT int32_t
+#define IN IN32
+#define OUT OUT32
+#include "grc3inc.inc"
+
+#define SUFFIX(a) a##Mv32_v32
+#define TYPEIN int32_t
+#define TYPEOUT int32_t
+#define IN INv32
+#define OUT OUTv32
+#include "grc3inc.inc"
+
+#undef QSUFFIX
+
+#endif
+
+/***********************************************************************/
+
+#ifdef GRC3_COMPILE_H
+
+#define QSUFFIX(a) a##H
+
+#if 0
+#define SUFFIX(a) a##H
+#define TYPEIN int16_t
+#define TYPEOUT int16_t
+#define IN IN16
+#define OUT OUT16
+#include "grc3inc.inc"
+#endif
+
+#define SUFFIX(a) a##H8_8
+#define TYPEIN uint8_t
+#define TYPEOUT uint8_t
+#define IN IN8
+#define OUT OUT8
+#include "grc3inc.inc"
+
+#define SUFFIX(a) a##H16_16
+#define TYPEIN int16_t
+#define TYPEOUT int16_t
+#define IN IN16
+#define OUT OUT16
+#include "grc3inc.inc"
+
+#define SUFFIX(a) a##Hv16_v16
+#define TYPEIN int16_t
+#define TYPEOUT int16_t
+#define IN INv16
+#define OUT OUTv16
+#include "grc3inc.inc"
+
+#define SUFFIX(a) a##H32_32
+#define TYPEIN int32_t
+#define TYPEOUT int32_t
+#define IN IN32
+#define OUT OUT32
+#include "grc3inc.inc"
+
+#define SUFFIX(a) a##Hv32_v32
+#define TYPEIN int32_t
+#define TYPEOUT int32_t
+#define IN INv32
+#define OUT OUTv32
+#include "grc3inc.inc"
+
+#undef QSUFFIX
+
+#endif
+
+/***********************************************************************/
+
+#ifdef GRC3_COMPILE_H
+
+#define QSUFFIX(a) a##HX
+
+#if 0
+#define SUFFIX(a) a##HX
+#define TYPEIN int16_t
+#define TYPEOUT int16_t
+#define IN IN16
+#define OUT OUT16
+#include "grc3inc.inc"
+#endif
+
+#define SUFFIX(a) a##HX8_8
+#define TYPEIN uint8_t
+#define TYPEOUT uint8_t
+#define IN IN8
+#define OUT OUT8
+#include "grc3inc.inc"
+
+#define SUFFIX(a) a##HX16_16
+#define TYPEIN int16_t
+#define TYPEOUT int16_t
+#define IN IN16
+#define OUT OUT16
+#include "grc3inc.inc"
+
+#define SUFFIX(a) a##HXv16_v16
+#define TYPEIN int16_t
+#define TYPEOUT int16_t
+#define IN INv16
+#define OUT OUTv16
+#include "grc3inc.inc"
+
+#define SUFFIX(a) a##HX32_32
+#define TYPEIN int32_t
+#define TYPEOUT int32_t
+#define IN IN32
+#define OUT OUT32
+#include "grc3inc.inc"
+
+#define SUFFIX(a) a##HXv32_v32
+#define TYPEIN int32_t
+#define TYPEOUT int32_t
+#define IN INv32
+#define OUT OUTv32
+#include "grc3inc.inc"
+
+#undef QSUFFIX
+
+#endif
+
+/***********************************************************************/
+
+#ifdef GRC3_COMPILE_P
+
+#define QSUFFIX(a) a##P
+
+#if 0
+#define SUFFIX(a) a##P
+#define TYPEIN int16_t
+#define TYPEOUT int16_t
+#define IN IN16
+#define OUT OUT16
+#include "grc3inc.inc"
+#endif
+
+#define SUFFIX(a) a##P8_8
+#define TYPEIN uint8_t
+#define TYPEOUT uint8_t
+#define IN IN8
+#define OUT OUT8
+#include "grc3inc.inc"
+
+#define SUFFIX(a) a##P16_16
+#define TYPEIN int16_t
+#define TYPEOUT int16_t
+#define IN IN16
+#define OUT OUT16
+#include "grc3inc.inc"
+
+#define SUFFIX(a) a##Pv16_v16
+#define TYPEIN int16_t
+#define TYPEOUT int16_t
+#define IN INv16
+#define OUT OUTv16
+#include "grc3inc.inc"
+
+#define SUFFIX(a) a##P32_32
+#define TYPEIN int32_t
+#define TYPEOUT int32_t
+#define IN IN32
+#define OUT OUT32
+#include "grc3inc.inc"
+
+#define SUFFIX(a) a##Pv32_v32
+#define TYPEIN int32_t
+#define TYPEOUT int32_t
+#define IN INv32
+#define OUT OUTv32
+#include "grc3inc.inc"
+
+#undef QSUFFIX
+
+#endif
+
+/***********************************************************************/
+
+#ifdef GRC3_COMPILE_P
+
+#define QSUFFIX(a) a##PX
+
+#if 0
+#define SUFFIX(a) a##PX
+#define TYPEIN int16_t
+#define TYPEOUT int16_t
+#define IN IN16
+#define OUT OUT16
+#include "grc3inc.inc"
+#endif
+
+#define SUFFIX(a) a##PX8_8
+#define TYPEIN uint8_t
+#define TYPEOUT uint8_t
+#define IN IN8
+#define OUT OUT8
+#include "grc3inc.inc"
+
+#define SUFFIX(a) a##PX16_16
+#define TYPEIN int16_t
+#define TYPEOUT int16_t
+#define IN IN16
+#define OUT OUT16
+#include "grc3inc.inc"
+
+#define SUFFIX(a) a##PXv16_v16
+#define TYPEIN int16_t
+#define TYPEOUT int16_t
+#define IN INv16
+#define OUT OUTv16
+#include "grc3inc.inc"
+
+#define SUFFIX(a) a##PX32_32
+#define TYPEIN int32_t
+#define TYPEOUT int32_t
+#define IN IN32
+#define OUT OUT32
+#include "grc3inc.inc"
+
+#define SUFFIX(a) a##PXv32_v32
+#define TYPEIN int32_t
+#define TYPEOUT int32_t
+#define IN INv32
+#define OUT OUTv32
+#include "grc3inc.inc"
+
+#undef QSUFFIX
+
+#endif
+
+/***********************************************************************/