1 /* 2 ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding 3 ** Copyright (C) 2003-2005 M. Bakker, Nero AG, http://www.nero.com 4 ** 5 ** This program is free software; you can redistribute it and/or modify 6 ** it under the terms of the GNU General Public License as published by 7 ** the Free Software Foundation; either version 2 of the License, or 8 ** (at your option) any later version. 9 ** 10 ** This program is distributed in the hope that it will be useful, 11 ** but WITHOUT ANY WARRANTY; without even the implied warranty of 12 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 ** GNU General Public License for more details. 14 ** 15 ** You should have received a copy of the GNU General Public License 16 ** along with this program; if not, write to the Free Software 17 ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 ** 19 ** Any non-GPL usage of this software or parts of this software is strictly 20 ** forbidden. 21 ** 22 ** The "appropriate copyright message" mentioned in section 2c of the GPLv2 23 ** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" 24 ** 25 ** Commercial non-GPL licensing of this software is possible. 26 ** For more info contact Nero AG through Mpeg4AAClicense@nero.com. 27 ** 28 ** $Id: ic_predict.h,v 1.23 2007/11/01 12:33:31 menno Exp $ 29 **/ 30 31 #ifdef MAIN_DEC 32 33 #ifndef __IC_PREDICT_H__ 34 #define __IC_PREDICT_H__ 35 36 #ifdef __cplusplus 37 extern "C" { 38 #endif 39 40 #define ALPHA REAL_CONST(0.90625) 41 #define A REAL_CONST(0.953125) 42 43 44 void pns_reset_pred_state(ic_stream *ics, pred_state *state); 45 void reset_all_predictors(pred_state *state, uint16_t frame_len); 46 void ic_prediction(ic_stream *ics, real_t *spec, pred_state *state, 47 uint16_t frame_len, uint8_t sf_index); 48 49 ALIGN static const real_t mnt_table[128] = { 50 COEF_CONST(0.9531250000), COEF_CONST(0.9453125000), 51 COEF_CONST(0.9375000000), COEF_CONST(0.9296875000), 52 COEF_CONST(0.9257812500), COEF_CONST(0.9179687500), 53 COEF_CONST(0.9101562500), COEF_CONST(0.9023437500), 54 COEF_CONST(0.8984375000), COEF_CONST(0.8906250000), 55 COEF_CONST(0.8828125000), COEF_CONST(0.8789062500), 56 COEF_CONST(0.8710937500), COEF_CONST(0.8671875000), 57 COEF_CONST(0.8593750000), COEF_CONST(0.8515625000), 58 COEF_CONST(0.8476562500), COEF_CONST(0.8398437500), 59 COEF_CONST(0.8359375000), COEF_CONST(0.8281250000), 60 COEF_CONST(0.8242187500), COEF_CONST(0.8203125000), 61 COEF_CONST(0.8125000000), COEF_CONST(0.8085937500), 62 COEF_CONST(0.8007812500), COEF_CONST(0.7968750000), 63 COEF_CONST(0.7929687500), COEF_CONST(0.7851562500), 64 COEF_CONST(0.7812500000), COEF_CONST(0.7773437500), 65 COEF_CONST(0.7734375000), COEF_CONST(0.7656250000), 66 COEF_CONST(0.7617187500), COEF_CONST(0.7578125000), 67 COEF_CONST(0.7539062500), COEF_CONST(0.7500000000), 68 COEF_CONST(0.7421875000), COEF_CONST(0.7382812500), 69 COEF_CONST(0.7343750000), COEF_CONST(0.7304687500), 70 COEF_CONST(0.7265625000), COEF_CONST(0.7226562500), 71 COEF_CONST(0.7187500000), COEF_CONST(0.7148437500), 72 COEF_CONST(0.7109375000), COEF_CONST(0.7070312500), 73 COEF_CONST(0.6992187500), COEF_CONST(0.6953125000), 74 COEF_CONST(0.6914062500), COEF_CONST(0.6875000000), 75 COEF_CONST(0.6835937500), COEF_CONST(0.6796875000), 76 COEF_CONST(0.6796875000), COEF_CONST(0.6757812500), 77 COEF_CONST(0.6718750000), COEF_CONST(0.6679687500), 78 COEF_CONST(0.6640625000), COEF_CONST(0.6601562500), 79 COEF_CONST(0.6562500000), COEF_CONST(0.6523437500), 80 COEF_CONST(0.6484375000), COEF_CONST(0.6445312500), 81 COEF_CONST(0.6406250000), COEF_CONST(0.6406250000), 82 COEF_CONST(0.6367187500), COEF_CONST(0.6328125000), 83 COEF_CONST(0.6289062500), COEF_CONST(0.6250000000), 84 COEF_CONST(0.6210937500), COEF_CONST(0.6210937500), 85 COEF_CONST(0.6171875000), COEF_CONST(0.6132812500), 86 COEF_CONST(0.6093750000), COEF_CONST(0.6054687500), 87 COEF_CONST(0.6054687500), COEF_CONST(0.6015625000), 88 COEF_CONST(0.5976562500), COEF_CONST(0.5937500000), 89 COEF_CONST(0.5937500000), COEF_CONST(0.5898437500), 90 COEF_CONST(0.5859375000), COEF_CONST(0.5820312500), 91 COEF_CONST(0.5820312500), COEF_CONST(0.5781250000), 92 COEF_CONST(0.5742187500), COEF_CONST(0.5742187500), 93 COEF_CONST(0.5703125000), COEF_CONST(0.5664062500), 94 COEF_CONST(0.5664062500), COEF_CONST(0.5625000000), 95 COEF_CONST(0.5585937500), COEF_CONST(0.5585937500), 96 COEF_CONST(0.5546875000), COEF_CONST(0.5507812500), 97 COEF_CONST(0.5507812500), COEF_CONST(0.5468750000), 98 COEF_CONST(0.5429687500), COEF_CONST(0.5429687500), 99 COEF_CONST(0.5390625000), COEF_CONST(0.5390625000), 100 COEF_CONST(0.5351562500), COEF_CONST(0.5312500000), 101 COEF_CONST(0.5312500000), COEF_CONST(0.5273437500), 102 COEF_CONST(0.5273437500), COEF_CONST(0.5234375000), 103 COEF_CONST(0.5195312500), COEF_CONST(0.5195312500), 104 COEF_CONST(0.5156250000), COEF_CONST(0.5156250000), 105 COEF_CONST(0.5117187500), COEF_CONST(0.5117187500), 106 COEF_CONST(0.5078125000), COEF_CONST(0.5078125000), 107 COEF_CONST(0.5039062500), COEF_CONST(0.5039062500), 108 COEF_CONST(0.5000000000), COEF_CONST(0.4980468750), 109 COEF_CONST(0.4960937500), COEF_CONST(0.4941406250), 110 COEF_CONST(0.4921875000), COEF_CONST(0.4902343750), 111 COEF_CONST(0.4882812500), COEF_CONST(0.4863281250), 112 COEF_CONST(0.4843750000), COEF_CONST(0.4824218750), 113 COEF_CONST(0.4804687500), COEF_CONST(0.4785156250) 114 }; 115 116 ALIGN static const real_t exp_table[128] = { 117 COEF_CONST(0.50000000000000000000000000000000000000000000000000), 118 COEF_CONST(0.25000000000000000000000000000000000000000000000000), 119 COEF_CONST(0.12500000000000000000000000000000000000000000000000), 120 COEF_CONST(0.06250000000000000000000000000000000000000000000000), 121 COEF_CONST(0.03125000000000000000000000000000000000000000000000), 122 COEF_CONST(0.01562500000000000000000000000000000000000000000000), 123 COEF_CONST(0.00781250000000000000000000000000000000000000000000), 124 COEF_CONST(0.00390625000000000000000000000000000000000000000000), 125 COEF_CONST(0.00195312500000000000000000000000000000000000000000), 126 COEF_CONST(0.00097656250000000000000000000000000000000000000000), 127 COEF_CONST(0.00048828125000000000000000000000000000000000000000), 128 COEF_CONST(0.00024414062500000000000000000000000000000000000000), 129 COEF_CONST(0.00012207031250000000000000000000000000000000000000), 130 COEF_CONST(0.00006103515625000000000000000000000000000000000000), 131 COEF_CONST(0.00003051757812500000000000000000000000000000000000), 132 COEF_CONST(0.00001525878906250000000000000000000000000000000000), 133 COEF_CONST(0.00000762939453125000000000000000000000000000000000), 134 COEF_CONST(0.00000381469726562500000000000000000000000000000000), 135 COEF_CONST(0.00000190734863281250000000000000000000000000000000), 136 COEF_CONST(0.00000095367431640625000000000000000000000000000000), 137 COEF_CONST(0.00000047683715820312500000000000000000000000000000), 138 COEF_CONST(0.00000023841857910156250000000000000000000000000000), 139 COEF_CONST(0.00000011920928955078125000000000000000000000000000), 140 COEF_CONST(0.00000005960464477539062500000000000000000000000000), 141 COEF_CONST(0.00000002980232238769531300000000000000000000000000), 142 COEF_CONST(0.00000001490116119384765600000000000000000000000000), 143 COEF_CONST(0.00000000745058059692382810000000000000000000000000), 144 COEF_CONST(0.00000000372529029846191410000000000000000000000000), 145 COEF_CONST(0.00000000186264514923095700000000000000000000000000), 146 COEF_CONST(0.00000000093132257461547852000000000000000000000000), 147 COEF_CONST(0.00000000046566128730773926000000000000000000000000), 148 COEF_CONST(0.00000000023283064365386963000000000000000000000000), 149 COEF_CONST(0.00000000011641532182693481000000000000000000000000), 150 COEF_CONST(0.00000000005820766091346740700000000000000000000000), 151 COEF_CONST(0.00000000002910383045673370400000000000000000000000), 152 COEF_CONST(0.00000000001455191522836685200000000000000000000000), 153 COEF_CONST(0.00000000000727595761418342590000000000000000000000), 154 COEF_CONST(0.00000000000363797880709171300000000000000000000000), 155 COEF_CONST(0.00000000000181898940354585650000000000000000000000), 156 COEF_CONST(0.00000000000090949470177292824000000000000000000000), 157 COEF_CONST(0.00000000000045474735088646412000000000000000000000), 158 COEF_CONST(0.00000000000022737367544323206000000000000000000000), 159 COEF_CONST(0.00000000000011368683772161603000000000000000000000), 160 COEF_CONST(0.00000000000005684341886080801500000000000000000000), 161 COEF_CONST(0.00000000000002842170943040400700000000000000000000), 162 COEF_CONST(0.00000000000001421085471520200400000000000000000000), 163 COEF_CONST(0.00000000000000710542735760100190000000000000000000), 164 COEF_CONST(0.00000000000000355271367880050090000000000000000000), 165 COEF_CONST(0.00000000000000177635683940025050000000000000000000), 166 COEF_CONST(0.00000000000000088817841970012523000000000000000000), 167 COEF_CONST(0.00000000000000044408920985006262000000000000000000), 168 COEF_CONST(0.00000000000000022204460492503131000000000000000000), 169 COEF_CONST(0.00000000000000011102230246251565000000000000000000), 170 COEF_CONST(0.00000000000000005551115123125782700000000000000000), 171 COEF_CONST(0.00000000000000002775557561562891400000000000000000), 172 COEF_CONST(0.00000000000000001387778780781445700000000000000000), 173 COEF_CONST(0.00000000000000000693889390390722840000000000000000), 174 COEF_CONST(0.00000000000000000346944695195361420000000000000000), 175 COEF_CONST(0.00000000000000000173472347597680710000000000000000), 176 COEF_CONST(0.00000000000000000086736173798840355000000000000000), 177 COEF_CONST(0.00000000000000000043368086899420177000000000000000), 178 COEF_CONST(0.00000000000000000021684043449710089000000000000000), 179 COEF_CONST(0.00000000000000000010842021724855044000000000000000), 180 COEF_CONST(0.00000000000000000005421010862427522200000000000000), 181 COEF_CONST(0.00000000000000000002710505431213761100000000000000), 182 COEF_CONST(0.00000000000000000001355252715606880500000000000000), 183 COEF_CONST(0.00000000000000000000677626357803440270000000000000), 184 COEF_CONST(0.00000000000000000000338813178901720140000000000000), 185 COEF_CONST(0.00000000000000000000169406589450860070000000000000), 186 COEF_CONST(0.00000000000000000000084703294725430034000000000000), 187 COEF_CONST(0.00000000000000000000042351647362715017000000000000), 188 COEF_CONST(0.00000000000000000000021175823681357508000000000000), 189 COEF_CONST(0.00000000000000000000010587911840678754000000000000), 190 COEF_CONST(0.00000000000000000000005293955920339377100000000000), 191 COEF_CONST(0.00000000000000000000002646977960169688600000000000), 192 COEF_CONST(0.00000000000000000000001323488980084844300000000000), 193 COEF_CONST(0.00000000000000000000000661744490042422140000000000), 194 COEF_CONST(0.00000000000000000000000330872245021211070000000000), 195 COEF_CONST(0.00000000000000000000000165436122510605530000000000), 196 COEF_CONST(0.00000000000000000000000082718061255302767000000000), 197 COEF_CONST(0.00000000000000000000000041359030627651384000000000), 198 COEF_CONST(0.00000000000000000000000020679515313825692000000000), 199 COEF_CONST(0.00000000000000000000000010339757656912846000000000), 200 COEF_CONST(0.00000000000000000000000005169878828456423000000000), 201 COEF_CONST(0.00000000000000000000000002584939414228211500000000), 202 COEF_CONST(0.00000000000000000000000001292469707114105700000000), 203 COEF_CONST(0.00000000000000000000000000646234853557052870000000), 204 COEF_CONST(0.00000000000000000000000000323117426778526440000000), 205 COEF_CONST(0.00000000000000000000000000161558713389263220000000), 206 COEF_CONST(0.00000000000000000000000000080779356694631609000000), 207 COEF_CONST(0.00000000000000000000000000040389678347315804000000), 208 COEF_CONST(0.00000000000000000000000000020194839173657902000000), 209 COEF_CONST(0.00000000000000000000000000010097419586828951000000), 210 COEF_CONST(0.00000000000000000000000000005048709793414475600000), 211 COEF_CONST(0.00000000000000000000000000002524354896707237800000), 212 COEF_CONST(0.00000000000000000000000000001262177448353618900000), 213 COEF_CONST(0.00000000000000000000000000000631088724176809440000), 214 COEF_CONST(0.00000000000000000000000000000315544362088404720000), 215 COEF_CONST(0.00000000000000000000000000000157772181044202360000), 216 COEF_CONST(0.00000000000000000000000000000078886090522101181000), 217 COEF_CONST(0.00000000000000000000000000000039443045261050590000), 218 COEF_CONST(0.00000000000000000000000000000019721522630525295000), 219 COEF_CONST(0.00000000000000000000000000000009860761315262647600), 220 COEF_CONST(0.00000000000000000000000000000004930380657631323800), 221 COEF_CONST(0.00000000000000000000000000000002465190328815661900), 222 COEF_CONST(0.00000000000000000000000000000001232595164407830900), 223 COEF_CONST(0.00000000000000000000000000000000616297582203915470), 224 COEF_CONST(0.00000000000000000000000000000000308148791101957740), 225 COEF_CONST(0.00000000000000000000000000000000154074395550978870), 226 COEF_CONST(0.00000000000000000000000000000000077037197775489434), 227 COEF_CONST(0.00000000000000000000000000000000038518598887744717), 228 COEF_CONST(0.00000000000000000000000000000000019259299443872359), 229 COEF_CONST(0.00000000000000000000000000000000009629649721936179), 230 COEF_CONST(0.00000000000000000000000000000000004814824860968090), 231 COEF_CONST(0.00000000000000000000000000000000002407412430484045), 232 COEF_CONST(0.00000000000000000000000000000000001203706215242022), 233 COEF_CONST(0.00000000000000000000000000000000000601853107621011), 234 COEF_CONST(0.00000000000000000000000000000000000300926553810506), 235 COEF_CONST(0.00000000000000000000000000000000000150463276905253), 236 COEF_CONST(0.00000000000000000000000000000000000075231638452626), 237 COEF_CONST(0.00000000000000000000000000000000000037615819226313), 238 COEF_CONST(0.00000000000000000000000000000000000018807909613157), 239 COEF_CONST(0.00000000000000000000000000000000000009403954806578), 240 COEF_CONST(0.00000000000000000000000000000000000004701977403289), 241 COEF_CONST(0.00000000000000000000000000000000000002350988701645), 242 COEF_CONST(0.00000000000000000000000000000000000001175494350822), 243 COEF_CONST(0.0 /* 0000000000000000000000000000000000000587747175411 "floating point underflow" */), 244 COEF_CONST(0.0) 245 }; 246 247 #ifdef __cplusplus 248 } 249 #endif 250 #endif 251 252 #endif 253