home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / OS9 / MM1 / SOUNDUTILS / audioplay.lzh / AUDIOPLAY / SRC / ulaw.h < prev    next >
Text File  |  1995-02-05  |  4KB  |  93 lines

  1. /*
  2. ** This table converts from ulaw to 16 bit linear,
  3. ** and from ulaw to 8 bit linear.
  4. **
  5. ** Created by 'st_ulaw_to_linear_slow()' written by:
  6. **
  7. ** Craig Reese: IDA/Supercomputing Research Center
  8. ** 29 September 1989
  9. **
  10. ** References:
  11. ** 1) CCITT Recommendation G.711  (very difficult to follow)
  12. ** 2) MIL-STD-188-113,"Interoperability and Performance Standards
  13. **     for Analog-to_Digital Conversion Techniques,"
  14. **     17 February 1987
  15. **
  16. ** Input: 8 bit ulaw sample
  17. ** Output: signed 16 bit linear sample or signed 8 bit sample
  18. */
  19.  
  20. #define ulaw_to_short_linear(x) ulawstable[x]
  21. #define ulaw_to_byte_linear(x)  ulawbtable[x]
  22.  
  23.  
  24. short ulawstable[256] = {
  25.     -32124, -31100, -30076, -29052, -28028, -27004, -25980, -24956, 
  26.     -23932, -22908, -21884, -20860, -19836, -18812, -17788, -16764, 
  27.     -15996, -15484, -14972, -14460, -13948, -13436, -12924, -12412, 
  28.     -11900, -11388, -10876, -10364,  -9852,  -9340,  -8828,  -8316, 
  29.      -7932,  -7676,  -7420,  -7164,  -6908,  -6652,  -6396,  -6140, 
  30.      -5884,  -5628,  -5372,  -5116,  -4860,  -4604,  -4348,  -4092, 
  31.      -3900,  -3772,  -3644,  -3516,  -3388,  -3260,  -3132,  -3004, 
  32.      -2876,  -2748,  -2620,  -2492,  -2364,  -2236,  -2108,  -1980, 
  33.      -1884,  -1820,  -1756,  -1692,  -1628,  -1564,  -1500,  -1436, 
  34.      -1372,  -1308,  -1244,  -1180,  -1116,  -1052,   -988,   -924, 
  35.       -876,   -844,   -812,   -780,   -748,   -716,   -684,   -652, 
  36.       -620,   -588,   -556,   -524,   -492,   -460,   -428,   -396, 
  37.       -372,   -356,   -340,   -324,   -308,   -292,   -276,   -260, 
  38.       -244,   -228,   -212,   -196,   -180,   -164,   -148,   -132, 
  39.       -120,   -112,   -104,    -96,    -88,    -80,    -72,    -64, 
  40.        -56,    -48,    -40,    -32,    -24,    -16,     -8,      0, 
  41.      32124,  31100,  30076,  29052,  28028,  27004,  25980,  24956, 
  42.      23932,  22908,  21884,  20860,  19836,  18812,  17788,  16764, 
  43.      15996,  15484,  14972,  14460,  13948,  13436,  12924,  12412, 
  44.      11900,  11388,  10876,  10364,   9852,   9340,   8828,   8316, 
  45.       7932,   7676,   7420,   7164,   6908,   6652,   6396,   6140, 
  46.       5884,   5628,   5372,   5116,   4860,   4604,   4348,   4092, 
  47.       3900,   3772,   3644,   3516,   3388,   3260,   3132,   3004, 
  48.       2876,   2748,   2620,   2492,   2364,   2236,   2108,   1980, 
  49.       1884,   1820,   1756,   1692,   1628,   1564,   1500,   1436, 
  50.       1372,   1308,   1244,   1180,   1116,   1052,    988,    924, 
  51.        876,    844,    812,    780,    748,    716,    684,    652, 
  52.        620,    588,    556,    524,    492,    460,    428,    396, 
  53.        372,    356,    340,    324,    308,    292,    276,    260, 
  54.        244,    228,    212,    196,    180,    164,    148,    132, 
  55.        120,    112,    104,     96,     88,     80,     72,     64, 
  56.         56,     48,     40,     32,     24,     16,      8,      0
  57. };
  58.  
  59. char ulawbtable[256] = {
  60.     -126, -122, -118, -114, -110, -106, -102,  -98, 
  61.      -94,  -90,  -86,  -82,  -78,  -74,  -70,  -66, 
  62.      -63,  -61,  -59,  -57,  -55,  -53,  -51,  -49, 
  63.      -47,  -45,  -43,  -41,  -39,  -37,  -35,  -33, 
  64.      -31,  -30,  -29,  -28,  -27,  -26,  -25,  -24, 
  65.      -23,  -22,  -21,  -20,  -19,  -18,  -17,  -16, 
  66.      -16,  -15,  -15,  -14,  -14,  -13,  -13,  -12, 
  67.      -12,  -11,  -11,  -10,  -10,   -9,   -9,   -8, 
  68.       -8,   -8,   -7,   -7,   -7,   -7,   -6,   -6, 
  69.       -6,   -6,   -5,   -5,   -5,   -5,   -4,   -4, 
  70.       -4,   -4,   -4,   -4,   -3,   -3,   -3,   -3, 
  71.       -3,   -3,   -3,   -3,   -2,   -2,   -2,   -2, 
  72.       -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2, 
  73.       -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1, 
  74.       -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1, 
  75.       -1,   -1,   -1,   -1,   -1,   -1,   -1,    0, 
  76.      125,  121,  117,  113,  109,  105,  101,   97, 
  77.       93,   89,   85,   81,   77,   73,   69,   65, 
  78.       62,   60,   58,   56,   54,   52,   50,   48, 
  79.       46,   44,   42,   40,   38,   36,   34,   32, 
  80.       30,   29,   28,   27,   26,   25,   24,   23, 
  81.       22,   21,   20,   19,   18,   17,   16,   15, 
  82.       15,   14,   14,   13,   13,   12,   12,   11, 
  83.       11,   10,   10,    9,    9,    8,    8,    7, 
  84.        7,    7,    6,    6,    6,    6,    5,    5, 
  85.        5,    5,    4,    4,    4,    4,    3,    3, 
  86.        3,    3,    3,    3,    2,    2,    2,    2, 
  87.        2,    2,    2,    2,    1,    1,    1,    1, 
  88.        1,    1,    1,    1,    1,    1,    1,    1, 
  89.        0,    0,    0,    0,    0,    0,    0,    0, 
  90.        0,    0,    0,    0,    0,    0,    0,    0, 
  91.        0,    0,    0,    0,    0,    0,    0,    0
  92. };
  93.