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 Filename: /audio/gsm_amr/c/include/mac_32.h 32 33 ------------------------------------------------------------------------------ 34 REVISION HISTORY 35 36 Description: Updated function prototype declaration to reflect new interface. 37 A pointer to overflow flag is passed into the function. Updated 38 template. 39 40 Description: Moved _cplusplus #ifdef after Include section. 41 42 Description: Inlined the functions from mac_32.cpp. A performance improvement 43 change. 44 45 Who: Date: 46 Description: 47 ------------------------------------------------------------------------------ 48 INCLUDE DESCRIPTION 49 50 This file contains all the constant definitions and prototype definitions 51 needed by the Mac_32 and Mac_32_16 functions 52 53 ------------------------------------------------------------------------------ 54 */ 55 56 /*---------------------------------------------------------------------------- 57 ; CONTINUE ONLY IF NOT ALREADY DEFINED 58 ----------------------------------------------------------------------------*/ 59 #ifndef MAC_32_H 60 #define MAC_32_H 61 62 /*---------------------------------------------------------------------------- 63 ; INCLUDES 64 ----------------------------------------------------------------------------*/ 65 #include "basicop_malloc.h" 66 67 /*--------------------------------------------------------------------------*/ 68 #ifdef __cplusplus 69 extern "C" 70 { 71 #endif 72 73 /*---------------------------------------------------------------------------- 74 ; MACROS 75 ; Define module specific macros here 76 ----------------------------------------------------------------------------*/ 77 78 /*---------------------------------------------------------------------------- 79 ; DEFINES 80 ; Include all pre-processor statements here. 81 ----------------------------------------------------------------------------*/ 82 83 /*---------------------------------------------------------------------------- 84 ; EXTERNAL VARIABLES REFERENCES 85 ; Declare variables used in this module but defined elsewhere 86 ----------------------------------------------------------------------------*/ 87 88 /*---------------------------------------------------------------------------- 89 ; SIMPLE TYPEDEF'S 90 ----------------------------------------------------------------------------*/ 91 92 /*---------------------------------------------------------------------------- 93 ; ENUMERATED TYPEDEF'S 94 ----------------------------------------------------------------------------*/ 95 96 /*---------------------------------------------------------------------------- 97 ; STRUCTURES TYPEDEF'S 98 ----------------------------------------------------------------------------*/ 99 100 /*---------------------------------------------------------------------------- 101 ; GLOBAL FUNCTION DEFINITIONS 102 ; Function Prototype declaration 103 ----------------------------------------------------------------------------*/ 104 Mac_32(Word32 L_var3,Word16 L_var1_hi,Word16 L_var1_lo,Word16 L_var2_hi,Word16 L_var2_lo,Flag * pOverflow)105 static inline Word32 Mac_32(Word32 L_var3, 106 Word16 L_var1_hi, 107 Word16 L_var1_lo, 108 Word16 L_var2_hi, 109 Word16 L_var2_lo, 110 Flag *pOverflow) 111 { 112 Word16 product; 113 114 L_var3 = L_mac(L_var3, L_var1_hi, L_var2_hi, pOverflow); 115 116 product = mult(L_var1_hi, L_var2_lo, pOverflow); 117 L_var3 = L_mac(L_var3, product, 1, pOverflow); 118 119 product = mult(L_var1_lo, L_var2_hi, pOverflow); 120 L_var3 = L_mac(L_var3, product, 1, pOverflow); 121 122 return (L_var3); 123 } 124 Mac_32_16(Word32 L_var3,Word16 L_var1_hi,Word16 L_var1_lo,Word16 var2,Flag * pOverflow)125 static inline Word32 Mac_32_16(Word32 L_var3, 126 Word16 L_var1_hi, 127 Word16 L_var1_lo, 128 Word16 var2, 129 Flag *pOverflow) 130 { 131 Word16 product; 132 133 L_var3 = L_mac(L_var3, L_var1_hi, var2, pOverflow); 134 135 product = mult(L_var1_lo, var2, pOverflow); 136 L_var3 = L_mac(L_var3, product, 1, pOverflow); 137 138 return (L_var3); 139 } 140 141 /*---------------------------------------------------------------------------- 142 ; END 143 ----------------------------------------------------------------------------*/ 144 #ifdef __cplusplus 145 } 146 #endif 147 148 #endif /* _MAC_32_H_ */ 149 150 151