trigtabs.c
上传用户:dangjiwu
上传日期:2013-07-19
资源大小:42019k
文件大小:29k
源码类别:

Symbian

开发平台:

Visual C++

  1. #include "statname.h"
  2. extern const float coef32[31];
  3. extern const float look_global[256+2+4];
  4. extern const float look_scale[2][4][32];
  5. extern const float look_pow[64];
  6. extern const float look_subblock[8];
  7. extern const float lr[2][8][2];
  8. extern const float lr2[2][2][64][2];
  9. /* 
  10. pi = 4.0*atan(1.0);
  11. n = 16;
  12. k = 0;
  13. for(i=0; i<5; i++, n=n/2) {
  14. for(p=0; p<n; p++, k++) {
  15. t = (pi/(4*n))*(2*p+1);
  16. coef32[k] = (float)(0.50/cos(t));
  17. }
  18. }
  19. */
  20. const float coef32[31] = {
  21.  5.0060302019e-001f,  5.0547093153e-001f,  5.1544731855e-001f,  5.3104257584e-001f, 
  22.  5.5310392380e-001f,  5.8293497562e-001f,  6.2250411510e-001f,  6.7480832338e-001f, 
  23.  7.4453628063e-001f,  8.3934962749e-001f,  9.7256821394e-001f,  1.1694399118e+000f, 
  24.  1.4841645956e+000f,  2.0577809811e+000f,  3.4076085091e+000f,  1.0190008163e+001f, 
  25.  5.0241929293e-001f,  5.2249860764e-001f,  5.6694406271e-001f,  6.4682179689e-001f, 
  26.  7.8815460205e-001f,  1.0606776476e+000f,  1.7224471569e+000f,  5.1011486053e+000f, 
  27.  5.0979560614e-001f,  6.0134488344e-001f,  8.9997619390e-001f,  2.5629155636e+000f, 
  28.  5.4119610786e-001f,  1.3065630198e+000f,  7.0710676908e-001f, 
  29. };
  30. /* 8 bit plus 2 lookup x = pow(2.0, 0.25*(global_gain-210))
  31.  * extra 2 for ms scaling by 1/sqrt(2)
  32.  * extra 4 for cvt to mono scaling by 1/2
  33.  *
  34.  *
  35.  for(i=0;i<256+2+4;i++) 
  36. x[i] = (float)pow(2.0, 0.25*((i-(2+4)) - 210 + GLOBAL_GAIN_SCALE));
  37. */
  38. const float look_global[256+2+4] = {
  39.  1.8189894035e-012f,  2.1631550717e-012f,  2.5724394403e-012f,  3.0591633827e-012f, 
  40.  3.6379788071e-012f,  4.3263101435e-012f,  5.1448788806e-012f,  6.1183267654e-012f, 
  41.  7.2759576142e-012f,  8.6526202869e-012f,  1.0289757761e-011f,  1.2236653531e-011f, 
  42.  1.4551915228e-011f,  1.7305240574e-011f,  2.0579515522e-011f,  2.4473307061e-011f, 
  43.  2.9103830457e-011f,  3.4610481148e-011f,  4.1159031045e-011f,  4.8946614123e-011f, 
  44.  5.8207660913e-011f,  6.9220962295e-011f,  8.2318062089e-011f,  9.7893228246e-011f, 
  45.  1.1641532183e-010f,  1.3844192459e-010f,  1.6463612418e-010f,  1.9578645649e-010f, 
  46.  2.3283064365e-010f,  2.7688384918e-010f,  3.2927224836e-010f,  3.9157291298e-010f, 
  47.  4.6566128731e-010f,  5.5376769836e-010f,  6.5854449671e-010f,  7.8314582597e-010f, 
  48.  9.3132257462e-010f,  1.1075353967e-009f,  1.3170889934e-009f,  1.5662916519e-009f, 
  49.  1.8626451492e-009f,  2.2150707935e-009f,  2.6341779868e-009f,  3.1325833039e-009f, 
  50.  3.7252902985e-009f,  4.4301415869e-009f,  5.2683559737e-009f,  6.2651666077e-009f, 
  51.  7.4505805969e-009f,  8.8602831738e-009f,  1.0536711947e-008f,  1.2530333215e-008f, 
  52.  1.4901161194e-008f,  1.7720566348e-008f,  2.1073423895e-008f,  2.5060666431e-008f, 
  53.  2.9802322388e-008f,  3.5441132695e-008f,  4.2146847790e-008f,  5.0121332862e-008f, 
  54.  5.9604644775e-008f,  7.0882265391e-008f,  8.4293695579e-008f,  1.0024266572e-007f, 
  55.  1.1920928955e-007f,  1.4176453078e-007f,  1.6858739116e-007f,  2.0048533145e-007f, 
  56.  2.3841857910e-007f,  2.8352906156e-007f,  3.3717478232e-007f,  4.0097066289e-007f, 
  57.  4.7683715820e-007f,  5.6705812312e-007f,  6.7434956463e-007f,  8.0194132579e-007f, 
  58.  9.5367431641e-007f,  1.1341162462e-006f,  1.3486991293e-006f,  1.6038826516e-006f, 
  59.  1.9073486328e-006f,  2.2682324925e-006f,  2.6973982585e-006f,  3.2077653032e-006f, 
  60.  3.8146972656e-006f,  4.5364649850e-006f,  5.3947965171e-006f,  6.4155306063e-006f, 
  61.  7.6293945313e-006f,  9.0729299700e-006f,  1.0789593034e-005f,  1.2831061213e-005f, 
  62.  1.5258789063e-005f,  1.8145859940e-005f,  2.1579186068e-005f,  2.5662122425e-005f, 
  63.  3.0517578125e-005f,  3.6291719880e-005f,  4.3158372137e-005f,  5.1324244851e-005f, 
  64.  6.1035156250e-005f,  7.2583439760e-005f,  8.6316744273e-005f,  1.0264848970e-004f, 
  65.  1.2207031250e-004f,  1.4516687952e-004f,  1.7263348855e-004f,  2.0529697940e-004f, 
  66.  2.4414062500e-004f,  2.9033375904e-004f,  3.4526697709e-004f,  4.1059395880e-004f, 
  67.  4.8828125000e-004f,  5.8066751808e-004f,  6.9053395418e-004f,  8.2118791761e-004f, 
  68.  9.7656250000e-004f,  1.1613350362e-003f,  1.3810679084e-003f,  1.6423758352e-003f, 
  69.  1.9531250000e-003f,  2.3226700723e-003f,  2.7621358167e-003f,  3.2847516704e-003f, 
  70.  3.9062500000e-003f,  4.6453401446e-003f,  5.5242716335e-003f,  6.5695033409e-003f, 
  71.  7.8125000000e-003f,  9.2906802893e-003f,  1.1048543267e-002f,  1.3139006682e-002f, 
  72.  1.5625000000e-002f,  1.8581360579e-002f,  2.2097086534e-002f,  2.6278013363e-002f, 
  73.  3.1250000000e-002f,  3.7162721157e-002f,  4.4194173068e-002f,  5.2556026727e-002f, 
  74.  6.2500000000e-002f,  7.4325442314e-002f,  8.8388346136e-002f,  1.0511205345e-001f, 
  75.  1.2500000000e-001f,  1.4865088463e-001f,  1.7677669227e-001f,  2.1022410691e-001f, 
  76.  2.5000000000e-001f,  2.9730176926e-001f,  3.5355338454e-001f,  4.2044821382e-001f, 
  77.  5.0000000000e-001f,  5.9460353851e-001f,  7.0710676908e-001f,  8.4089642763e-001f, 
  78.  1.0000000000e+000f,  1.1892070770e+000f,  1.4142135382e+000f,  1.6817928553e+000f, 
  79.  2.0000000000e+000f,  2.3784141541e+000f,  2.8284270763e+000f,  3.3635857105e+000f, 
  80.  4.0000000000e+000f,  4.7568283081e+000f,  5.6568541527e+000f,  6.7271714211e+000f, 
  81.  8.0000000000e+000f,  9.5136566162e+000f,  1.1313708305e+001f,  1.3454342842e+001f, 
  82.  1.6000000000e+001f,  1.9027313232e+001f,  2.2627416611e+001f,  2.6908685684e+001f, 
  83.  3.2000000000e+001f,  3.8054626465e+001f,  4.5254833221e+001f,  5.3817371368e+001f, 
  84.  6.4000000000e+001f,  7.6109252930e+001f,  9.0509666443e+001f,  1.0763474274e+002f, 
  85.  1.2800000000e+002f,  1.5221850586e+002f,  1.8101933289e+002f,  2.1526948547e+002f, 
  86.  2.5600000000e+002f,  3.0443701172e+002f,  3.6203866577e+002f,  4.3053897095e+002f, 
  87.  5.1200000000e+002f,  6.0887402344e+002f,  7.2407733154e+002f,  8.6107794189e+002f, 
  88.  1.0240000000e+003f,  1.2177480469e+003f,  1.4481546631e+003f,  1.7221558838e+003f, 
  89.  2.0480000000e+003f,  2.4354960938e+003f,  2.8963093262e+003f,  3.4443117676e+003f, 
  90.  4.0960000000e+003f,  4.8709921875e+003f,  5.7926186523e+003f,  6.8886235352e+003f, 
  91.  8.1920000000e+003f,  9.7419843750e+003f,  1.1585237305e+004f,  1.3777247070e+004f, 
  92.  1.6384000000e+004f,  1.9483968750e+004f,  2.3170474609e+004f,  2.7554494141e+004f, 
  93.  3.2768000000e+004f,  3.8967937500e+004f,  4.6340949219e+004f,  5.5108988281e+004f, 
  94.  6.5536000000e+004f,  7.7935875000e+004f,  9.2681898438e+004f,  1.1021797656e+005f, 
  95.  1.3107200000e+005f,  1.5587175000e+005f,  1.8536379688e+005f,  2.2043595313e+005f, 
  96.  2.6214400000e+005f,  3.1174350000e+005f,  3.7072759375e+005f,  4.4087190625e+005f, 
  97.  5.2428800000e+005f,  6.2348700000e+005f,  7.4145518750e+005f,  8.8174381250e+005f, 
  98.  1.0485760000e+006f,  1.2469740000e+006f,  1.4829103750e+006f,  1.7634876250e+006f, 
  99.  2.0971520000e+006f,  2.4939480000e+006f,  2.9658207500e+006f,  3.5269752500e+006f, 
  100.  4.1943040000e+006f,  4.9878960000e+006f,  5.9316415000e+006f,  7.0539505000e+006f, 
  101.  8.3886080000e+006f,  9.9757920000e+006f,  1.1863283000e+007f,  1.4107901000e+007f, 
  102.  1.6777216000e+007f,  1.9951584000e+007f,  2.3726566000e+007f,  2.8215802000e+007f, 
  103.  3.3554432000e+007f,  3.9903168000e+007f,  4.7453132000e+007f,  5.6431604000e+007f, 
  104.  6.7108864000e+007f,  7.9806336000e+007f, 
  105. };
  106. /*
  107. for(scalefact_scale=0; scalefact_scale<2; scalefact_scale++) {
  108. for(preemp=0; preemp<4;  preemp++) {
  109. for(scalefac=0; scalefac<32; scalefac++) {
  110. ls[scalefact_scale][preemp][scalefac] = (float)pow(2.0, -0.5*(1+scalefact_scale)*(scalefac + preemp));
  111. }
  112. }
  113. }
  114. */
  115. const float look_scale[2][4][32] = {
  116. {
  117. {
  118. 1.0000000000e+000f,  7.0710676908e-001f,  5.0000000000e-001f,  3.5355338454e-001f, 
  119. 2.5000000000e-001f,  1.7677669227e-001f,  1.2500000000e-001f,  8.8388346136e-002f, 
  120. 6.2500000000e-002f,  4.4194173068e-002f,  3.1250000000e-002f,  2.2097086534e-002f, 
  121. 1.5625000000e-002f,  1.1048543267e-002f,  7.8125000000e-003f,  5.5242716335e-003f, 
  122. 3.9062500000e-003f,  2.7621358167e-003f,  1.9531250000e-003f,  1.3810679084e-003f, 
  123. 9.7656250000e-004f,  6.9053395418e-004f,  4.8828125000e-004f,  3.4526697709e-004f, 
  124. 2.4414062500e-004f,  1.7263348855e-004f,  1.2207031250e-004f,  8.6316744273e-005f, 
  125. 6.1035156250e-005f,  4.3158372137e-005f,  3.0517578125e-005f,  2.1579186068e-005f, 
  126. },
  127. {
  128. 7.0710676908e-001f,  5.0000000000e-001f,  3.5355338454e-001f,  2.5000000000e-001f, 
  129. 1.7677669227e-001f,  1.2500000000e-001f,  8.8388346136e-002f,  6.2500000000e-002f, 
  130. 4.4194173068e-002f,  3.1250000000e-002f,  2.2097086534e-002f,  1.5625000000e-002f, 
  131. 1.1048543267e-002f,  7.8125000000e-003f,  5.5242716335e-003f,  3.9062500000e-003f, 
  132. 2.7621358167e-003f,  1.9531250000e-003f,  1.3810679084e-003f,  9.7656250000e-004f, 
  133. 6.9053395418e-004f,  4.8828125000e-004f,  3.4526697709e-004f,  2.4414062500e-004f, 
  134. 1.7263348855e-004f,  1.2207031250e-004f,  8.6316744273e-005f,  6.1035156250e-005f, 
  135. 4.3158372137e-005f,  3.0517578125e-005f,  2.1579186068e-005f,  1.5258789063e-005f, 
  136. },
  137. {
  138. 5.0000000000e-001f,  3.5355338454e-001f,  2.5000000000e-001f,  1.7677669227e-001f, 
  139. 1.2500000000e-001f,  8.8388346136e-002f,  6.2500000000e-002f,  4.4194173068e-002f, 
  140. 3.1250000000e-002f,  2.2097086534e-002f,  1.5625000000e-002f,  1.1048543267e-002f, 
  141. 7.8125000000e-003f,  5.5242716335e-003f,  3.9062500000e-003f,  2.7621358167e-003f, 
  142. 1.9531250000e-003f,  1.3810679084e-003f,  9.7656250000e-004f,  6.9053395418e-004f, 
  143. 4.8828125000e-004f,  3.4526697709e-004f,  2.4414062500e-004f,  1.7263348855e-004f, 
  144. 1.2207031250e-004f,  8.6316744273e-005f,  6.1035156250e-005f,  4.3158372137e-005f, 
  145. 3.0517578125e-005f,  2.1579186068e-005f,  1.5258789063e-005f,  1.0789593034e-005f, 
  146. },
  147. {
  148. 3.5355338454e-001f,  2.5000000000e-001f,  1.7677669227e-001f,  1.2500000000e-001f, 
  149. 8.8388346136e-002f,  6.2500000000e-002f,  4.4194173068e-002f,  3.1250000000e-002f, 
  150. 2.2097086534e-002f,  1.5625000000e-002f,  1.1048543267e-002f,  7.8125000000e-003f, 
  151. 5.5242716335e-003f,  3.9062500000e-003f,  2.7621358167e-003f,  1.9531250000e-003f, 
  152. 1.3810679084e-003f,  9.7656250000e-004f,  6.9053395418e-004f,  4.8828125000e-004f, 
  153. 3.4526697709e-004f,  2.4414062500e-004f,  1.7263348855e-004f,  1.2207031250e-004f, 
  154. 8.6316744273e-005f,  6.1035156250e-005f,  4.3158372137e-005f,  3.0517578125e-005f, 
  155. 2.1579186068e-005f,  1.5258789063e-005f,  1.0789593034e-005f,  7.6293945313e-006f, 
  156. }
  157. },
  158. {
  159. {
  160. 1.0000000000e+000f,  5.0000000000e-001f,  2.5000000000e-001f,  1.2500000000e-001f, 
  161. 6.2500000000e-002f,  3.1250000000e-002f,  1.5625000000e-002f,  7.8125000000e-003f, 
  162. 3.9062500000e-003f,  1.9531250000e-003f,  9.7656250000e-004f,  4.8828125000e-004f, 
  163. 2.4414062500e-004f,  1.2207031250e-004f,  6.1035156250e-005f,  3.0517578125e-005f, 
  164. 1.5258789063e-005f,  7.6293945313e-006f,  3.8146972656e-006f,  1.9073486328e-006f, 
  165. 9.5367431641e-007f,  4.7683715820e-007f,  2.3841857910e-007f,  1.1920928955e-007f, 
  166. 5.9604644775e-008f,  2.9802322388e-008f,  1.4901161194e-008f,  7.4505805969e-009f, 
  167. 3.7252902985e-009f,  1.8626451492e-009f,  9.3132257462e-010f,  4.6566128731e-010f, 
  168. },
  169. {
  170. 5.0000000000e-001f,  2.5000000000e-001f,  1.2500000000e-001f,  6.2500000000e-002f, 
  171. 3.1250000000e-002f,  1.5625000000e-002f,  7.8125000000e-003f,  3.9062500000e-003f, 
  172. 1.9531250000e-003f,  9.7656250000e-004f,  4.8828125000e-004f,  2.4414062500e-004f, 
  173. 1.2207031250e-004f,  6.1035156250e-005f,  3.0517578125e-005f,  1.5258789063e-005f, 
  174. 7.6293945313e-006f,  3.8146972656e-006f,  1.9073486328e-006f,  9.5367431641e-007f, 
  175. 4.7683715820e-007f,  2.3841857910e-007f,  1.1920928955e-007f,  5.9604644775e-008f, 
  176. 2.9802322388e-008f,  1.4901161194e-008f,  7.4505805969e-009f,  3.7252902985e-009f, 
  177. 1.8626451492e-009f,  9.3132257462e-010f,  4.6566128731e-010f,  2.3283064365e-010f, 
  178. },
  179. {
  180. 2.5000000000e-001f,  1.2500000000e-001f,  6.2500000000e-002f,  3.1250000000e-002f, 
  181. 1.5625000000e-002f,  7.8125000000e-003f,  3.9062500000e-003f,  1.9531250000e-003f, 
  182. 9.7656250000e-004f,  4.8828125000e-004f,  2.4414062500e-004f,  1.2207031250e-004f, 
  183. 6.1035156250e-005f,  3.0517578125e-005f,  1.5258789063e-005f,  7.6293945313e-006f, 
  184. 3.8146972656e-006f,  1.9073486328e-006f,  9.5367431641e-007f,  4.7683715820e-007f, 
  185. 2.3841857910e-007f,  1.1920928955e-007f,  5.9604644775e-008f,  2.9802322388e-008f, 
  186. 1.4901161194e-008f,  7.4505805969e-009f,  3.7252902985e-009f,  1.8626451492e-009f, 
  187. 9.3132257462e-010f,  4.6566128731e-010f,  2.3283064365e-010f,  1.1641532183e-010f, 
  188. },
  189. {
  190. 1.2500000000e-001f,  6.2500000000e-002f,  3.1250000000e-002f,  1.5625000000e-002f, 
  191. 7.8125000000e-003f,  3.9062500000e-003f,  1.9531250000e-003f,  9.7656250000e-004f, 
  192. 4.8828125000e-004f,  2.4414062500e-004f,  1.2207031250e-004f,  6.1035156250e-005f, 
  193. 3.0517578125e-005f,  1.5258789063e-005f,  7.6293945313e-006f,  3.8146972656e-006f, 
  194. 1.9073486328e-006f,  9.5367431641e-007f,  4.7683715820e-007f,  2.3841857910e-007f, 
  195. 1.1920928955e-007f,  5.9604644775e-008f,  2.9802322388e-008f,  1.4901161194e-008f, 
  196. 7.4505805969e-009f,  3.7252902985e-009f,  1.8626451492e-009f,  9.3132257462e-010f, 
  197. 4.6566128731e-010f,  2.3283064365e-010f,  1.1641532183e-010f,  5.8207660913e-011f, 
  198. }
  199. }
  200. };
  201. /* --- iSample**(4/3) lookup, -32<=i<=31 ---
  202. for(i=0;i<64;i++) {
  203.     tmp = i-32;
  204.     x[i] = (float)( tmp*pow(fabs(tmp), (1.0/3.0)) );
  205. }
  206. */
  207. const float look_pow[64] = {
  208. -1.0159366608e+002f, -9.7382797241e+001f, -9.3216972351e+001f, -8.9097190857e+001f, 
  209. -8.5024490356e+001f, -8.1000000000e+001f, -7.7024894714e+001f, -7.3100440979e+001f, 
  210. -6.9227981567e+001f, -6.5408943176e+001f, -6.1644866943e+001f, -5.7937408447e+001f, 
  211. -5.4288352966e+001f, -5.0699630737e+001f, -4.7173343658e+001f, -4.3711788177e+001f, 
  212. -4.0317474365e+001f, -3.6993179321e+001f, -3.3741992950e+001f, -3.0567350388e+001f, 
  213. -2.7473142624e+001f, -2.4463781357e+001f, -2.1544347763e+001f, -1.8720754623e+001f, 
  214. -1.6000000000e+001f, -1.3390518188e+001f, -1.0902723312e+001f, -8.5498800278e+000f, 
  215. -6.3496041298e+000f, -4.3267488480e+000f, -2.5198421478e+000f, -1.0000000000e+000f, 
  216.  0.0000000000e+000f,  1.0000000000e+000f,  2.5198421478e+000f,  4.3267488480e+000f, 
  217.  6.3496041298e+000f,  8.5498800278e+000f,  1.0902723312e+001f,  1.3390518188e+001f, 
  218.  1.6000000000e+001f,  1.8720754623e+001f,  2.1544347763e+001f,  2.4463781357e+001f, 
  219.  2.7473142624e+001f,  3.0567350388e+001f,  3.3741992950e+001f,  3.6993179321e+001f, 
  220.  4.0317474365e+001f,  4.3711788177e+001f,  4.7173343658e+001f,  5.0699630737e+001f, 
  221.  5.4288352966e+001f,  5.7937408447e+001f,  6.1644866943e+001f,  6.5408943176e+001f, 
  222.  6.9227981567e+001f,  7.3100440979e+001f,  7.7024894714e+001f,  8.1000000000e+001f, 
  223.  8.5024490356e+001f,  8.9097190857e+001f,  9.3216972351e+001f,  9.7382797241e+001f, 
  224. };
  225. /* -- pow(2.0, -0.25*8.0*subblock_gain)  3 bits --
  226. for(i=0;i<8;i++) {
  227. x[i] = (float)pow(2.0, 0.25 * -8.0 * i );
  228. }
  229. */
  230. const float look_subblock[8] = {
  231.  1.0000000000e+000f,  2.5000000000e-001f,  6.2500000000e-002f,  1.5625000000e-002f, 
  232.  3.9062500000e-003f,  9.7656250000e-004f,  2.4414062500e-004f,  6.1035156250e-005f, 
  233. };
  234. /* intensity stereo 
  235.  * if ms mode quant pre-scales all values by 1.0/sqrt(2.0)
  236.    ms_mode in table compensates 
  237. pi = 4.0*atan(1.0);
  238. t = pi/12.0;
  239. for(i=0;i<7;i++) {
  240.     s = sin(i*t);
  241.     c = cos(i*t);
  242.     ** ms_mode = 0 **
  243.     lr[0][i][0] = (float)(s/(s+c));
  244.     lr[0][i][1] = (float)(c/(s+c));
  245.     ** ms_mode = 1 **
  246.     lr[1][i][0] = (float)(sqrt(2.0)*(s/(s+c)));
  247.     lr[1][i][1] = (float)(sqrt(2.0)*(c/(s+c)));
  248. }
  249. ** sf = 7 **
  250. ** ms_mode = 0 **
  251. lr[0][i][0] = 1.0f;
  252. lr[0][i][1] = 0.0f;
  253. ** ms_mode = 1, in is bands is routine does ms processing **
  254. lr[1][i][0] = 1.0f;
  255. lr[1][i][1] = 1.0f;
  256. */
  257. const float lr[2][8][2] = { /* [ms_mode 0/1][sf][left/right]  */
  258. {
  259. {0.0000000000e+000f,  1.0000000000e+000f},  {2.1132487059e-001f,  7.8867512941e-001f}, 
  260. {3.6602541804e-001f,  6.3397461176e-001f},  {5.0000000000e-001f,  5.0000000000e-001f}, 
  261. {6.3397461176e-001f,  3.6602541804e-001f},  {7.8867512941e-001f,  2.1132487059e-001f}, 
  262. {1.0000000000e+000f,  6.1230317691e-017f},  {1.0000000000e+000f,  0.0000000000e+000f}, 
  263. },
  264. {
  265. {0.0000000000e+000f,  1.4142135382e+000f},  {2.9885849357e-001f,  1.1153550148e+000f}, 
  266. {5.1763808727e-001f,  8.9657545090e-001f},  {7.0710676908e-001f,  7.0710676908e-001f}, 
  267. {8.9657545090e-001f,  5.1763808727e-001f},  {1.1153550148e+000f,  2.9885849357e-001f}, 
  268. {1.4142135382e+000f,  8.6592747298e-017f},  {1.0000000000e+000f,  1.0000000000e+000f}, 
  269. }
  270. };
  271. /* intensity stereo MPEG2 */
  272. /* lr2[intensity_scale][ms_mode][sflen_offset+sf][left/right] */
  273. /* intensity stereo MPEG2 
  274.   lr2[intensity_scale][ms_mode][sflen_offset+sf][left/right] 
  275. for(intensity_scale=0;intensity_scale<2;intensity_scale++) {
  276. t = pow(2.0, -0.25*(1+intensity_scale));
  277. for(ms_mode=0;ms_mode<2;ms_mode++) {
  278. n = 1;
  279. k = 0;
  280. for(sflen=0;sflen<6;sflen++) {
  281. for(sf=0;sf<(n-1);sf++, k++) {
  282. if( sf == 0 ) {
  283. lr[intensity_scale][ms_mode][k][0] = ms_factor[ms_mode]*1.0f;
  284. lr[intensity_scale][ms_mode][k][1] = ms_factor[ms_mode]*1.0f;
  285. }
  286. else if( (sf & 1) ) {
  287. lr[intensity_scale][ms_mode][k][0] = 
  288. (float)(ms_factor[ms_mode]*pow(t,(sf+1)/2));
  289. lr[intensity_scale][ms_mode][k][1] = ms_factor[ms_mode]*1.0f;
  290. }
  291. else {
  292. lr[intensity_scale][ms_mode][k][0] = ms_factor[ms_mode]*1.0f;
  293. lr[intensity_scale][ms_mode][k][1] = 
  294. (float)(ms_factor[ms_mode]*pow(t,sf/2));
  295. }
  296. }
  297. ** illegal is_pos used to do ms processing **
  298. if( ms_mode == 0 ) {** ms_mode = 0 **
  299. lr[intensity_scale][ms_mode][k][0] = 1.0f;
  300. lr[intensity_scale][ms_mode][k][1] = 0.0f;
  301. }
  302. else {
  303. ** ms_mode = 1, in is bands is routine does ms processing **
  304. lr[intensity_scale][ms_mode][k][0] = 1.0f;
  305. lr[intensity_scale][ms_mode][k][1] = 1.0f;
  306. }
  307. k++;
  308. n = n + n;
  309. }
  310. }
  311. }
  312. */
  313. const float lr2[2][2][64][2] = {
  314. {
  315. {
  316. {1.0000000000e+000f,  0.0000000000e+000f},  {1.0000000000e+000f,  1.0000000000e+000f}, 
  317. {1.0000000000e+000f,  0.0000000000e+000f},  {1.0000000000e+000f,  1.0000000000e+000f}, 
  318. {8.4089642763e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  8.4089642763e-001f}, 
  319. {1.0000000000e+000f,  0.0000000000e+000f},  {1.0000000000e+000f,  1.0000000000e+000f}, 
  320. {8.4089642763e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  8.4089642763e-001f}, 
  321. {7.0710676908e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  7.0710676908e-001f}, 
  322. {5.9460353851e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  5.9460353851e-001f}, 
  323. {1.0000000000e+000f,  0.0000000000e+000f},  {1.0000000000e+000f,  1.0000000000e+000f}, 
  324. {8.4089642763e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  8.4089642763e-001f}, 
  325. {7.0710676908e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  7.0710676908e-001f}, 
  326. {5.9460353851e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  5.9460353851e-001f}, 
  327. {5.0000000000e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  5.0000000000e-001f}, 
  328. {4.2044821382e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  4.2044821382e-001f}, 
  329. {3.5355338454e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  3.5355338454e-001f}, 
  330. {2.9730176926e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  2.9730176926e-001f}, 
  331. {1.0000000000e+000f,  0.0000000000e+000f},  {1.0000000000e+000f,  1.0000000000e+000f}, 
  332. {8.4089642763e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  8.4089642763e-001f}, 
  333. {7.0710676908e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  7.0710676908e-001f}, 
  334. {5.9460353851e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  5.9460353851e-001f}, 
  335. {5.0000000000e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  5.0000000000e-001f}, 
  336. {4.2044821382e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  4.2044821382e-001f}, 
  337. {3.5355338454e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  3.5355338454e-001f}, 
  338. {2.9730176926e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  2.9730176926e-001f}, 
  339. {2.5000000000e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  2.5000000000e-001f}, 
  340. {2.1022410691e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  2.1022410691e-001f}, 
  341. {1.7677669227e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  1.7677669227e-001f}, 
  342. {1.4865088463e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  1.4865088463e-001f}, 
  343. {1.2500000000e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  1.2500000000e-001f}, 
  344. {1.0511205345e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  1.0511205345e-001f}, 
  345. {8.8388346136e-002f,  1.0000000000e+000f},  {1.0000000000e+000f,  8.8388346136e-002f}, 
  346. {7.4325442314e-002f,  1.0000000000e+000f},  {1.0000000000e+000f,  7.4325442314e-002f}, 
  347. {1.0000000000e+000f,  0.0000000000e+000f},  {0.0000000000e+000f,  0.0000000000e+000f}, 
  348. },
  349. {
  350. {1.0000000000e+000f,  1.0000000000e+000f},  {1.4142135382e+000f,  1.4142135382e+000f}, 
  351. {1.0000000000e+000f,  1.0000000000e+000f},  {1.4142135382e+000f,  1.4142135382e+000f}, 
  352. {1.1892070770e+000f,  1.4142135382e+000f},  {1.4142135382e+000f,  1.1892070770e+000f}, 
  353. {1.0000000000e+000f,  1.0000000000e+000f},  {1.4142135382e+000f,  1.4142135382e+000f}, 
  354. {1.1892070770e+000f,  1.4142135382e+000f},  {1.4142135382e+000f,  1.1892070770e+000f}, 
  355. {1.0000000000e+000f,  1.4142135382e+000f},  {1.4142135382e+000f,  1.0000000000e+000f}, 
  356. {8.4089642763e-001f,  1.4142135382e+000f},  {1.4142135382e+000f,  8.4089642763e-001f}, 
  357. {1.0000000000e+000f,  1.0000000000e+000f},  {1.4142135382e+000f,  1.4142135382e+000f}, 
  358. {1.1892070770e+000f,  1.4142135382e+000f},  {1.4142135382e+000f,  1.1892070770e+000f}, 
  359. {1.0000000000e+000f,  1.4142135382e+000f},  {1.4142135382e+000f,  1.0000000000e+000f}, 
  360. {8.4089642763e-001f,  1.4142135382e+000f},  {1.4142135382e+000f,  8.4089642763e-001f}, 
  361. {7.0710676908e-001f,  1.4142135382e+000f},  {1.4142135382e+000f,  7.0710676908e-001f}, 
  362. {5.9460353851e-001f,  1.4142135382e+000f},  {1.4142135382e+000f,  5.9460353851e-001f}, 
  363. {5.0000000000e-001f,  1.4142135382e+000f},  {1.4142135382e+000f,  5.0000000000e-001f}, 
  364. {4.2044821382e-001f,  1.4142135382e+000f},  {1.4142135382e+000f,  4.2044821382e-001f}, 
  365. {1.0000000000e+000f,  1.0000000000e+000f},  {1.4142135382e+000f,  1.4142135382e+000f}, 
  366. {1.1892070770e+000f,  1.4142135382e+000f},  {1.4142135382e+000f,  1.1892070770e+000f}, 
  367. {1.0000000000e+000f,  1.4142135382e+000f},  {1.4142135382e+000f,  1.0000000000e+000f}, 
  368. {8.4089642763e-001f,  1.4142135382e+000f},  {1.4142135382e+000f,  8.4089642763e-001f}, 
  369. {7.0710676908e-001f,  1.4142135382e+000f},  {1.4142135382e+000f,  7.0710676908e-001f}, 
  370. {5.9460353851e-001f,  1.4142135382e+000f},  {1.4142135382e+000f,  5.9460353851e-001f}, 
  371. {5.0000000000e-001f,  1.4142135382e+000f},  {1.4142135382e+000f,  5.0000000000e-001f}, 
  372. {4.2044821382e-001f,  1.4142135382e+000f},  {1.4142135382e+000f,  4.2044821382e-001f}, 
  373. {3.5355338454e-001f,  1.4142135382e+000f},  {1.4142135382e+000f,  3.5355338454e-001f}, 
  374. {2.9730176926e-001f,  1.4142135382e+000f},  {1.4142135382e+000f,  2.9730176926e-001f}, 
  375. {2.5000000000e-001f,  1.4142135382e+000f},  {1.4142135382e+000f,  2.5000000000e-001f}, 
  376. {2.1022410691e-001f,  1.4142135382e+000f},  {1.4142135382e+000f,  2.1022410691e-001f}, 
  377. {1.7677669227e-001f,  1.4142135382e+000f},  {1.4142135382e+000f,  1.7677669227e-001f}, 
  378. {1.4865088463e-001f,  1.4142135382e+000f},  {1.4142135382e+000f,  1.4865088463e-001f}, 
  379. {1.2500000000e-001f,  1.4142135382e+000f},  {1.4142135382e+000f,  1.2500000000e-001f}, 
  380. {1.0511205345e-001f,  1.4142135382e+000f},  {1.4142135382e+000f,  1.0511205345e-001f}, 
  381. {1.0000000000e+000f,  1.0000000000e+000f},  {0.0000000000e+000f,  0.0000000000e+000f}, 
  382. }
  383. },
  384. {
  385. {
  386. {1.0000000000e+000f,  0.0000000000e+000f},  {1.0000000000e+000f,  1.0000000000e+000f}, 
  387. {1.0000000000e+000f,  0.0000000000e+000f},  {1.0000000000e+000f,  1.0000000000e+000f}, 
  388. {7.0710676908e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  7.0710676908e-001f}, 
  389. {1.0000000000e+000f,  0.0000000000e+000f},  {1.0000000000e+000f,  1.0000000000e+000f}, 
  390. {7.0710676908e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  7.0710676908e-001f}, 
  391. {5.0000000000e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  5.0000000000e-001f}, 
  392. {3.5355338454e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  3.5355338454e-001f}, 
  393. {1.0000000000e+000f,  0.0000000000e+000f},  {1.0000000000e+000f,  1.0000000000e+000f}, 
  394. {7.0710676908e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  7.0710676908e-001f}, 
  395. {5.0000000000e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  5.0000000000e-001f}, 
  396. {3.5355338454e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  3.5355338454e-001f}, 
  397. {2.5000000000e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  2.5000000000e-001f}, 
  398. {1.7677669227e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  1.7677669227e-001f}, 
  399. {1.2500000000e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  1.2500000000e-001f}, 
  400. {8.8388346136e-002f,  1.0000000000e+000f},  {1.0000000000e+000f,  8.8388346136e-002f}, 
  401. {1.0000000000e+000f,  0.0000000000e+000f},  {1.0000000000e+000f,  1.0000000000e+000f}, 
  402. {7.0710676908e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  7.0710676908e-001f}, 
  403. {5.0000000000e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  5.0000000000e-001f}, 
  404. {3.5355338454e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  3.5355338454e-001f}, 
  405. {2.5000000000e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  2.5000000000e-001f}, 
  406. {1.7677669227e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  1.7677669227e-001f}, 
  407. {1.2500000000e-001f,  1.0000000000e+000f},  {1.0000000000e+000f,  1.2500000000e-001f}, 
  408. {8.8388346136e-002f,  1.0000000000e+000f},  {1.0000000000e+000f,  8.8388346136e-002f}, 
  409. {6.2500000000e-002f,  1.0000000000e+000f},  {1.0000000000e+000f,  6.2500000000e-002f}, 
  410. {4.4194173068e-002f,  1.0000000000e+000f},  {1.0000000000e+000f,  4.4194173068e-002f}, 
  411. {3.1250000000e-002f,  1.0000000000e+000f},  {1.0000000000e+000f,  3.1250000000e-002f}, 
  412. {2.2097086534e-002f,  1.0000000000e+000f},  {1.0000000000e+000f,  2.2097086534e-002f}, 
  413. {1.5625000000e-002f,  1.0000000000e+000f},  {1.0000000000e+000f,  1.5625000000e-002f}, 
  414. {1.1048543267e-002f,  1.0000000000e+000f},  {1.0000000000e+000f,  1.1048543267e-002f}, 
  415. {7.8125000000e-003f,  1.0000000000e+000f},  {1.0000000000e+000f,  7.8125000000e-003f}, 
  416. {5.5242716335e-003f,  1.0000000000e+000f},  {1.0000000000e+000f,  5.5242716335e-003f}, 
  417. {1.0000000000e+000f,  0.0000000000e+000f},  {0.0000000000e+000f,  0.0000000000e+000f}, 
  418. },
  419. {
  420. {1.0000000000e+000f,  1.0000000000e+000f},  {1.4142135382e+000f,  1.4142135382e+000f}, 
  421. {1.0000000000e+000f,  1.0000000000e+000f},  {1.4142135382e+000f,  1.4142135382e+000f}, 
  422. {1.0000000000e+000f,  1.4142135382e+000f},  {1.4142135382e+000f,  1.0000000000e+000f}, 
  423. {1.0000000000e+000f,  1.0000000000e+000f},  {1.4142135382e+000f,  1.4142135382e+000f}, 
  424. {1.0000000000e+000f,  1.4142135382e+000f},  {1.4142135382e+000f,  1.0000000000e+000f}, 
  425. {7.0710676908e-001f,  1.4142135382e+000f},  {1.4142135382e+000f,  7.0710676908e-001f}, 
  426. {5.0000000000e-001f,  1.4142135382e+000f},  {1.4142135382e+000f,  5.0000000000e-001f}, 
  427. {1.0000000000e+000f,  1.0000000000e+000f},  {1.4142135382e+000f,  1.4142135382e+000f}, 
  428. {1.0000000000e+000f,  1.4142135382e+000f},  {1.4142135382e+000f,  1.0000000000e+000f}, 
  429. {7.0710676908e-001f,  1.4142135382e+000f},  {1.4142135382e+000f,  7.0710676908e-001f}, 
  430. {5.0000000000e-001f,  1.4142135382e+000f},  {1.4142135382e+000f,  5.0000000000e-001f}, 
  431. {3.5355338454e-001f,  1.4142135382e+000f},  {1.4142135382e+000f,  3.5355338454e-001f}, 
  432. {2.5000000000e-001f,  1.4142135382e+000f},  {1.4142135382e+000f,  2.5000000000e-001f}, 
  433. {1.7677669227e-001f,  1.4142135382e+000f},  {1.4142135382e+000f,  1.7677669227e-001f}, 
  434. {1.2500000000e-001f,  1.4142135382e+000f},  {1.4142135382e+000f,  1.2500000000e-001f}, 
  435. {1.0000000000e+000f,  1.0000000000e+000f},  {1.4142135382e+000f,  1.4142135382e+000f}, 
  436. {1.0000000000e+000f,  1.4142135382e+000f},  {1.4142135382e+000f,  1.0000000000e+000f}, 
  437. {7.0710676908e-001f,  1.4142135382e+000f},  {1.4142135382e+000f,  7.0710676908e-001f}, 
  438. {5.0000000000e-001f,  1.4142135382e+000f},  {1.4142135382e+000f,  5.0000000000e-001f}, 
  439. {3.5355338454e-001f,  1.4142135382e+000f},  {1.4142135382e+000f,  3.5355338454e-001f}, 
  440. {2.5000000000e-001f,  1.4142135382e+000f},  {1.4142135382e+000f,  2.5000000000e-001f}, 
  441. {1.7677669227e-001f,  1.4142135382e+000f},  {1.4142135382e+000f,  1.7677669227e-001f}, 
  442. {1.2500000000e-001f,  1.4142135382e+000f},  {1.4142135382e+000f,  1.2500000000e-001f}, 
  443. {8.8388346136e-002f,  1.4142135382e+000f},  {1.4142135382e+000f,  8.8388346136e-002f}, 
  444. {6.2500000000e-002f,  1.4142135382e+000f},  {1.4142135382e+000f,  6.2500000000e-002f}, 
  445. {4.4194173068e-002f,  1.4142135382e+000f},  {1.4142135382e+000f,  4.4194173068e-002f}, 
  446. {3.1250000000e-002f,  1.4142135382e+000f},  {1.4142135382e+000f,  3.1250000000e-002f}, 
  447. {2.2097086534e-002f,  1.4142135382e+000f},  {1.4142135382e+000f,  2.2097086534e-002f}, 
  448. {1.5625000000e-002f,  1.4142135382e+000f},  {1.4142135382e+000f,  1.5625000000e-002f}, 
  449. {1.1048543267e-002f,  1.4142135382e+000f},  {1.4142135382e+000f,  1.1048543267e-002f}, 
  450. {7.8125000000e-003f,  1.4142135382e+000f},  {1.4142135382e+000f,  7.8125000000e-003f}, 
  451. {1.0000000000e+000f,  1.0000000000e+000f},  {0.0000000000e+000f,  0.0000000000e+000f}, 
  452. }
  453. }
  454. };