00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #ifdef MAIN_DEC
00034
00035 #ifndef __IC_PREDICT_H__
00036 #define __IC_PREDICT_H__
00037
00038 #ifdef __cplusplus
00039 extern "C" {
00040 #endif
00041
00042 #define ALPHA REAL_CONST(0.90625)
00043 #define A REAL_CONST(0.953125)
00044
00045
00046 void pns_reset_pred_state(ic_stream *ics, pred_state *state);
00047 void reset_all_predictors(pred_state *state, uint16_t frame_len);
00048 void ic_prediction(ic_stream *ics, real_t *spec, pred_state *state,
00049 uint16_t frame_len, uint8_t sf_index);
00050
00051 ALIGN static const real_t mnt_table[128] = {
00052 COEF_CONST(0.9531250000), COEF_CONST(0.9453125000),
00053 COEF_CONST(0.9375000000), COEF_CONST(0.9296875000),
00054 COEF_CONST(0.9257812500), COEF_CONST(0.9179687500),
00055 COEF_CONST(0.9101562500), COEF_CONST(0.9023437500),
00056 COEF_CONST(0.8984375000), COEF_CONST(0.8906250000),
00057 COEF_CONST(0.8828125000), COEF_CONST(0.8789062500),
00058 COEF_CONST(0.8710937500), COEF_CONST(0.8671875000),
00059 COEF_CONST(0.8593750000), COEF_CONST(0.8515625000),
00060 COEF_CONST(0.8476562500), COEF_CONST(0.8398437500),
00061 COEF_CONST(0.8359375000), COEF_CONST(0.8281250000),
00062 COEF_CONST(0.8242187500), COEF_CONST(0.8203125000),
00063 COEF_CONST(0.8125000000), COEF_CONST(0.8085937500),
00064 COEF_CONST(0.8007812500), COEF_CONST(0.7968750000),
00065 COEF_CONST(0.7929687500), COEF_CONST(0.7851562500),
00066 COEF_CONST(0.7812500000), COEF_CONST(0.7773437500),
00067 COEF_CONST(0.7734375000), COEF_CONST(0.7656250000),
00068 COEF_CONST(0.7617187500), COEF_CONST(0.7578125000),
00069 COEF_CONST(0.7539062500), COEF_CONST(0.7500000000),
00070 COEF_CONST(0.7421875000), COEF_CONST(0.7382812500),
00071 COEF_CONST(0.7343750000), COEF_CONST(0.7304687500),
00072 COEF_CONST(0.7265625000), COEF_CONST(0.7226562500),
00073 COEF_CONST(0.7187500000), COEF_CONST(0.7148437500),
00074 COEF_CONST(0.7109375000), COEF_CONST(0.7070312500),
00075 COEF_CONST(0.6992187500), COEF_CONST(0.6953125000),
00076 COEF_CONST(0.6914062500), COEF_CONST(0.6875000000),
00077 COEF_CONST(0.6835937500), COEF_CONST(0.6796875000),
00078 COEF_CONST(0.6796875000), COEF_CONST(0.6757812500),
00079 COEF_CONST(0.6718750000), COEF_CONST(0.6679687500),
00080 COEF_CONST(0.6640625000), COEF_CONST(0.6601562500),
00081 COEF_CONST(0.6562500000), COEF_CONST(0.6523437500),
00082 COEF_CONST(0.6484375000), COEF_CONST(0.6445312500),
00083 COEF_CONST(0.6406250000), COEF_CONST(0.6406250000),
00084 COEF_CONST(0.6367187500), COEF_CONST(0.6328125000),
00085 COEF_CONST(0.6289062500), COEF_CONST(0.6250000000),
00086 COEF_CONST(0.6210937500), COEF_CONST(0.6210937500),
00087 COEF_CONST(0.6171875000), COEF_CONST(0.6132812500),
00088 COEF_CONST(0.6093750000), COEF_CONST(0.6054687500),
00089 COEF_CONST(0.6054687500), COEF_CONST(0.6015625000),
00090 COEF_CONST(0.5976562500), COEF_CONST(0.5937500000),
00091 COEF_CONST(0.5937500000), COEF_CONST(0.5898437500),
00092 COEF_CONST(0.5859375000), COEF_CONST(0.5820312500),
00093 COEF_CONST(0.5820312500), COEF_CONST(0.5781250000),
00094 COEF_CONST(0.5742187500), COEF_CONST(0.5742187500),
00095 COEF_CONST(0.5703125000), COEF_CONST(0.5664062500),
00096 COEF_CONST(0.5664062500), COEF_CONST(0.5625000000),
00097 COEF_CONST(0.5585937500), COEF_CONST(0.5585937500),
00098 COEF_CONST(0.5546875000), COEF_CONST(0.5507812500),
00099 COEF_CONST(0.5507812500), COEF_CONST(0.5468750000),
00100 COEF_CONST(0.5429687500), COEF_CONST(0.5429687500),
00101 COEF_CONST(0.5390625000), COEF_CONST(0.5390625000),
00102 COEF_CONST(0.5351562500), COEF_CONST(0.5312500000),
00103 COEF_CONST(0.5312500000), COEF_CONST(0.5273437500),
00104 COEF_CONST(0.5273437500), COEF_CONST(0.5234375000),
00105 COEF_CONST(0.5195312500), COEF_CONST(0.5195312500),
00106 COEF_CONST(0.5156250000), COEF_CONST(0.5156250000),
00107 COEF_CONST(0.5117187500), COEF_CONST(0.5117187500),
00108 COEF_CONST(0.5078125000), COEF_CONST(0.5078125000),
00109 COEF_CONST(0.5039062500), COEF_CONST(0.5039062500),
00110 COEF_CONST(0.5000000000), COEF_CONST(0.4980468750),
00111 COEF_CONST(0.4960937500), COEF_CONST(0.4941406250),
00112 COEF_CONST(0.4921875000), COEF_CONST(0.4902343750),
00113 COEF_CONST(0.4882812500), COEF_CONST(0.4863281250),
00114 COEF_CONST(0.4843750000), COEF_CONST(0.4824218750),
00115 COEF_CONST(0.4804687500), COEF_CONST(0.4785156250)
00116 };
00117
00118 ALIGN static const real_t exp_table[128] = {
00119 COEF_CONST(0.50000000000000000000000000000000000000000000000000),
00120 COEF_CONST(0.25000000000000000000000000000000000000000000000000),
00121 COEF_CONST(0.12500000000000000000000000000000000000000000000000),
00122 COEF_CONST(0.06250000000000000000000000000000000000000000000000),
00123 COEF_CONST(0.03125000000000000000000000000000000000000000000000),
00124 COEF_CONST(0.01562500000000000000000000000000000000000000000000),
00125 COEF_CONST(0.00781250000000000000000000000000000000000000000000),
00126 COEF_CONST(0.00390625000000000000000000000000000000000000000000),
00127 COEF_CONST(0.00195312500000000000000000000000000000000000000000),
00128 COEF_CONST(0.00097656250000000000000000000000000000000000000000),
00129 COEF_CONST(0.00048828125000000000000000000000000000000000000000),
00130 COEF_CONST(0.00024414062500000000000000000000000000000000000000),
00131 COEF_CONST(0.00012207031250000000000000000000000000000000000000),
00132 COEF_CONST(0.00006103515625000000000000000000000000000000000000),
00133 COEF_CONST(0.00003051757812500000000000000000000000000000000000),
00134 COEF_CONST(0.00001525878906250000000000000000000000000000000000),
00135 COEF_CONST(0.00000762939453125000000000000000000000000000000000),
00136 COEF_CONST(0.00000381469726562500000000000000000000000000000000),
00137 COEF_CONST(0.00000190734863281250000000000000000000000000000000),
00138 COEF_CONST(0.00000095367431640625000000000000000000000000000000),
00139 COEF_CONST(0.00000047683715820312500000000000000000000000000000),
00140 COEF_CONST(0.00000023841857910156250000000000000000000000000000),
00141 COEF_CONST(0.00000011920928955078125000000000000000000000000000),
00142 COEF_CONST(0.00000005960464477539062500000000000000000000000000),
00143 COEF_CONST(0.00000002980232238769531300000000000000000000000000),
00144 COEF_CONST(0.00000001490116119384765600000000000000000000000000),
00145 COEF_CONST(0.00000000745058059692382810000000000000000000000000),
00146 COEF_CONST(0.00000000372529029846191410000000000000000000000000),
00147 COEF_CONST(0.00000000186264514923095700000000000000000000000000),
00148 COEF_CONST(0.00000000093132257461547852000000000000000000000000),
00149 COEF_CONST(0.00000000046566128730773926000000000000000000000000),
00150 COEF_CONST(0.00000000023283064365386963000000000000000000000000),
00151 COEF_CONST(0.00000000011641532182693481000000000000000000000000),
00152 COEF_CONST(0.00000000005820766091346740700000000000000000000000),
00153 COEF_CONST(0.00000000002910383045673370400000000000000000000000),
00154 COEF_CONST(0.00000000001455191522836685200000000000000000000000),
00155 COEF_CONST(0.00000000000727595761418342590000000000000000000000),
00156 COEF_CONST(0.00000000000363797880709171300000000000000000000000),
00157 COEF_CONST(0.00000000000181898940354585650000000000000000000000),
00158 COEF_CONST(0.00000000000090949470177292824000000000000000000000),
00159 COEF_CONST(0.00000000000045474735088646412000000000000000000000),
00160 COEF_CONST(0.00000000000022737367544323206000000000000000000000),
00161 COEF_CONST(0.00000000000011368683772161603000000000000000000000),
00162 COEF_CONST(0.00000000000005684341886080801500000000000000000000),
00163 COEF_CONST(0.00000000000002842170943040400700000000000000000000),
00164 COEF_CONST(0.00000000000001421085471520200400000000000000000000),
00165 COEF_CONST(0.00000000000000710542735760100190000000000000000000),
00166 COEF_CONST(0.00000000000000355271367880050090000000000000000000),
00167 COEF_CONST(0.00000000000000177635683940025050000000000000000000),
00168 COEF_CONST(0.00000000000000088817841970012523000000000000000000),
00169 COEF_CONST(0.00000000000000044408920985006262000000000000000000),
00170 COEF_CONST(0.00000000000000022204460492503131000000000000000000),
00171 COEF_CONST(0.00000000000000011102230246251565000000000000000000),
00172 COEF_CONST(0.00000000000000005551115123125782700000000000000000),
00173 COEF_CONST(0.00000000000000002775557561562891400000000000000000),
00174 COEF_CONST(0.00000000000000001387778780781445700000000000000000),
00175 COEF_CONST(0.00000000000000000693889390390722840000000000000000),
00176 COEF_CONST(0.00000000000000000346944695195361420000000000000000),
00177 COEF_CONST(0.00000000000000000173472347597680710000000000000000),
00178 COEF_CONST(0.00000000000000000086736173798840355000000000000000),
00179 COEF_CONST(0.00000000000000000043368086899420177000000000000000),
00180 COEF_CONST(0.00000000000000000021684043449710089000000000000000),
00181 COEF_CONST(0.00000000000000000010842021724855044000000000000000),
00182 COEF_CONST(0.00000000000000000005421010862427522200000000000000),
00183 COEF_CONST(0.00000000000000000002710505431213761100000000000000),
00184 COEF_CONST(0.00000000000000000001355252715606880500000000000000),
00185 COEF_CONST(0.00000000000000000000677626357803440270000000000000),
00186 COEF_CONST(0.00000000000000000000338813178901720140000000000000),
00187 COEF_CONST(0.00000000000000000000169406589450860070000000000000),
00188 COEF_CONST(0.00000000000000000000084703294725430034000000000000),
00189 COEF_CONST(0.00000000000000000000042351647362715017000000000000),
00190 COEF_CONST(0.00000000000000000000021175823681357508000000000000),
00191 COEF_CONST(0.00000000000000000000010587911840678754000000000000),
00192 COEF_CONST(0.00000000000000000000005293955920339377100000000000),
00193 COEF_CONST(0.00000000000000000000002646977960169688600000000000),
00194 COEF_CONST(0.00000000000000000000001323488980084844300000000000),
00195 COEF_CONST(0.00000000000000000000000661744490042422140000000000),
00196 COEF_CONST(0.00000000000000000000000330872245021211070000000000),
00197 COEF_CONST(0.00000000000000000000000165436122510605530000000000),
00198 COEF_CONST(0.00000000000000000000000082718061255302767000000000),
00199 COEF_CONST(0.00000000000000000000000041359030627651384000000000),
00200 COEF_CONST(0.00000000000000000000000020679515313825692000000000),
00201 COEF_CONST(0.00000000000000000000000010339757656912846000000000),
00202 COEF_CONST(0.00000000000000000000000005169878828456423000000000),
00203 COEF_CONST(0.00000000000000000000000002584939414228211500000000),
00204 COEF_CONST(0.00000000000000000000000001292469707114105700000000),
00205 COEF_CONST(0.00000000000000000000000000646234853557052870000000),
00206 COEF_CONST(0.00000000000000000000000000323117426778526440000000),
00207 COEF_CONST(0.00000000000000000000000000161558713389263220000000),
00208 COEF_CONST(0.00000000000000000000000000080779356694631609000000),
00209 COEF_CONST(0.00000000000000000000000000040389678347315804000000),
00210 COEF_CONST(0.00000000000000000000000000020194839173657902000000),
00211 COEF_CONST(0.00000000000000000000000000010097419586828951000000),
00212 COEF_CONST(0.00000000000000000000000000005048709793414475600000),
00213 COEF_CONST(0.00000000000000000000000000002524354896707237800000),
00214 COEF_CONST(0.00000000000000000000000000001262177448353618900000),
00215 COEF_CONST(0.00000000000000000000000000000631088724176809440000),
00216 COEF_CONST(0.00000000000000000000000000000315544362088404720000),
00217 COEF_CONST(0.00000000000000000000000000000157772181044202360000),
00218 COEF_CONST(0.00000000000000000000000000000078886090522101181000),
00219 COEF_CONST(0.00000000000000000000000000000039443045261050590000),
00220 COEF_CONST(0.00000000000000000000000000000019721522630525295000),
00221 COEF_CONST(0.00000000000000000000000000000009860761315262647600),
00222 COEF_CONST(0.00000000000000000000000000000004930380657631323800),
00223 COEF_CONST(0.00000000000000000000000000000002465190328815661900),
00224 COEF_CONST(0.00000000000000000000000000000001232595164407830900),
00225 COEF_CONST(0.00000000000000000000000000000000616297582203915470),
00226 COEF_CONST(0.00000000000000000000000000000000308148791101957740),
00227 COEF_CONST(0.00000000000000000000000000000000154074395550978870),
00228 COEF_CONST(0.00000000000000000000000000000000077037197775489434),
00229 COEF_CONST(0.00000000000000000000000000000000038518598887744717),
00230 COEF_CONST(0.00000000000000000000000000000000019259299443872359),
00231 COEF_CONST(0.00000000000000000000000000000000009629649721936179),
00232 COEF_CONST(0.00000000000000000000000000000000004814824860968090),
00233 COEF_CONST(0.00000000000000000000000000000000002407412430484045),
00234 COEF_CONST(0.00000000000000000000000000000000001203706215242022),
00235 COEF_CONST(0.00000000000000000000000000000000000601853107621011),
00236 COEF_CONST(0.00000000000000000000000000000000000300926553810506),
00237 COEF_CONST(0.00000000000000000000000000000000000150463276905253),
00238 COEF_CONST(0.00000000000000000000000000000000000075231638452626),
00239 COEF_CONST(0.00000000000000000000000000000000000037615819226313),
00240 COEF_CONST(0.00000000000000000000000000000000000018807909613157),
00241 COEF_CONST(0.00000000000000000000000000000000000009403954806578),
00242 COEF_CONST(0.00000000000000000000000000000000000004701977403289),
00243 COEF_CONST(0.00000000000000000000000000000000000002350988701645),
00244 COEF_CONST(0.00000000000000000000000000000000000001175494350822),
00245 COEF_CONST(0.0 ),
00246 COEF_CONST(0.0)
00247 };
00248
00249 #ifdef __cplusplus
00250 }
00251 #endif
00252 #endif
00253
00254 #endif