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

📄 enh1632.c

📁 最新的ITU-T的宽带语音编解码标准G.729.1,是对原先的G.729的最好的调整.码流输出速率可以进行自适应调整.满足未来通信要求.希望对大家有所帮助.
💻 C
📖 第 1 页 / 共 2 页
字号:
 *  Function Name : shl_r * *  Purpose : * *    Identical to shl( var1, var2) but with rounding. Saturates the result *    in case of underflows or overflows. * *  Complexity weight : 3 * *  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. * *****************************************************************************/Word16 shl_r( Word16 var1, Word16 var2){   Word16 var_out;   if( var2 >= 0) {      var_out = shl( var1, var2);      #if (WMOPS)      multiCounter[currCounter].shl--;      #endif /* ifdef WMOPS */   } else {      var2 = -var2;      var_out = shr_r( var1, var2);      #if (WMOPS)      multiCounter[currCounter].shr_r--;      #endif /* ifdef WMOPS */   }   #if (WMOPS)   multiCounter[currCounter].shl_r++;   #endif /* ifdef WMOPS */   return( var_out);}/***************************************************************************** * *  Function Name : L_shl_r * *  Purpose : * *   Same as L_shl( var1, var2) but with rounding. Saturates the result in *   case of underflows or overflows. * *  Complexity weight : 3 * *  Inputs : * *    L_var1      32 bit long signed integer (Word32) whose value falls in  *                the range : 0x8000 0000 <= L_var1 <= 0x7fff ffff. * *    var2        16 bit short signed integer (Word16) whose value falls in  *                the range : 0xffff 8000 <= var2 <= 0x0000 7fff. * *  Outputs : * *    none * *  Return Value : * *    L_var_out   32 bit long signed integer (Word32) whose value falls in  *                the range : 0x8000 0000 <= var_out <= 0x7fff ffff. * *****************************************************************************/Word32 L_shl_r( Word32 L_var1, Word16 var2) {   Word32 var_out;   if( var2 >= 0) {      var_out = L_shl( L_var1, var2);      #if (WMOPS)      multiCounter[currCounter].L_shl--;      #endif /* ifdef WMOPS */   } else {      var2 = -var2;      var_out = L_shr_r( L_var1, var2);      #if (WMOPS)      multiCounter[currCounter].L_shr_r--;      #endif /* ifdef WMOPS */   }   #if (WMOPS)   multiCounter[currCounter].L_shl_r++;   #endif /* ifdef WMOPS */   return( var_out);}/***************************************************************************** * *  Function Name : rotr * *  Purpose : * *    Performs a 16-bit logical rotation of var1 by 1 bit to the LSBits. The *    MSBit is set to var2 bit 0. The LSBit of var1 is kept in *var3 bit 0. * *  Complexity weight : 3 * *  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 must be 0 *                or 1. * *  Outputs : * *    *var3       Points on a 16 bit short signed integer (Word16) whose  *                value will be 0 or 1. * *  Return Value : * *    var_out     16 bit short signed integer (Word16) whose value falls in *                the range : 0xffff 8000 <= var_out <= 0x0000 7fff. * *****************************************************************************/Word16 rotr( Word16 var1, Word16 var2, Word16 *var3) {   Word16 var_out;   *var3 = s_and( var1, 0x1);   var_out = s_or( lshr( var1, 1),                   lshl( var2, 15));   #if (WMOPS)   multiCounter[currCounter].s_and--;   multiCounter[currCounter].lshl--;   multiCounter[currCounter].lshr--;   multiCounter[currCounter].s_or--;   multiCounter[currCounter].rotr++;   #endif /* ifdef WMOPS */  return( var_out);}/***************************************************************************** * *  Function Name : rotl * *  Purpose : * *    Performs a 16-bit logical rotation of var1 by 1 bit to the MSBits. The *    LSBit is set to var2 bit 0. The MSBit of var1 is kept in *var3 bit 0. * *  Complexity weight : 3 * *  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 must be 0 *                or 1. * *  Outputs : * *    *var3       Points on a 16 bit short signed integer (Word16) whose  *                value will be 0 or 1. * *  Return Value : * *    var_out     16 bit short signed integer (Word16) whose value falls in *                the range : 0xffff 8000 <= var_out <= 0x0000 7fff. * *****************************************************************************/Word16 rotl( Word16 var1, Word16 var2, Word16 *var3) {   Word16 var_out;   *var3 = lshr( var1, 15);   var_out = s_or( lshl( var1, 1),                   s_and( var2, 0x1));   #if (WMOPS)   multiCounter[currCounter].lshr--;   multiCounter[currCounter].s_and--;   multiCounter[currCounter].lshl--;   multiCounter[currCounter].s_or--;   multiCounter[currCounter].rotl++;   #endif /* ifdef WMOPS */   return( var_out);}/***************************************************************************** * *  Function Name : L_rotr * *  Purpose : * *    Performs a 32-bit logical rotation of L_var1 by 1 bit to the LSBits. The *    MSBit is set to var2 bit 0. The LSBit of L_var1 is kept in *var3 bit 0. * *  Complexity weight : 3 * *  Inputs : * *    L_var1      32 bit long signed integer (Word32) whose value falls in *                the range : 0x8000 0000 <= L_var1 <= 0x7fff ffff. * *    var2        16 bit short signed integer (Word16) whose value must be 0 *                or 1. * *  Outputs : * *    *var3       Points on a 16 bit short signed integer (Word16) whose  *                value will be 0 or 1. * *  Return Value : * *    L_var_out   32 bit long signed integer (Word32) whose value falls in *                the range : 0x8000 0000 <= L_var_out <= 0x7fff ffff. * *****************************************************************************/Word32 L_rotr( Word32 L_var1, Word16 var2, Word16 *var3) {   Word32 L_var_out;   *var3 = s_and( extract_l( L_var1), 0x1);   L_var_out = L_or( L_lshr( L_var1, 1),                     L_lshl( L_deposit_l( var2), 31));   #if (WMOPS)   multiCounter[currCounter].extract_l--;   multiCounter[currCounter].s_and--;   multiCounter[currCounter].L_deposit_l--;   multiCounter[currCounter].L_lshl--;   multiCounter[currCounter].L_lshr--;   multiCounter[currCounter].L_or--;   multiCounter[currCounter].L_rotr++;   #endif /* ifdef WMOPS */   return( L_var_out);}/***************************************************************************** * *  Function Name : L_rotl * *  Purpose : * *    Performs a 32-bit logical rotation of L_var1 by 1 bit to the MSBits. The *    LSBit is set to var2 bit 0. The MSBit of L_var1 is kept in *var3 bit 0. * *  Complexity weight : 3 * *  Inputs : * *    L_var1      32 bit long signed integer (Word32) whose value falls in *                the range : 0x8000 0000 <= L_var1 <= 0x7fff ffff. * *    var2        16 bit short signed integer (Word16) whose value must be 0 *                or 1. * *  Outputs : * *    *var3       Points on a 16 bit short signed integer (Word16) whose  *                value will be 0 or 1. * *  Return Value : * *    L_var_out   32 bit long signed integer (Word32) whose value falls in *                the range : 0x8000 0000 <= L_var_out <= 0x7fff ffff. * *****************************************************************************/Word32 L_rotl( Word32 L_var1, Word16 var2, Word16 *var3) {   Word32 L_var_out;   *var3 = extract_l( L_lshr( L_var1, 31));   L_var_out = L_or( L_lshl( L_var1, 1),                     L_deposit_l( s_and( var2, 0x1)));   #if (WMOPS)   multiCounter[currCounter].L_lshr--;   multiCounter[currCounter].extract_l--;   multiCounter[currCounter].s_and--;   multiCounter[currCounter].L_deposit_l--;   multiCounter[currCounter].L_lshl--;   multiCounter[currCounter].L_or--;   multiCounter[currCounter].L_rotl++;   #endif /* ifdef WMOPS */   return( L_var_out);}/* end of file */

⌨️ 快捷键说明

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