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

📄 basop32.c

📁 最新的ITU-T的宽带语音编解码标准G.729.1,是对原先的G.729的最好的调整.码流输出速率可以进行自适应调整.满足未来通信要求.希望对大家有所帮助.
💻 C
📖 第 1 页 / 共 5 页
字号:
/*                                                      v.2.0 - 15.Nov.2004  =============================================================================                          U    U   GGG    SSSS  TTTTT                          U    U  G       S       T                          U    U  G  GG   SSSS    T                          U    U  G   G       S   T                           UUU     GG     SSS     T                   ========================================                    ITU-T - USER'S GROUP ON SOFTWARE TOOLS                   ========================================       =============================================================       COPYRIGHT NOTE: This source code, and all of its derivations,       is subject to the "ITU-T General Public License". Please have       it  read  in    the  distribution  disk,   or  in  the  ITU-T       Recommendation G.191 on "SOFTWARE TOOLS FOR SPEECH AND  AUDIO       CODING STANDARDS".       =============================================================MODULE:         BASOP32, BASIC OPERATORSORIGINAL BY:                Incorporated from anonymous contributions for                 ETSI Standards as well as G.723.1, G.729, and G.722.1DESCRIPTION:        This file contains the definition of 16- and 32-bit basic        operators to be used in the implementation of signal        processing algorithms. The basic operators try to resemble        assembly language instructions that are commonly found in        digital signal processor (DSP) CPUs, thus allowing algorithm        C-code implementations more directly mapeable to DSP assembly        code.        *********************************************************         NOTE: so far, this module does not have a demo program!        *********************************************************FUNCTIONS:  Defined in basop32.h. Self-documentation within each function.HISTORY:  26.Jan.00    v1.0     Incorporated to the STL from updated G.723.1/G.729                         basic operator library (based on basicop2.c) and                         G.723.1's basop.c [L_mls(), div_l(), i_mult()]  05.Jul.00    v1.1     Added 32-bit shiftless accumulation basic                         operators (L_msu0, L_mac0, L_mult0). Improved                        documentation for i_mult().   03 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.                        norm_s()      weight reduced from 15 to 1.                        norm_l()      weight reduced from 30 to 1.                        L_abs()       weight reduced from  2 to 1.                        L_add()       weight reduced from  2 to 1.                        L_negate()    weight reduced from  2 to 1.                        L_shl()       weight reduced from  2 to 1.                        L_shr()       weight reduced from  2 to 1.                        L_sub()       weight reduced from  2 to 1.                        mac_r()       weight reduced from  2 to 1.                        msu_r()       weight reduced from  2 to 1.                        mult_r()      weight reduced from  2 to 1.                        L_deposit_h() weight reduced from  2 to 1.                        L_deposit_l() weight reduced from  2 to 1.   15 Nov 04   v2.0     L_mls() weight of 5.						div_l() weight of 32.						i_mult() weight of 3.  =============================================================================*//*___________________________________________________________________________ |                                                                           | | Basic arithmetic operators.                                               | |                                                                           | | $Id $                                                                     | |                                                                           | |       saturate()                                                          | |       add()                                                               | |       sub()                                                               | |       abs_s()                                                             | |       divide_s()                                                          | |       extract_h()                                                         | |       extract_l()                                                         | |       L_abs()                                                             | |       L_add()                                                             | |       L_deposit_h()                                                       | |       L_deposit_l()                                                       | |       L_mac()                                                             | |       L_msu()                                                             | |       L_mult()                                                            | |       L_negate()                                                          | |       L_shl()                                                             | |       L_shr()                                                             | |       L_sub()                                                             | |       mac_r()                                                             | |       msu_r()                                                             | |       mult()                                                              | |       mult_r()                                                            | |       negate()                                                            | |       norm_l()                                                            | |       norm_s()                                                            | |       round()                                                             | |       shl()                                                               | |       shr()                                                               | |___________________________________________________________________________|*//*___________________________________________________________________________ |                                                                           | |   Include-Files                                                           | |___________________________________________________________________________|*/#include <stdio.h>#include <stdlib.h>#include "stl.h"#if (WMOPS)extern BASIC_OP multiCounter[MAXCOUNTERS];extern int currCounter;#endif/*___________________________________________________________________________ |                                                                           | |   Local Functions                                                         | |___________________________________________________________________________|*/Word16 saturate (Word32 L_var1);/*___________________________________________________________________________ |                                                                           | |   Constants and Globals                                                   | |___________________________________________________________________________|*/Flag Overflow = 0;Flag Carry = 0;/*___________________________________________________________________________ |                                                                           | |   Functions                                                               | |___________________________________________________________________________|*//*___________________________________________________________________________ |                                                                           | |   Function Name : saturate                                                | |                                                                           | |   Purpose :                                                               | |                                                                           | |    Limit the 32 bit input to the range of a 16 bit word.                  | |                                                                           | |   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 saturate (Word32 L_var1){	 Word16 var_out;	 if (L_var1 > 0X00007fffL)	 {		  Overflow = 1;		  var_out = MAX_16;	 }	 else if (L_var1 < (Word32) 0xffff8000L)	 {		  Overflow = 1;		  var_out = MIN_16;	 }	 else	 {		  var_out = extract_l (L_var1);#if (WMOPS)        multiCounter[currCounter].extract_l--;#endif	 }	 return (var_out);}/*___________________________________________________________________________ |                                                                           | |   Function Name : add                                                     | |                                                                           | |   Purpose :                                                               | |                                                                           | |    Performs the addition (var1+var2) with overflow control and saturation;| |    the 16 bit result is set at +32767 when overflow occurs or at -32768   | |    when underflow occurs.                                                 | |                                                                           | |   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 add (Word16 var1, Word16 var2){	 Word16 var_out;	 Word32 L_sum;	 L_sum = (Word32) var1 + var2;	 var_out = saturate (L_sum);#if (WMOPS)    multiCounter[currCounter].add++;#endif	 return (var_out);

⌨️ 快捷键说明

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