You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

121 lines
5.7KB

  1. /* Audio Library for Teensy 3.X
  2. * Copyright (c) 2014, Paul Stoffregen, paul@pjrc.com
  3. *
  4. * Development of this audio library was funded by PJRC.COM, LLC by sales of
  5. * Teensy and Audio Adaptor boards. Please support PJRC's efforts to develop
  6. * open source software by purchasing Teensy or other PJRC products.
  7. *
  8. * Permission is hereby granted, free of charge, to any person obtaining a copy
  9. * of this software and associated documentation files (the "Software"), to deal
  10. * in the Software without restriction, including without limitation the rights
  11. * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  12. * copies of the Software, and to permit persons to whom the Software is
  13. * furnished to do so, subject to the following conditions:
  14. *
  15. * The above copyright notice, development funding notice, and this permission
  16. * notice shall be included in all copies or substantial portions of the Software.
  17. *
  18. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  19. * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  20. * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  21. * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  22. * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  23. * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  24. * THE SOFTWARE.
  25. */
  26. #include <stdint.h>
  27. const int16_t ulaw_decode_table[256] = {
  28. 4, 12, 20, 28, 36, 44, 52, 60, 68, 76,
  29. 84, 92, 100, 108, 116, 124, 136, 152, 168, 184,
  30. 200, 216, 232, 248, 264, 280, 296, 312, 328, 344,
  31. 360, 376, 400, 432, 464, 496, 528, 560, 592, 624,
  32. 656, 688, 720, 752, 784, 816, 848, 880, 928, 992,
  33. 1056, 1120, 1184, 1248, 1312, 1376, 1440, 1504, 1568, 1632,
  34. 1696, 1760, 1824, 1888, 1984, 2112, 2240, 2368, 2496, 2624,
  35. 2752, 2880, 3008, 3136, 3264, 3392, 3520, 3648, 3776, 3904,
  36. 4096, 4352, 4608, 4864, 5120, 5376, 5632, 5888, 6144, 6400,
  37. 6656, 6912, 7168, 7424, 7680, 7936, 8320, 8832, 9344, 9856,
  38. 10368, 10880, 11392, 11904, 12416, 12928, 13440, 13952, 14464, 14976,
  39. 15488, 16000, 16768, 17792, 18816, 19840, 20864, 21888, 22912, 23936,
  40. 24960, 25984, 27008, 28032, 29056, 30080, 31104, 32128, -4, -12,
  41. -20, -28, -36, -44, -52, -60, -68, -76, -84, -92,
  42. -100, -108, -116, -124, -136, -152, -168, -184, -200, -216,
  43. -232, -248, -264, -280, -296, -312, -328, -344, -360, -376,
  44. -400, -432, -464, -496, -528, -560, -592, -624, -656, -688,
  45. -720, -752, -784, -816, -848, -880, -928, -992, -1056, -1120,
  46. -1184, -1248, -1312, -1376, -1440, -1504, -1568, -1632, -1696, -1760,
  47. -1824, -1888, -1984, -2112, -2240, -2368, -2496, -2624, -2752, -2880,
  48. -3008, -3136, -3264, -3392, -3520, -3648, -3776, -3904, -4096, -4352,
  49. -4608, -4864, -5120, -5376, -5632, -5888, -6144, -6400, -6656, -6912,
  50. -7168, -7424, -7680, -7936, -8320, -8832, -9344, -9856,-10368,-10880,
  51. -11392,-11904,-12416,-12928,-13440,-13952,-14464,-14976,-15488,-16000,
  52. -16768,-17792,-18816,-19840,-20864,-21888,-22912,-23936,-24960,-25984,
  53. -27008,-28032,-29056,-30080,-31104,-32128
  54. };
  55. /*
  56. #! /usr/bin/perl
  57. print "const int16_t ulaw_decode_table[256] = {\n";
  58. for ($i=0; $i < 256; $i++) {
  59. $r = ($i >> 4) & 7;
  60. $n = ($i & 0xF) << ($r + 3);
  61. $n |= 1 << ($r + 7);
  62. $n |= 1 << ($r + 2);
  63. $n -= 128;
  64. $n *= -1 if $i > 127;
  65. printf "%6d", $n + 0;
  66. print "," if ($i < 255);
  67. print "\n" if ($i % 10) == 9;
  68. }
  69. print "\n};\n";
  70. */
  71. /*
  72. const int16_t ulaw_decode_table[256] = {
  73. 0, 8, 16, 24, 32, 40, 48, 56, 64, 72,
  74. 80, 88, 96, 104, 112, 120, 128, 144, 160, 176,
  75. 192, 208, 224, 240, 256, 272, 288, 304, 320, 336,
  76. 352, 368, 384, 416, 448, 480, 512, 544, 576, 608,
  77. 640, 672, 704, 736, 768, 800, 832, 864, 896, 960,
  78. 1024, 1088, 1152, 1216, 1280, 1344, 1408, 1472, 1536, 1600,
  79. 1664, 1728, 1792, 1856, 1920, 2048, 2176, 2304, 2432, 2560,
  80. 2688, 2816, 2944, 3072, 3200, 3328, 3456, 3584, 3712, 3840,
  81. 3968, 4224, 4480, 4736, 4992, 5248, 5504, 5760, 6016, 6272,
  82. 6528, 6784, 7040, 7296, 7552, 7808, 8064, 8576, 9088, 9600,
  83. 10112, 10624, 11136, 11648, 12160, 12672, 13184, 13696, 14208, 14720,
  84. 15232, 15744, 16256, 17280, 18304, 19328, 20352, 21376, 22400, 23424,
  85. 24448, 25472, 26496, 27520, 28544, 29568, 30592, 31616, 0, -8,
  86. -16, -24, -32, -40, -48, -56, -64, -72, -80, -88,
  87. -96, -104, -112, -120, -128, -144, -160, -176, -192, -208,
  88. -224, -240, -256, -272, -288, -304, -320, -336, -352, -368,
  89. -384, -416, -448, -480, -512, -544, -576, -608, -640, -672,
  90. -704, -736, -768, -800, -832, -864, -896, -960, -1024, -1088,
  91. -1152, -1216, -1280, -1344, -1408, -1472, -1536, -1600, -1664, -1728,
  92. -1792, -1856, -1920, -2048, -2176, -2304, -2432, -2560, -2688, -2816,
  93. -2944, -3072, -3200, -3328, -3456, -3584, -3712, -3840, -3968, -4224,
  94. -4480, -4736, -4992, -5248, -5504, -5760, -6016, -6272, -6528, -6784,
  95. -7040, -7296, -7552, -7808, -8064, -8576, -9088, -9600,-10112,-10624,
  96. -11136,-11648,-12160,-12672,-13184,-13696,-14208,-14720,-15232,-15744,
  97. -16256,-17280,-18304,-19328,-20352,-21376,-22400,-23424,-24448,-25472,
  98. -26496,-27520,-28544,-29568,-30592,-31616
  99. };
  100. */
  101. /*
  102. #! /usr/bin/perl
  103. print "const int16_t ulaw_decode_table[256] = {\n";
  104. for ($i=0; $i < 256; $i++) {
  105. $r = ($i >> 4) & 7;
  106. $n = ($i & 0xF) << ($r + 3);
  107. $n |= 1 << ($r + 7);
  108. $n -= 128;
  109. $n *= -1 if $i > 127;
  110. printf "%6d", $n + 0;
  111. print "," if ($i < 255);
  112. print "\n" if ($i % 10) == 9;
  113. }
  114. print "\n};\n";
  115. */