nabaztag_hack_kit 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. data/.gitignore +7 -0
  2. data/.travis.yml +3 -0
  3. data/CHANGELOG.md +11 -0
  4. data/Gemfile +4 -0
  5. data/README.md +119 -0
  6. data/Rakefile +21 -0
  7. data/bin/mtl_comp +41 -0
  8. data/bin/mtl_merge +22 -0
  9. data/bin/mtl_simu +40 -0
  10. data/bytecode/lib/buffer.mtl +109 -0
  11. data/bytecode/lib/button.mtl +27 -0
  12. data/bytecode/lib/data_helper.mtl +88 -0
  13. data/bytecode/lib/ear.mtl +90 -0
  14. data/bytecode/lib/led.mtl +33 -0
  15. data/bytecode/lib/rfid.mtl +50 -0
  16. data/bytecode/main.mtl +129 -0
  17. data/config.ru +6 -0
  18. data/ext/bytecode/Commands.md +172 -0
  19. data/ext/bytecode/Docs.md +488 -0
  20. data/ext/bytecode/README.md +5 -0
  21. data/ext/bytecode/lib/arp.mtl +159 -0
  22. data/ext/bytecode/lib/cfg.mtl +74 -0
  23. data/ext/bytecode/lib/choreos.mtl +1487 -0
  24. data/ext/bytecode/lib/dhcp.mtl +152 -0
  25. data/ext/bytecode/lib/dns.mtl +89 -0
  26. data/ext/bytecode/lib/http.mtl +84 -0
  27. data/ext/bytecode/lib/tcp.mtl +340 -0
  28. data/ext/bytecode/lib/udp.mtl +49 -0
  29. data/ext/bytecode/lib/util.mtl +74 -0
  30. data/ext/bytecode/lib/var.mtl +15 -0
  31. data/ext/bytecode/lib/wifi.mtl +243 -0
  32. data/ext/bytecode/nominal-ping.mtl +5828 -0
  33. data/ext/mtl/Makefile +42 -0
  34. data/ext/mtl/README.md +13 -0
  35. data/ext/mtl/bc.cpp +1891 -0
  36. data/ext/mtl/conf.bin.sans_password +0 -0
  37. data/ext/mtl/config.txt +5 -0
  38. data/ext/mtl/dumpbc.c +2566 -0
  39. data/ext/mtl/extconf.rb +1 -0
  40. data/ext/mtl/linux_simu.c +271 -0
  41. data/ext/mtl/linux_simuaudio.c +16 -0
  42. data/ext/mtl/linux_simuaudio.h +18 -0
  43. data/ext/mtl/linux_simunet.c +620 -0
  44. data/ext/mtl/linux_simunet.h +7 -0
  45. data/ext/mtl/log.c +297 -0
  46. data/ext/mtl/log.h +20 -0
  47. data/ext/mtl/main_compiler.cpp +104 -0
  48. data/ext/mtl/main_simu.cpp +221 -0
  49. data/ext/mtl/mp3/GTKANAL.H +97 -0
  50. data/ext/mtl/mp3/LAYER3.C +2090 -0
  51. data/ext/mtl/mp3/TABINIT.C +82 -0
  52. data/ext/mtl/mp3/common.c +265 -0
  53. data/ext/mtl/mp3/dct64_i386.c +316 -0
  54. data/ext/mtl/mp3/decode_i386.c +155 -0
  55. data/ext/mtl/mp3/huffman.h +332 -0
  56. data/ext/mtl/mp3/interface.c +258 -0
  57. data/ext/mtl/mp3/mpg123.h +182 -0
  58. data/ext/mtl/mp3/mpglib.h +44 -0
  59. data/ext/mtl/properties.c +293 -0
  60. data/ext/mtl/properties.h +10 -0
  61. data/ext/mtl/simu.c +750 -0
  62. data/ext/mtl/simuaudio.c +662 -0
  63. data/ext/mtl/simuaudio.h +74 -0
  64. data/ext/mtl/simunet.c +400 -0
  65. data/ext/mtl/simunet.h +30 -0
  66. data/ext/mtl/utils/correct_const.sh +34 -0
  67. data/ext/mtl/vaudio.c +677 -0
  68. data/ext/mtl/vaudio.h +46 -0
  69. data/ext/mtl/vbc.h +160 -0
  70. data/ext/mtl/vbc_str.h +166 -0
  71. data/ext/mtl/vcomp/Makefile +29 -0
  72. data/ext/mtl/vcomp/bootstrap.cpp +89 -0
  73. data/ext/mtl/vcomp/compiler.cpp +470 -0
  74. data/ext/mtl/vcomp/compiler.h +200 -0
  75. data/ext/mtl/vcomp/compiler_file.cpp +929 -0
  76. data/ext/mtl/vcomp/compiler_prog.cpp +250 -0
  77. data/ext/mtl/vcomp/compiler_term.cpp +1053 -0
  78. data/ext/mtl/vcomp/compiler_type.cpp +872 -0
  79. data/ext/mtl/vcomp/compiler_var.cpp +289 -0
  80. data/ext/mtl/vcomp/file.cpp +79 -0
  81. data/ext/mtl/vcomp/file.h +39 -0
  82. data/ext/mtl/vcomp/filesystem.h +14 -0
  83. data/ext/mtl/vcomp/interpreter.cpp +85 -0
  84. data/ext/mtl/vcomp/interpreter.h +121 -0
  85. data/ext/mtl/vcomp/memory.cpp +241 -0
  86. data/ext/mtl/vcomp/memory.h +326 -0
  87. data/ext/mtl/vcomp/param.h +95 -0
  88. data/ext/mtl/vcomp/parser.cpp +427 -0
  89. data/ext/mtl/vcomp/parser.h +97 -0
  90. data/ext/mtl/vcomp/parser_xml.cpp +124 -0
  91. data/ext/mtl/vcomp/prodbuffer.cpp +125 -0
  92. data/ext/mtl/vcomp/prodbuffer.h +42 -0
  93. data/ext/mtl/vcomp/resource.h +17 -0
  94. data/ext/mtl/vcomp/stdlib_core.cpp +122 -0
  95. data/ext/mtl/vcomp/terminal.cpp +73 -0
  96. data/ext/mtl/vcomp/terminal.h +30 -0
  97. data/ext/mtl/vcomp/util.cpp +48 -0
  98. data/ext/mtl/vcomp/util.h +31 -0
  99. data/ext/mtl/vinterp.c +1349 -0
  100. data/ext/mtl/vinterp.h +11 -0
  101. data/ext/mtl/vloader.c +127 -0
  102. data/ext/mtl/vloader.h +31 -0
  103. data/ext/mtl/vlog.c +589 -0
  104. data/ext/mtl/vlog.h +69 -0
  105. data/ext/mtl/vmem.c +424 -0
  106. data/ext/mtl/vmem.h +107 -0
  107. data/ext/mtl/vnet.c +255 -0
  108. data/ext/mtl/vnet.h +19 -0
  109. data/lib/nabaztag_hack_kit/message/api.rb +39 -0
  110. data/lib/nabaztag_hack_kit/message/helper.rb +39 -0
  111. data/lib/nabaztag_hack_kit/message.rb +36 -0
  112. data/lib/nabaztag_hack_kit/server.rb +50 -0
  113. data/lib/nabaztag_hack_kit/version.rb +3 -0
  114. data/lib/nabaztag_hack_kit.rb +4 -0
  115. data/nabaztag_hack_kit.gemspec +29 -0
  116. data/public/bytecode.bin +0 -0
  117. data/test/bytecode/helper.mtl +60 -0
  118. data/test/bytecode/native.mtl +28 -0
  119. data/test/bytecode/test.mtl +221 -0
  120. data/test/spec_helper.rb +5 -0
  121. data/test/unit/message_spec.rb +56 -0
  122. metadata +209 -0
@@ -0,0 +1,82 @@
1
+ //#ifdef HAVEGTK
2
+ #include <stdlib.h>
3
+
4
+ #include "mpg123.h"
5
+
6
+ real decwin[512+32];
7
+ static real cos64[16],cos32[8],cos16[4],cos8[2],cos4[1];
8
+ real *pnts[] = { cos64,cos32,cos16,cos8,cos4 };
9
+
10
+ #if 0
11
+ static unsigned char *conv16to8_buf = NULL;
12
+ unsigned char *conv16to8;
13
+ #endif
14
+
15
+ static long intwinbase[] = {
16
+ 0, -1, -1, -1, -1, -1, -1, -2, -2, -2,
17
+ -2, -3, -3, -4, -4, -5, -5, -6, -7, -7,
18
+ -8, -9, -10, -11, -13, -14, -16, -17, -19, -21,
19
+ -24, -26, -29, -31, -35, -38, -41, -45, -49, -53,
20
+ -58, -63, -68, -73, -79, -85, -91, -97, -104, -111,
21
+ -117, -125, -132, -139, -147, -154, -161, -169, -176, -183,
22
+ -190, -196, -202, -208, -213, -218, -222, -225, -227, -228,
23
+ -228, -227, -224, -221, -215, -208, -200, -189, -177, -163,
24
+ -146, -127, -106, -83, -57, -29, 2, 36, 72, 111,
25
+ 153, 197, 244, 294, 347, 401, 459, 519, 581, 645,
26
+ 711, 779, 848, 919, 991, 1064, 1137, 1210, 1283, 1356,
27
+ 1428, 1498, 1567, 1634, 1698, 1759, 1817, 1870, 1919, 1962,
28
+ 2001, 2032, 2057, 2075, 2085, 2087, 2080, 2063, 2037, 2000,
29
+ 1952, 1893, 1822, 1739, 1644, 1535, 1414, 1280, 1131, 970,
30
+ 794, 605, 402, 185, -45, -288, -545, -814, -1095, -1388,
31
+ -1692, -2006, -2330, -2663, -3004, -3351, -3705, -4063, -4425, -4788,
32
+ -5153, -5517, -5879, -6237, -6589, -6935, -7271, -7597, -7910, -8209,
33
+ -8491, -8755, -8998, -9219, -9416, -9585, -9727, -9838, -9916, -9959,
34
+ -9966, -9935, -9863, -9750, -9592, -9389, -9139, -8840, -8492, -8092,
35
+ -7640, -7134, -6574, -5959, -5288, -4561, -3776, -2935, -2037, -1082,
36
+ -70, 998, 2122, 3300, 4533, 5818, 7154, 8540, 9975, 11455,
37
+ 12980, 14548, 16155, 17799, 19478, 21189, 22929, 24694, 26482, 28289,
38
+ 30112, 31947, 33791, 35640, 37489, 39336, 41176, 43006, 44821, 46617,
39
+ 48390, 50137, 51853, 53534, 55178, 56778, 58333, 59838, 61289, 62684,
40
+ 64019, 65290, 66494, 67629, 68692, 69679, 70590, 71420, 72169, 72835,
41
+ 73415, 73908, 74313, 74630, 74856, 74992, 75038 };
42
+
43
+ void make_decode_tables(long scaleval)
44
+ {
45
+ int i,j,k,kr,divv;
46
+ real *table,*costab;
47
+
48
+
49
+ for(i=0;i<5;i++)
50
+ {
51
+ kr=0x10>>i; divv=0x40>>i;
52
+ costab = pnts[i];
53
+ for(k=0;k<kr;k++)
54
+ costab[k] = 1.0 / (2.0 * cos(M_PI * ((double) k * 2.0 + 1.0) / (double) divv));
55
+ }
56
+
57
+ table = decwin;
58
+ scaleval = -scaleval;
59
+ for(i=0,j=0;i<256;i++,j++,table+=32)
60
+ {
61
+ if(table < decwin+512+16)
62
+ table[16] = table[0] = (double) intwinbase[j] / 65536.0 * (double) scaleval;
63
+ if(i % 32 == 31)
64
+ table -= 1023;
65
+ if(i % 64 == 63)
66
+ scaleval = - scaleval;
67
+ }
68
+
69
+ for( /* i=256 */ ;i<512;i++,j--,table+=32)
70
+ {
71
+ if(table < decwin+512+16)
72
+ table[16] = table[0] = (double) intwinbase[j] / 65536.0 * (double) scaleval;
73
+ if(i % 32 == 31)
74
+ table -= 1023;
75
+ if(i % 64 == 63)
76
+ scaleval = - scaleval;
77
+ }
78
+ }
79
+
80
+
81
+ //#endif
82
+
@@ -0,0 +1,265 @@
1
+ //#ifdef HAVEGTK
2
+ #include <ctype.h>
3
+ #include <stdlib.h>
4
+ #include <signal.h>
5
+
6
+ #include <sys/types.h>
7
+ #include <sys/stat.h>
8
+ #include <fcntl.h>
9
+
10
+ #include "mpg123.h"
11
+
12
+ struct parameter param = { 1 , 1 , 0 , 0 };
13
+
14
+ int tabsel_123[2][3][16] = {
15
+ { {0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,},
16
+ {0,32,48,56, 64, 80, 96,112,128,160,192,224,256,320,384,},
17
+ {0,32,40,48, 56, 64, 80, 96,112,128,160,192,224,256,320,} },
18
+
19
+ { {0,32,48,56,64,80,96,112,128,144,160,176,192,224,256,},
20
+ {0,8,16,24,32,40,48,56,64,80,96,112,128,144,160,},
21
+ {0,8,16,24,32,40,48,56,64,80,96,112,128,144,160,} }
22
+ };
23
+
24
+ long freqs[9] = { 44100, 48000, 32000,
25
+ 22050, 24000, 16000 ,
26
+ 11025 , 12000 , 8000 };
27
+
28
+ int bitindex;
29
+ unsigned char *wordpointer;
30
+ unsigned char *pcm_sample;
31
+ int pcm_point = 0;
32
+
33
+
34
+ #if 0
35
+ static void get_II_stuff(struct frame *fr)
36
+ {
37
+ static int translate[3][2][16] =
38
+ { { { 0,2,2,2,2,2,2,0,0,0,1,1,1,1,1,0 } ,
39
+ { 0,2,2,0,0,0,1,1,1,1,1,1,1,1,1,0 } } ,
40
+ { { 0,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0 } ,
41
+ { 0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0 } } ,
42
+ { { 0,3,3,3,3,3,3,0,0,0,1,1,1,1,1,0 } ,
43
+ { 0,3,3,0,0,0,1,1,1,1,1,1,1,1,1,0 } } };
44
+
45
+ int table,sblim;
46
+ static struct al_table *tables[5] =
47
+ { alloc_0, alloc_1, alloc_2, alloc_3 , alloc_4 };
48
+ static int sblims[5] = { 27 , 30 , 8, 12 , 30 };
49
+
50
+ if(fr->lsf)
51
+ table = 4;
52
+ else
53
+ table = translate[fr->sampling_frequency][2-fr->stereo][fr->bitrate_index];
54
+ sblim = sblims[table];
55
+
56
+ fr->alloc = tables[table];
57
+ fr->II_sblimit = sblim;
58
+ }
59
+ #endif
60
+
61
+ #define HDRCMPMASK 0xfffffd00
62
+
63
+ #if 0
64
+ int head_check(unsigned long head)
65
+ {
66
+ if( (head & 0xffe00000) != 0xffe00000)
67
+ return FALSE;
68
+ if(!((head>>17)&3))
69
+ return FALSE;
70
+ if( ((head>>12)&0xf) == 0xf)
71
+ return FALSE;
72
+ if( ((head>>10)&0x3) == 0x3 )
73
+ return FALSE;
74
+ return TRUE;
75
+ }
76
+ #endif
77
+
78
+ /*
79
+ * the code a header and write the information
80
+ * into the frame structure
81
+ */
82
+ int decode_header(struct frame *fr,unsigned long newhead)
83
+ {
84
+
85
+
86
+ if( newhead & (1<<20) ) {
87
+ fr->lsf = (newhead & (1<<19)) ? 0x0 : 0x1;
88
+ fr->mpeg25 = 0;
89
+ }
90
+ else {
91
+ fr->lsf = 1;
92
+ fr->mpeg25 = 1;
93
+ }
94
+
95
+ fr->lay = 4-((newhead>>17)&3);
96
+ if( ((newhead>>10)&0x3) == 0x3) {
97
+ fprintf(stderr,"Stream error\n");
98
+ // MMechostr(1,"MP3 Stream error\n");
99
+ return -1;
100
+ }
101
+ if(fr->mpeg25) {
102
+ fr->sampling_frequency = 6 + ((newhead>>10)&0x3);
103
+ }
104
+ else
105
+ fr->sampling_frequency = ((newhead>>10)&0x3) + (fr->lsf*3);
106
+ fr->error_protection = ((newhead>>16)&0x1)^0x1;
107
+
108
+ if(fr->mpeg25) /* allow Bitrate change for 2.5 ... */
109
+ fr->bitrate_index = ((newhead>>12)&0xf);
110
+
111
+ fr->bitrate_index = ((newhead>>12)&0xf);
112
+ fr->padding = ((newhead>>9)&0x1);
113
+ fr->extension = ((newhead>>8)&0x1);
114
+ fr->mode = ((newhead>>6)&0x3);
115
+ fr->mode_ext = ((newhead>>4)&0x3);
116
+ fr->copyright = ((newhead>>3)&0x1);
117
+ fr->original = ((newhead>>2)&0x1);
118
+ fr->emphasis = newhead & 0x3;
119
+
120
+ fr->stereo = (fr->mode == MPG_MD_MONO) ? 1 : 2;
121
+
122
+ if(!fr->bitrate_index)
123
+ {
124
+ fprintf(stderr,"Free format not supported.\n");
125
+ return (0);
126
+ }
127
+ //fprintf(stderr,"newhead = %x\n",newhead);
128
+ //fprintf(stderr,"layer = %d\n",fr->lay);
129
+ switch(fr->lay)
130
+ {
131
+ case 1:
132
+ #if 0
133
+ fr->do_layer = do_layer1;
134
+ fr->jsbound = (fr->mode == MPG_MD_JOINT_STEREO) ?
135
+ (fr->mode_ext<<2)+4 : 32;
136
+ fr->framesize = (long) tabsel_123[fr->lsf][0][fr->bitrate_index] * 12000;
137
+ fr->framesize /= freqs[fr->sampling_frequency];
138
+ fr->framesize = ((fr->framesize+fr->padding)<<2)-4;
139
+ #else
140
+ fprintf(stderr,"Not supported!\n");
141
+ #endif
142
+ break;
143
+ case 2:
144
+ #if 0
145
+ fr->do_layer = do_layer2;
146
+ get_II_stuff(fr);
147
+ fr->jsbound = (fr->mode == MPG_MD_JOINT_STEREO) ?
148
+ (fr->mode_ext<<2)+4 : fr->II_sblimit;
149
+ fr->framesize = (long) tabsel_123[fr->lsf][1][fr->bitrate_index] * 144000;
150
+ fr->framesize /= freqs[fr->sampling_frequency];
151
+ fr->framesize += fr->padding - 4;
152
+ #else
153
+ fprintf(stderr,"Not supported!\n");
154
+ #endif
155
+ break;
156
+ case 3:
157
+ #if 0
158
+ fr->do_layer = do_layer3;
159
+ if(fr->lsf)
160
+ ssize = (fr->stereo == 1) ? 9 : 17;
161
+ else
162
+ ssize = (fr->stereo == 1) ? 17 : 32;
163
+ #endif
164
+
165
+ #if 0
166
+ if(fr->error_protection)
167
+ ssize += 2;
168
+ #endif
169
+ fr->framesize = (long) tabsel_123[fr->lsf][2][fr->bitrate_index] * 144000;
170
+ fr->framesize /= freqs[fr->sampling_frequency]<<(fr->lsf);
171
+ fr->framesize = fr->framesize + fr->padding - 4;
172
+ break;
173
+ default:
174
+ fprintf(stderr,"Sorry, unknown layer type.\n");
175
+ return (0);
176
+ }
177
+
178
+ /* print_header(fr); */
179
+
180
+ return 1;
181
+ }
182
+
183
+
184
+ #if 1
185
+ void print_header(struct frame *fr)
186
+ {
187
+ static char *modes[4] = { "Stereo", "Joint-Stereo", "Dual-Channel", "Single-Channel" };
188
+ static char *layers[4] = { "Unknown" , "I", "II", "III" };
189
+
190
+ fprintf(stderr,"MPEG %s, Layer: %s, Freq: %ld, mode: %s, modext: %d, BPF : %d\n",
191
+ fr->mpeg25 ? "2.5" : (fr->lsf ? "2.0" : "1.0"),
192
+ layers[fr->lay],freqs[fr->sampling_frequency],
193
+ modes[fr->mode],fr->mode_ext,fr->framesize+4);
194
+ fprintf(stderr,"Channels: %d, copyright: %s, original: %s, CRC: %s, emphasis: %d.\n",
195
+ fr->stereo,fr->copyright?"Yes":"No",
196
+ fr->original?"Yes":"No",fr->error_protection?"Yes":"No",
197
+ fr->emphasis);
198
+ fprintf(stderr,"Bitrate: %d Kbits/s, Extension value: %d\n",
199
+ tabsel_123[fr->lsf][fr->lay-1][fr->bitrate_index],fr->extension);
200
+ }
201
+
202
+ void print_header_compact(struct frame *fr)
203
+ {
204
+ static char *modes[4] = { "stereo", "joint-stereo", "dual-channel", "mono" };
205
+ static char *layers[4] = { "Unknown" , "I", "II", "III" };
206
+
207
+ fprintf(stderr,"MPEG %s layer %s, %d kbit/s, %ld Hz %s\n",
208
+ fr->mpeg25 ? "2.5" : (fr->lsf ? "2.0" : "1.0"),
209
+ layers[fr->lay],
210
+ tabsel_123[fr->lsf][fr->lay-1][fr->bitrate_index],
211
+ freqs[fr->sampling_frequency], modes[fr->mode]);
212
+ }
213
+
214
+ #endif
215
+
216
+ unsigned int getbits(int number_of_bits)
217
+ {
218
+ unsigned long rval;
219
+
220
+ if(!number_of_bits)
221
+ return 0;
222
+
223
+ {
224
+ rval = wordpointer[0];
225
+ rval <<= 8;
226
+ rval |= wordpointer[1];
227
+ rval <<= 8;
228
+ rval |= wordpointer[2];
229
+ rval <<= bitindex;
230
+ rval &= 0xffffff;
231
+
232
+ bitindex += number_of_bits;
233
+
234
+ rval >>= (24-number_of_bits);
235
+
236
+ wordpointer += (bitindex>>3);
237
+ bitindex &= 7;
238
+ }
239
+ return rval;
240
+ }
241
+
242
+ unsigned int getbits_fast(int number_of_bits)
243
+ {
244
+ unsigned long rval;
245
+
246
+ {
247
+ rval = wordpointer[0];
248
+ rval <<= 8;
249
+ rval |= wordpointer[1];
250
+ rval <<= bitindex;
251
+ rval &= 0xffff;
252
+ bitindex += number_of_bits;
253
+
254
+ rval >>= (16-number_of_bits);
255
+
256
+ wordpointer += (bitindex>>3);
257
+ bitindex &= 7;
258
+ }
259
+ return rval;
260
+ }
261
+
262
+
263
+
264
+
265
+ //#endif
@@ -0,0 +1,316 @@
1
+ //#ifdef HAVEGTK
2
+ /*
3
+ * Discrete Cosine Tansform (DCT) for subband synthesis
4
+ * optimized for machines with no auto-increment.
5
+ * The performance is highly compiler dependend. Maybe
6
+ * the dct64.c version for 'normal' processor may be faster
7
+ * even for Intel processors.
8
+ */
9
+
10
+ #include "mpg123.h"
11
+
12
+ static void dct64_1(real *out0,real *out1,real *b1,real *b2,real *samples)
13
+ {
14
+
15
+ {
16
+ register real *costab = pnts[0];
17
+
18
+ b1[0x00] = samples[0x00] + samples[0x1F];
19
+ b1[0x1F] = (samples[0x00] - samples[0x1F]) * costab[0x0];
20
+
21
+ b1[0x01] = samples[0x01] + samples[0x1E];
22
+ b1[0x1E] = (samples[0x01] - samples[0x1E]) * costab[0x1];
23
+
24
+ b1[0x02] = samples[0x02] + samples[0x1D];
25
+ b1[0x1D] = (samples[0x02] - samples[0x1D]) * costab[0x2];
26
+
27
+ b1[0x03] = samples[0x03] + samples[0x1C];
28
+ b1[0x1C] = (samples[0x03] - samples[0x1C]) * costab[0x3];
29
+
30
+ b1[0x04] = samples[0x04] + samples[0x1B];
31
+ b1[0x1B] = (samples[0x04] - samples[0x1B]) * costab[0x4];
32
+
33
+ b1[0x05] = samples[0x05] + samples[0x1A];
34
+ b1[0x1A] = (samples[0x05] - samples[0x1A]) * costab[0x5];
35
+
36
+ b1[0x06] = samples[0x06] + samples[0x19];
37
+ b1[0x19] = (samples[0x06] - samples[0x19]) * costab[0x6];
38
+
39
+ b1[0x07] = samples[0x07] + samples[0x18];
40
+ b1[0x18] = (samples[0x07] - samples[0x18]) * costab[0x7];
41
+
42
+ b1[0x08] = samples[0x08] + samples[0x17];
43
+ b1[0x17] = (samples[0x08] - samples[0x17]) * costab[0x8];
44
+
45
+ b1[0x09] = samples[0x09] + samples[0x16];
46
+ b1[0x16] = (samples[0x09] - samples[0x16]) * costab[0x9];
47
+
48
+ b1[0x0A] = samples[0x0A] + samples[0x15];
49
+ b1[0x15] = (samples[0x0A] - samples[0x15]) * costab[0xA];
50
+
51
+ b1[0x0B] = samples[0x0B] + samples[0x14];
52
+ b1[0x14] = (samples[0x0B] - samples[0x14]) * costab[0xB];
53
+
54
+ b1[0x0C] = samples[0x0C] + samples[0x13];
55
+ b1[0x13] = (samples[0x0C] - samples[0x13]) * costab[0xC];
56
+
57
+ b1[0x0D] = samples[0x0D] + samples[0x12];
58
+ b1[0x12] = (samples[0x0D] - samples[0x12]) * costab[0xD];
59
+
60
+ b1[0x0E] = samples[0x0E] + samples[0x11];
61
+ b1[0x11] = (samples[0x0E] - samples[0x11]) * costab[0xE];
62
+
63
+ b1[0x0F] = samples[0x0F] + samples[0x10];
64
+ b1[0x10] = (samples[0x0F] - samples[0x10]) * costab[0xF];
65
+ }
66
+
67
+
68
+ {
69
+ register real *costab = pnts[1];
70
+
71
+ b2[0x00] = b1[0x00] + b1[0x0F];
72
+ b2[0x0F] = (b1[0x00] - b1[0x0F]) * costab[0];
73
+ b2[0x01] = b1[0x01] + b1[0x0E];
74
+ b2[0x0E] = (b1[0x01] - b1[0x0E]) * costab[1];
75
+ b2[0x02] = b1[0x02] + b1[0x0D];
76
+ b2[0x0D] = (b1[0x02] - b1[0x0D]) * costab[2];
77
+ b2[0x03] = b1[0x03] + b1[0x0C];
78
+ b2[0x0C] = (b1[0x03] - b1[0x0C]) * costab[3];
79
+ b2[0x04] = b1[0x04] + b1[0x0B];
80
+ b2[0x0B] = (b1[0x04] - b1[0x0B]) * costab[4];
81
+ b2[0x05] = b1[0x05] + b1[0x0A];
82
+ b2[0x0A] = (b1[0x05] - b1[0x0A]) * costab[5];
83
+ b2[0x06] = b1[0x06] + b1[0x09];
84
+ b2[0x09] = (b1[0x06] - b1[0x09]) * costab[6];
85
+ b2[0x07] = b1[0x07] + b1[0x08];
86
+ b2[0x08] = (b1[0x07] - b1[0x08]) * costab[7];
87
+
88
+ b2[0x10] = b1[0x10] + b1[0x1F];
89
+ b2[0x1F] = (b1[0x1F] - b1[0x10]) * costab[0];
90
+ b2[0x11] = b1[0x11] + b1[0x1E];
91
+ b2[0x1E] = (b1[0x1E] - b1[0x11]) * costab[1];
92
+ b2[0x12] = b1[0x12] + b1[0x1D];
93
+ b2[0x1D] = (b1[0x1D] - b1[0x12]) * costab[2];
94
+ b2[0x13] = b1[0x13] + b1[0x1C];
95
+ b2[0x1C] = (b1[0x1C] - b1[0x13]) * costab[3];
96
+ b2[0x14] = b1[0x14] + b1[0x1B];
97
+ b2[0x1B] = (b1[0x1B] - b1[0x14]) * costab[4];
98
+ b2[0x15] = b1[0x15] + b1[0x1A];
99
+ b2[0x1A] = (b1[0x1A] - b1[0x15]) * costab[5];
100
+ b2[0x16] = b1[0x16] + b1[0x19];
101
+ b2[0x19] = (b1[0x19] - b1[0x16]) * costab[6];
102
+ b2[0x17] = b1[0x17] + b1[0x18];
103
+ b2[0x18] = (b1[0x18] - b1[0x17]) * costab[7];
104
+ }
105
+
106
+ {
107
+ register real *costab = pnts[2];
108
+
109
+ b1[0x00] = b2[0x00] + b2[0x07];
110
+ b1[0x07] = (b2[0x00] - b2[0x07]) * costab[0];
111
+ b1[0x01] = b2[0x01] + b2[0x06];
112
+ b1[0x06] = (b2[0x01] - b2[0x06]) * costab[1];
113
+ b1[0x02] = b2[0x02] + b2[0x05];
114
+ b1[0x05] = (b2[0x02] - b2[0x05]) * costab[2];
115
+ b1[0x03] = b2[0x03] + b2[0x04];
116
+ b1[0x04] = (b2[0x03] - b2[0x04]) * costab[3];
117
+
118
+ b1[0x08] = b2[0x08] + b2[0x0F];
119
+ b1[0x0F] = (b2[0x0F] - b2[0x08]) * costab[0];
120
+ b1[0x09] = b2[0x09] + b2[0x0E];
121
+ b1[0x0E] = (b2[0x0E] - b2[0x09]) * costab[1];
122
+ b1[0x0A] = b2[0x0A] + b2[0x0D];
123
+ b1[0x0D] = (b2[0x0D] - b2[0x0A]) * costab[2];
124
+ b1[0x0B] = b2[0x0B] + b2[0x0C];
125
+ b1[0x0C] = (b2[0x0C] - b2[0x0B]) * costab[3];
126
+
127
+ b1[0x10] = b2[0x10] + b2[0x17];
128
+ b1[0x17] = (b2[0x10] - b2[0x17]) * costab[0];
129
+ b1[0x11] = b2[0x11] + b2[0x16];
130
+ b1[0x16] = (b2[0x11] - b2[0x16]) * costab[1];
131
+ b1[0x12] = b2[0x12] + b2[0x15];
132
+ b1[0x15] = (b2[0x12] - b2[0x15]) * costab[2];
133
+ b1[0x13] = b2[0x13] + b2[0x14];
134
+ b1[0x14] = (b2[0x13] - b2[0x14]) * costab[3];
135
+
136
+ b1[0x18] = b2[0x18] + b2[0x1F];
137
+ b1[0x1F] = (b2[0x1F] - b2[0x18]) * costab[0];
138
+ b1[0x19] = b2[0x19] + b2[0x1E];
139
+ b1[0x1E] = (b2[0x1E] - b2[0x19]) * costab[1];
140
+ b1[0x1A] = b2[0x1A] + b2[0x1D];
141
+ b1[0x1D] = (b2[0x1D] - b2[0x1A]) * costab[2];
142
+ b1[0x1B] = b2[0x1B] + b2[0x1C];
143
+ b1[0x1C] = (b2[0x1C] - b2[0x1B]) * costab[3];
144
+ }
145
+
146
+ {
147
+ register real const cos0 = pnts[3][0];
148
+ register real const cos1 = pnts[3][1];
149
+
150
+ b2[0x00] = b1[0x00] + b1[0x03];
151
+ b2[0x03] = (b1[0x00] - b1[0x03]) * cos0;
152
+ b2[0x01] = b1[0x01] + b1[0x02];
153
+ b2[0x02] = (b1[0x01] - b1[0x02]) * cos1;
154
+
155
+ b2[0x04] = b1[0x04] + b1[0x07];
156
+ b2[0x07] = (b1[0x07] - b1[0x04]) * cos0;
157
+ b2[0x05] = b1[0x05] + b1[0x06];
158
+ b2[0x06] = (b1[0x06] - b1[0x05]) * cos1;
159
+
160
+ b2[0x08] = b1[0x08] + b1[0x0B];
161
+ b2[0x0B] = (b1[0x08] - b1[0x0B]) * cos0;
162
+ b2[0x09] = b1[0x09] + b1[0x0A];
163
+ b2[0x0A] = (b1[0x09] - b1[0x0A]) * cos1;
164
+
165
+ b2[0x0C] = b1[0x0C] + b1[0x0F];
166
+ b2[0x0F] = (b1[0x0F] - b1[0x0C]) * cos0;
167
+ b2[0x0D] = b1[0x0D] + b1[0x0E];
168
+ b2[0x0E] = (b1[0x0E] - b1[0x0D]) * cos1;
169
+
170
+ b2[0x10] = b1[0x10] + b1[0x13];
171
+ b2[0x13] = (b1[0x10] - b1[0x13]) * cos0;
172
+ b2[0x11] = b1[0x11] + b1[0x12];
173
+ b2[0x12] = (b1[0x11] - b1[0x12]) * cos1;
174
+
175
+ b2[0x14] = b1[0x14] + b1[0x17];
176
+ b2[0x17] = (b1[0x17] - b1[0x14]) * cos0;
177
+ b2[0x15] = b1[0x15] + b1[0x16];
178
+ b2[0x16] = (b1[0x16] - b1[0x15]) * cos1;
179
+
180
+ b2[0x18] = b1[0x18] + b1[0x1B];
181
+ b2[0x1B] = (b1[0x18] - b1[0x1B]) * cos0;
182
+ b2[0x19] = b1[0x19] + b1[0x1A];
183
+ b2[0x1A] = (b1[0x19] - b1[0x1A]) * cos1;
184
+
185
+ b2[0x1C] = b1[0x1C] + b1[0x1F];
186
+ b2[0x1F] = (b1[0x1F] - b1[0x1C]) * cos0;
187
+ b2[0x1D] = b1[0x1D] + b1[0x1E];
188
+ b2[0x1E] = (b1[0x1E] - b1[0x1D]) * cos1;
189
+ }
190
+
191
+ {
192
+ register real const cos0 = pnts[4][0];
193
+
194
+ b1[0x00] = b2[0x00] + b2[0x01];
195
+ b1[0x01] = (b2[0x00] - b2[0x01]) * cos0;
196
+ b1[0x02] = b2[0x02] + b2[0x03];
197
+ b1[0x03] = (b2[0x03] - b2[0x02]) * cos0;
198
+ b1[0x02] += b1[0x03];
199
+
200
+ b1[0x04] = b2[0x04] + b2[0x05];
201
+ b1[0x05] = (b2[0x04] - b2[0x05]) * cos0;
202
+ b1[0x06] = b2[0x06] + b2[0x07];
203
+ b1[0x07] = (b2[0x07] - b2[0x06]) * cos0;
204
+ b1[0x06] += b1[0x07];
205
+ b1[0x04] += b1[0x06];
206
+ b1[0x06] += b1[0x05];
207
+ b1[0x05] += b1[0x07];
208
+
209
+ b1[0x08] = b2[0x08] + b2[0x09];
210
+ b1[0x09] = (b2[0x08] - b2[0x09]) * cos0;
211
+ b1[0x0A] = b2[0x0A] + b2[0x0B];
212
+ b1[0x0B] = (b2[0x0B] - b2[0x0A]) * cos0;
213
+ b1[0x0A] += b1[0x0B];
214
+
215
+ b1[0x0C] = b2[0x0C] + b2[0x0D];
216
+ b1[0x0D] = (b2[0x0C] - b2[0x0D]) * cos0;
217
+ b1[0x0E] = b2[0x0E] + b2[0x0F];
218
+ b1[0x0F] = (b2[0x0F] - b2[0x0E]) * cos0;
219
+ b1[0x0E] += b1[0x0F];
220
+ b1[0x0C] += b1[0x0E];
221
+ b1[0x0E] += b1[0x0D];
222
+ b1[0x0D] += b1[0x0F];
223
+
224
+ b1[0x10] = b2[0x10] + b2[0x11];
225
+ b1[0x11] = (b2[0x10] - b2[0x11]) * cos0;
226
+ b1[0x12] = b2[0x12] + b2[0x13];
227
+ b1[0x13] = (b2[0x13] - b2[0x12]) * cos0;
228
+ b1[0x12] += b1[0x13];
229
+
230
+ b1[0x14] = b2[0x14] + b2[0x15];
231
+ b1[0x15] = (b2[0x14] - b2[0x15]) * cos0;
232
+ b1[0x16] = b2[0x16] + b2[0x17];
233
+ b1[0x17] = (b2[0x17] - b2[0x16]) * cos0;
234
+ b1[0x16] += b1[0x17];
235
+ b1[0x14] += b1[0x16];
236
+ b1[0x16] += b1[0x15];
237
+ b1[0x15] += b1[0x17];
238
+
239
+ b1[0x18] = b2[0x18] + b2[0x19];
240
+ b1[0x19] = (b2[0x18] - b2[0x19]) * cos0;
241
+ b1[0x1A] = b2[0x1A] + b2[0x1B];
242
+ b1[0x1B] = (b2[0x1B] - b2[0x1A]) * cos0;
243
+ b1[0x1A] += b1[0x1B];
244
+
245
+ b1[0x1C] = b2[0x1C] + b2[0x1D];
246
+ b1[0x1D] = (b2[0x1C] - b2[0x1D]) * cos0;
247
+ b1[0x1E] = b2[0x1E] + b2[0x1F];
248
+ b1[0x1F] = (b2[0x1F] - b2[0x1E]) * cos0;
249
+ b1[0x1E] += b1[0x1F];
250
+ b1[0x1C] += b1[0x1E];
251
+ b1[0x1E] += b1[0x1D];
252
+ b1[0x1D] += b1[0x1F];
253
+ }
254
+
255
+ out0[0x10*16] = b1[0x00];
256
+ out0[0x10*12] = b1[0x04];
257
+ out0[0x10* 8] = b1[0x02];
258
+ out0[0x10* 4] = b1[0x06];
259
+ out0[0x10* 0] = b1[0x01];
260
+ out1[0x10* 0] = b1[0x01];
261
+ out1[0x10* 4] = b1[0x05];
262
+ out1[0x10* 8] = b1[0x03];
263
+ out1[0x10*12] = b1[0x07];
264
+
265
+ b1[0x08] += b1[0x0C];
266
+ out0[0x10*14] = b1[0x08];
267
+ b1[0x0C] += b1[0x0a];
268
+ out0[0x10*10] = b1[0x0C];
269
+ b1[0x0A] += b1[0x0E];
270
+ out0[0x10* 6] = b1[0x0A];
271
+ b1[0x0E] += b1[0x09];
272
+ out0[0x10* 2] = b1[0x0E];
273
+ b1[0x09] += b1[0x0D];
274
+ out1[0x10* 2] = b1[0x09];
275
+ b1[0x0D] += b1[0x0B];
276
+ out1[0x10* 6] = b1[0x0D];
277
+ b1[0x0B] += b1[0x0F];
278
+ out1[0x10*10] = b1[0x0B];
279
+ out1[0x10*14] = b1[0x0F];
280
+
281
+ b1[0x18] += b1[0x1C];
282
+ out0[0x10*15] = b1[0x10] + b1[0x18];
283
+ out0[0x10*13] = b1[0x18] + b1[0x14];
284
+ b1[0x1C] += b1[0x1a];
285
+ out0[0x10*11] = b1[0x14] + b1[0x1C];
286
+ out0[0x10* 9] = b1[0x1C] + b1[0x12];
287
+ b1[0x1A] += b1[0x1E];
288
+ out0[0x10* 7] = b1[0x12] + b1[0x1A];
289
+ out0[0x10* 5] = b1[0x1A] + b1[0x16];
290
+ b1[0x1E] += b1[0x19];
291
+ out0[0x10* 3] = b1[0x16] + b1[0x1E];
292
+ out0[0x10* 1] = b1[0x1E] + b1[0x11];
293
+ b1[0x19] += b1[0x1D];
294
+ out1[0x10* 1] = b1[0x11] + b1[0x19];
295
+ out1[0x10* 3] = b1[0x19] + b1[0x15];
296
+ b1[0x1D] += b1[0x1B];
297
+ out1[0x10* 5] = b1[0x15] + b1[0x1D];
298
+ out1[0x10* 7] = b1[0x1D] + b1[0x13];
299
+ b1[0x1B] += b1[0x1F];
300
+ out1[0x10* 9] = b1[0x13] + b1[0x1B];
301
+ out1[0x10*11] = b1[0x1B] + b1[0x17];
302
+ out1[0x10*13] = b1[0x17] + b1[0x1F];
303
+ out1[0x10*15] = b1[0x1F];
304
+ }
305
+
306
+ /*
307
+ * the call via dct64 is a trick to force GCC to use
308
+ * (new) registers for the b1,b2 pointer to the bufs[xx] field
309
+ */
310
+ void dct64(real *a,real *b,real *c)
311
+ {
312
+ real bufs[0x40];
313
+ dct64_1(a,b,bufs,bufs+0x20,c);
314
+ }
315
+
316
+ //#endif