Initialize Tizen 2.3
[external/opencore-amr.git] / opencore / codecs_v2 / audio / gsm_amr / amr_nb / enc / src / l_negate.cpp
1 /* ------------------------------------------------------------------
2  * Copyright (C) 1998-2009 PacketVideo
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
13  * express or implied.
14  * See the License for the specific language governing permissions
15  * and limitations under the License.
16  * -------------------------------------------------------------------
17  */
18 /****************************************************************************************
19 Portions of this file are derived from the following 3GPP standard:
20
21     3GPP TS 26.073
22     ANSI-C code for the Adaptive Multi-Rate (AMR) speech codec
23     Available from http://www.3gpp.org
24
25 (C) 2004, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC)
26 Permission to distribute, modify and use this file under the standard license
27 terms listed above has been obtained from the copyright holder.
28 ****************************************************************************************/
29 /*
30 ------------------------------------------------------------------------------
31  INPUT AND OUTPUT DEFINITIONS
32
33  Inputs:
34     L_var1 = 32 bit long signed integer (Word32) whose value falls
35              in the range : 0x8000 0000 <= L_var1 <= 0x7fff ffff.
36
37  Local Stores/Buffers/Pointers Needed:
38     None
39
40  Global Stores/Buffers/Pointers Needed:
41     None
42
43  Outputs:
44     L_var1 = 32-bit negation of input
45
46  Pointers and Buffers Modified:
47     None
48
49  Local Stores Modified:
50     None
51
52  Global Stores Modified:
53     None
54
55 ------------------------------------------------------------------------------
56  FUNCTION DESCRIPTION
57
58  This function negates the 32 bit variable, L_var1, with saturation; saturate
59  in the case where input is -2147483648 (0x8000 0000).
60
61 ------------------------------------------------------------------------------
62  REQUIREMENTS
63
64  None
65
66 ------------------------------------------------------------------------------
67  REFERENCES
68
69  [1] basicop2.c, ETS Version 2.0.0, February 8, 1999
70
71 ------------------------------------------------------------------------------
72  PSEUDO-CODE
73
74 Word32 L_negate (Word32 L_var1)
75 {
76     Word32 L_var_out;
77
78     L_var_out = (L_var1 == MIN_32) ? MAX_32 : -L_var1;
79 #if (WMOPS)
80     multiCounter[currCounter].L_negate++;
81 #endif
82     return (L_var_out);
83 }
84
85 ------------------------------------------------------------------------------
86 */
87
88
89 /*----------------------------------------------------------------------------
90 ; INCLUDES
91 ----------------------------------------------------------------------------*/
92 #include    "basic_op.h"
93
94 /*----------------------------------------------------------------------------
95 ; MACROS
96 ; Define module specific macros here
97 ----------------------------------------------------------------------------*/
98
99 /*----------------------------------------------------------------------------
100 ; DEFINES
101 ; Include all pre-processor statements here. Include conditional
102 ; compile variables also.
103 ----------------------------------------------------------------------------*/
104
105 /*----------------------------------------------------------------------------
106 ; LOCAL FUNCTION DEFINITIONS
107 ; Function Prototype declaration
108 ----------------------------------------------------------------------------*/
109
110 /*----------------------------------------------------------------------------
111 ; LOCAL STORE/BUFFER/POINTER DEFINITIONS
112 ; Variable declaration - defined here and used outside this module
113 ----------------------------------------------------------------------------*/
114
115 /*----------------------------------------------------------------------------
116 ; EXTERNAL FUNCTION REFERENCES
117 ; Declare functions defined elsewhere and referenced in this module
118 ----------------------------------------------------------------------------*/
119
120 /*----------------------------------------------------------------------------
121 ; EXTERNAL GLOBAL STORE/BUFFER/POINTER REFERENCES
122 ; Declare variables used in this module but defined elsewhere
123 ----------------------------------------------------------------------------*/
124
125 /*----------------------------------------------------------------------------
126 ; FUNCTION CODE
127 ----------------------------------------------------------------------------*/
128 Word32 L_negate(register Word32 L_var1)
129 {
130     /*----------------------------------------------------------------------------
131     ; Define all local variables
132     ----------------------------------------------------------------------------*/
133
134     /*----------------------------------------------------------------------------
135     ; Function body here
136     ----------------------------------------------------------------------------*/
137     L_var1 = (L_var1 == MIN_32) ? MAX_32 : -L_var1;
138
139     /*----------------------------------------------------------------------------
140     ; Return nothing or data or data pointer
141     ----------------------------------------------------------------------------*/
142     return (L_var1);
143 }
144