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

📄 enh1632.h

📁 最新的ITU-T的宽带语音编解码标准G.729.1,是对原先的G.729的最好的调整.码流输出速率可以进行自适应调整.满足未来通信要求.希望对大家有所帮助.
💻 H
字号:
/*  ===========================================================================   File: ENH1632.H                                       v.2.1 - March 2006  ===========================================================================            ITU-T        STL        BASIC       OPERATORS            ENHANCED 16-BIT & 32-BIT ARITHMETIC OPERATORS   History:   07 Nov 04   v2.0     Incorporation of new 32-bit / 40-bit / control                        operators for the ITU-T Standard Tool Library as                         described in Geneva, 20-30 January 2004 WP 3/16 Q10/16                        TD 11 document and subsequent discussions on the                        wp3audio@yahoogroups.com email reflector.   March 06   v2.1      Changed to improve portability.                        Some counters incrementations were missing (s_and,                         s_or, s_xor).                          ============================================================================*/#ifndef _ENH1632_H#define _ENH1632_H/***************************************************************************** * *  Constants and Globals * *****************************************************************************/#include "stl.h"#if (WMOPS)#include "count.h"extern BASIC_OP multiCounter[MAXCOUNTERS];extern int currCounter;#endif /* ifdef WMOPS *//***************************************************************************** * *  Prototypes for enhanced 16/32 bit arithmetic operators * *****************************************************************************/Word16 shl_r(   Word16 var1,   Word16 var2);Word32 L_shl_r( Word32 L_var1, Word16 var2);Word16 lshl(    Word16 var1,   Word16 var2);Word16 lshr(    Word16 var1,   Word16 var2);Word32 L_lshl(  Word32 L_var1, Word16 var2);Word32 L_lshr(  Word32 L_var1, Word16 var2);Word16 rotr(    Word16 var1,   Word16 var2, Word16 *var3);Word16 rotl(    Word16 var1,   Word16 var2, Word16 *var3);Word32 L_rotr(  Word32 var1,   Word16 var2, Word16 *var3);Word32 L_rotl(  Word32 var1,   Word16 var2, Word16 *var3);/***************************************************************************** * *  Functions * *****************************************************************************//***************************************************************************** * *  Function Name : s_max * *  Purpose : * *    Compares var1 and var2 and returns the maximum value. * *  Complexity weight : 1 * *  Inputs : * *    var1        16 bit short signed integer (Word16) whose value falls in  *                the range : 0x8000 <= var1 <= 0x7fff. * *    var2        16 bit short signed integer (Word16) whose value falls in *                the range : 0x8000 <= var2 <= 0x7fff. * *  Outputs : * *    none * *  Return Value : * *    var_out     16 bit short signed integer (Word16) whose value falls in *                the range : 0x8000 <= L_var_out <= 0x7fff. * *****************************************************************************/static __inline Word16 s_max( Word16 var1, Word16 var2) {   Word16 var_out;   if( var1 >= var2)      var_out = var1;   else      var_out = var2;   #if (WMOPS)   multiCounter[currCounter].s_max++;   #endif /* ifdef WMOPS */   return( var_out);}/***************************************************************************** * *  Function Name : s_min * *  Purpose : * *    Compares var1 and var2 and returns the minimum value. * *  Complexity weight : 1 * *  Inputs : * *    var1        16 bit short signed integer (Word16) whose value falls in  *                the range : 0x8000  <= var1 <= 0x7fff. * *    var2        16 bit short signed integer (Word16) whose value falls in  *                the range : 0x8000  <= var2 <= 0x7fff. * *  Outputs : * *    none * *  Return Value : * *    var_out     16 bit short signed integer (Word16) whose value falls in  *                the range : 0x8000 <= var_out <= 0x7fff. * *****************************************************************************/static __inline Word16 s_min( Word16 var1, Word16 var2) {   Word16 var_out;   if( var1 <= var2)      var_out = var1;   else      var_out = var2;   #if (WMOPS)   multiCounter[currCounter].s_min++;   #endif /* ifdef WMOPS */   return( var_out);}/***************************************************************************** * *  Function Name : L_max * *  Purpose : * *    Compares L_var1 and L_var2 and returns the maximum value. * *  Complexity weight : 1 * *  Inputs : * *    L_var1      32 bit long signed integer (Word32) whose value falls in the *                range : 0x8000 0000  <= L_var1 <= 0x7fff ffff. * *    L_var2      32 bit long signed integer (Word32) whose value falls in the *                range : 0x8000 0000  <= L_var2 <= 0x7fff ffff. * *  Outputs : * *    none * *  Return Value : * *    L_var_out   32 bit long signed integer (Word32) whose value falls in the *                range : 0x8000 0000 <= L_var_out <= 0x7fff ffff. * *****************************************************************************/static __inline Word32 L_max( Word32 L_var1, Word32 L_var2) {   Word32 L_var_out;   if( L_var1 >= L_var2)      L_var_out = L_var1;   else      L_var_out = L_var2;   #if (WMOPS)   multiCounter[currCounter].L_max++;   #endif /* ifdef WMOPS */   return( L_var_out);}/***************************************************************************** * *  Function Name : L_min * *  Purpose : * *    Compares L_var1 and L_var2 and returns the minimum value. * *  Complexity weight : 1 * *  Inputs : * *    L_var1      32 bit long signed integer (Word32) whose value falls in the *                range : 0x8000 0000  <= L_var1 <= 0x7fff ffff. * *    L_var2      32 bit long signed integer (Word32) whose value falls in the *                range : 0x8000 0000  <= L_var2 <= 0x7fff ffff. * *  Outputs : * *    none * *  Return Value : * *    L_var_out   32 bit long signed integer (Word32) whose value falls in the *                range : 0x8000 0000 <= L_var_out <= 0x7fff ffff. * *****************************************************************************/static __inline Word32 L_min( Word32 L_var1, Word32 L_var2) {   Word32 L_var_out;   if( L_var1 <= L_var2)      L_var_out = L_var1;   else      L_var_out = L_var2;   #if (WMOPS)   multiCounter[currCounter].L_min++;   #endif /* ifdef WMOPS */   return( L_var_out);}/***************************************************************************** * *  Function Name : s_and * *  Purpose : * *    Performs logical AND of the two 16 bit input variables. *    var_out = var1 & var2 * *  Complexity weight : 1 * *  Inputs : * *    var1        16 bit short signed integer (Word16) whose value *                falls in the range 0xffff 8000 <= var1 <= 0x0000 7fff. * *    var2        16 bit short signed integer (Word16) whose value *                falls in the range 0xffff 8000 <= var2 <= 0x0000 7fff. * *  Outputs : * *    none * *  Return Value : * *    var_out     16 bit short signed integer (Word16) whose value *                falls in the range 0xffff 8000 <= var_out <= 0x0000 7fff. * *****************************************************************************/static __inline Word16 s_and( Word16 var1, Word16 var2) {   Word16 var_out;   var_out = var1 & var2;   #if (WMOPS)   multiCounter[currCounter].s_and++;   #endif /* ifdef WMOPS */   return( var_out);}/***************************************************************************** * *  Function Name : L_and * *  Purpose : * *    Performs logical AND of the two 32 bit input variables. *    L_var_out = L_var1 & L_var2 * *  Complexity weight : 1 * *  Inputs : * *    L_var1      32 bit long signed integer (Word32) whose value *                falls in the range 0x8000 0000 <= L_var1 <= 0x7fff ffff. * *    L_var2      32 bit long signed integer (Word32) whose value *                falls in the range 0x8000 0000 <= L_var2 <= 0x7fff ffff. * *  Outputs : * *    none * *  Return Value : * *    L_var_out   32 bit long signed integer (Word32) whose value *                falls in the range 0x8000 0000 <= L_var_out <= 0x7fff ffff. * *****************************************************************************/static __inline Word32 L_and( Word32 L_var1, Word32 L_var2) {   Word32 L_var_out;   L_var_out = L_var1 & L_var2;   #if (WMOPS)   multiCounter[currCounter].L_and++;   #endif /* ifdef WMOPS */   return( L_var_out);}/***************************************************************************** * *  Function Name : s_or * *  Purpose : * *    Performs logical OR of the two 16 bit input variables. *    var_out = var1 | var2 * *  Complexity weight : 1 * *  Inputs : * *    var1        16 bit short signed integer (Word16) whose value *                falls in the range 0xffff 8000 <= var1 <= 0x0000 7fff. * *    var2        16 bit short signed integer (Word16) whose value *                falls in the range 0xffff 8000 <= var2 <= 0x0000 7fff. * *  Outputs : * *    none * *  Return Value : * *    var_out     16 bit short signed integer (Word16) whose value *                falls in the range 0xffff 8000 <= var_out <= 0x0000 7fff. * *****************************************************************************/static __inline Word16 s_or( Word16 var1, Word16 var2) {   Word16 var_out;   var_out = var1 | var2;   #if (WMOPS)   multiCounter[currCounter].s_or++;   #endif /* ifdef WMOPS */   return( var_out);}/***************************************************************************** * *  Function Name : L_or * *  Purpose : * *    Performs logical OR of the two 32 bit input variables. *    L_var_out = L_var1 | L_var2 * *  Complexity weight : 1 * *  Inputs : * *    L_var1      32 bit long signed integer (Word32) whose value *                falls in the range 0x8000 0000 <= L_var1 <= 0x7fff ffff. * *    L_var2      32 bit long signed integer (Word32) whose value *                falls in the range 0x8000 0000 <= L_var2 <= 0x7fff ffff. * *  Outputs : * *    none * *  Return Value : * *    L_var_out   32 bit long signed integer (Word32) whose value *                falls in the range 0x8000 0000 <= L_var_out <= 0x7fff ffff. * *****************************************************************************/static __inline Word32 L_or( Word32 L_var1, Word32 L_var2) {   Word32 L_var_out;   L_var_out = L_var1 | L_var2;   #if (WMOPS)   multiCounter[currCounter].L_or++;   #endif /* ifdef WMOPS */   return( L_var_out);}/***************************************************************************** * *  Function Name : s_xor * *  Purpose : * *    Performs logical XOR of the two 16 bit input variables. *    var_out = var1 ^ var2 * *  Complexity weight : 1 * *  Inputs : * *    var1        16 bit short signed integer (Word16) whose value *                falls in the range 0xffff 8000 <= var1 <= 0x0000 7fff. * *    var2        16 bit short signed integer (Word16) whose value *                falls in the range 0xffff 8000 <= var2 <= 0x0000 7fff. * *  Outputs : * *    none * *  Return Value : * *    var_out     16 bit short signed integer (Word16) whose value *                falls in the range 0xffff 8000 <= var_out <= 0x0000 7fff. * *****************************************************************************/static __inline Word16 s_xor( Word16 var1, Word16 var2) {   Word16 var_out;   var_out = var1 ^ var2;   #if (WMOPS)   multiCounter[currCounter].s_xor++;   #endif /* ifdef WMOPS */   return( var_out);}/***************************************************************************** * *  Function Name : L_xor * *  Purpose : * *    Performs logical OR of the two 32 bit input variables. *    L_var_out = L_var1 ^ L_var2 * *  Complexity weight : 1 * *  Inputs : * *    L_var1      32 bit long signed integer (Word32) whose value *                falls in the range 0x8000 0000 <= L_var1 <= 0x7fff ffff. * *    L_var2      32 bit long signed integer (Word32) whose value *                falls in the range 0x8000 0000 <= L_var2 <= 0x7fff ffff. * *  Outputs : * *    none * *  Return Value : * *    L_var_out   32 bit long signed integer (Word32) whose value *                falls in the range 0x8000 0000 <= L_var_out <= 0x7fff ffff. * *****************************************************************************/static __inline Word32 L_xor( Word32 L_var1, Word32 L_var2) {   Word32 L_var_out;   L_var_out = L_var1 ^ L_var2;   #if (WMOPS)   multiCounter[currCounter].L_xor++;   #endif /* ifdef WMOPS */   return( L_var_out);}#endif /*_ENH1632_H*//* end of file */

⌨️ 快捷键说明

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