⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sbc_math.h

📁 这是Linux环境下的蓝牙源代码
💻 H
字号:
/* * *  Bluetooth low-complexity, subband codec (SBC) library * *  Copyright (C) 2004-2008  Marcel Holtmann <marcel@holtmann.org> *  Copyright (C) 2004-2005  Henryk Ploetz <henryk@ploetzli.ch> *  Copyright (C) 2005-2008  Brad Midgley <bmidgley@xmission.com> * * *  This library is free software; you can redistribute it and/or *  modify it under the terms of the GNU Lesser General Public *  License as published by the Free Software Foundation; either *  version 2.1 of the License, or (at your option) any later version. * *  This library 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 *  Lesser General Public License for more details. * *  You should have received a copy of the GNU Lesser General Public *  License along with this library; if not, write to the Free Software *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA * */#define fabs(x) ((x) < 0 ? -(x) : (x))/* C does not provide an explicit arithmetic shift right but this will   always be correct and every compiler *should* generate optimal code */#define ASR(val, bits) ((-2 >> 1 == -1) ? \		 ((int32_t)(val)) >> (bits) : ((int32_t) (val)) / (1 << (bits)))#define SCALE_PROTO4_TBL	15#define SCALE_ANA4_TBL		17#define SCALE_PROTO8_TBL	16#define SCALE_ANA8_TBL		17#define SCALE_SPROTO4_TBL	12#define SCALE_SPROTO8_TBL	14#define SCALE_NPROTO4_TBL	11#define SCALE_NPROTO8_TBL	11#define SCALE4_STAGE1_BITS	15#define SCALE4_STAGE2_BITS	16#define SCALE4_STAGED1_BITS	15#define SCALE4_STAGED2_BITS	16#define SCALE8_STAGE1_BITS	15#define SCALE8_STAGE2_BITS	15#define SCALE8_STAGED1_BITS	15#define SCALE8_STAGED2_BITS	16typedef int32_t sbc_fixed_t;#define SCALE4_STAGE1(src)  ASR(src, SCALE4_STAGE1_BITS)#define SCALE4_STAGE2(src)  ASR(src, SCALE4_STAGE2_BITS)#define SCALE4_STAGED1(src) ASR(src, SCALE4_STAGED1_BITS)#define SCALE4_STAGED2(src) ASR(src, SCALE4_STAGED2_BITS)#define SCALE8_STAGE1(src)  ASR(src, SCALE8_STAGE1_BITS)#define SCALE8_STAGE2(src)  ASR(src, SCALE8_STAGE2_BITS)#define SCALE8_STAGED1(src) ASR(src, SCALE8_STAGED1_BITS)#define SCALE8_STAGED2(src) ASR(src, SCALE8_STAGED2_BITS)#define SBC_FIXED_0(val) { val = 0; }#define MUL(a, b)        ((a) * (b))#ifdef __arm__#define MULA(a, b, res) ({				\		int tmp = res;			\		__asm__(				\			"mla %0, %2, %3, %0"		\			: "=&r" (tmp)			\			: "0" (tmp), "r" (a), "r" (b));	\		tmp; })#else#define MULA(a, b, res)  ((a) * (b) + (res))#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -