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

📄 basop32.c

📁 最新的ITU-T的宽带语音编解码标准G.729.1,是对原先的G.729的最好的调整.码流输出速率可以进行自适应调整.满足未来通信要求.希望对大家有所帮助.
💻 C
📖 第 1 页 / 共 5 页
字号:
    return (var_out);}/*___________________________________________________________________________ |                                                                           | |   Function Name : mult                                                    | |                                                                           | |   Purpose :                                                               | |                                                                           | |    Performs the multiplication of var1 by var2 and gives a 16 bit result  | |    which is scaled i.e.:                                                  | |             mult(var1,var2) = extract_l(L_shr((var1 times var2),15)) and  | |             mult(-32768,-32768) = 32767.                                  | |                                                                           | |   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 <= var1 <= 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 mult (Word16 var1, Word16 var2){    Word16 var_out;    Word32 L_product;    L_product = (Word32) var1 *(Word32) var2;    L_product = (L_product & (Word32) 0xffff8000L) >> 15;    if (L_product & (Word32) 0x00010000L)        L_product = L_product | (Word32) 0xffff0000L;    var_out = saturate (L_product);#if (WMOPS)    multiCounter[currCounter].mult++;#endif    return (var_out);}/*___________________________________________________________________________ |                                                                           | |   Function Name : L_mult                                                  | |                                                                           | |   Purpose :                                                               | |                                                                           | |   L_mult is the 32 bit result of the multiplication of var1 times var2    | |   with one shift left i.e.:                                               | |        L_mult(var1,var2) = L_shl((var1 times var2),1) and                 | |        L_mult(-32768,-32768) = 2147483647.                                | |                                                                           | |   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 <= var1 <= 0x0000 7fff.                   | |                                                                           | |   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.              | |___________________________________________________________________________|*/Word32 L_mult (Word16 var1, Word16 var2){    Word32 L_var_out;    L_var_out = (Word32) var1 *(Word32) var2;    if (L_var_out != (Word32) 0x40000000L)    {        L_var_out *= 2;    }    else    {        Overflow = 1;        L_var_out = MAX_32;    }#if (WMOPS)    multiCounter[currCounter].L_mult++;#endif    return (L_var_out);}/*___________________________________________________________________________ |                                                                           | |   Function Name : negate                                                  | |                                                                           | |   Purpose :                                                               | |                                                                           | |   Negate var1 with saturation, saturate in the case where input is -32768:| |                negate(var1) = sub(0,var1).                                | |                                                                           | |   Complexity weight : 1                                                   | |                                                                           | |   Inputs :                                                                | |                                                                           | |    var1                                                                   | |             16 bit short signed integer (Word16) whose value falls in the | |             range : 0xffff 8000 <= var1 <= 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 negate (Word16 var1){    Word16 var_out;    var_out = (var1 == MIN_16) ? MAX_16 : -var1;#if (WMOPS)    multiCounter[currCounter].negate++;#endif    return (var_out);}/*___________________________________________________________________________ |                                                                           | |   Function Name : extract_h                                               | |                                                                           | |   Purpose :                                                               | |                                                                           | |   Return the 16 MSB of L_var1.                                            | |                                                                           | |   Complexity weight : 1                                                   | |                                                                           | |   Inputs :                                                                | |                                                                           | |    L_var1                                                                 | |             32 bit long signed integer (Word32 ) whose value falls in the | |             range : 0x8000 0000 <= L_var1 <= 0x7fff ffff.                 | |                                                                           | |   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 extract_h (Word32 L_var1){    Word16 var_out;    var_out = (Word16) (L_var1 >> 16);#if (WMOPS)    multiCounter[currCounter].extract_h++;#endif    return (var_out);}/*___________________________________________________________________________ |                                                                           | |   Function Name : extract_l                                               | |                                                                           | |   Purpose :                                                               | |                                                                           | |   Return the 16 LSB of L_var1.                                            | |                                                                           | |   Complexity weight : 1                                                   | |                                                                           | |   Inputs :                                                                | |                                                                           | |    L_var1                                                                 | |             32 bit long signed integer (Word32 ) whose value falls in the | |             range : 0x8000 0000 <= L_var1 <= 0x7fff ffff.                 | |                                                                           | |   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 extract_l (Word32 L_var1){    Word16 var_out;    var_out = (Word16) L_var1;#if (WMOPS)    multiCounter[currCounter].extract_l++;#endif    return (var_out);}/*___________________________________________________________________________ |                                                                           | |   Function Name : round                                                   | |                                                                           | |   Purpose :                                                               | |                                                                           | |   Round the lower 16 bits of the 32 bit input number into the MS 16 bits  | |   with saturation. Shift the resulting bits right by 16 and return the 16 | |   bit number:                                                             | |               round(L_var1) = extract_h(L_add(L_var1,32768))              | |                                                                           | |   Complexity weight : 1                                                   | |                                                                           | |   Inputs :                                                                | |                                                                           |

⌨️ 快捷键说明

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