nabaztag_hack_kit 0.1.0.beta3 → 0.1.0.beta8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +7 -2
- data/.gitmodules +3 -0
- data/.travis.yml +2 -2
- data/CHANGELOG.md +17 -2
- data/LICENSE +21 -0
- data/README.md +115 -44
- data/Rakefile +2 -6
- data/bytecode/{Commands.md → _docs/commands.md} +0 -0
- data/bytecode/{Docs.md → _docs/grammar.md} +0 -0
- data/bytecode/_docs/grammar.pdf +0 -0
- data/bytecode/{src → _original}/README.md +0 -0
- data/bytecode/{src → _original}/lib/arp.mtl +0 -0
- data/bytecode/{src → _original}/lib/cfg.mtl +0 -0
- data/bytecode/{src → _original}/lib/choreos.mtl +0 -0
- data/bytecode/{src → _original}/lib/dhcp.mtl +0 -0
- data/bytecode/{src → _original}/lib/dns.mtl +0 -0
- data/bytecode/{src → _original}/lib/http.mtl +0 -0
- data/bytecode/{src → _original}/lib/tcp.mtl +0 -0
- data/bytecode/{src → _original}/lib/udp.mtl +0 -0
- data/bytecode/{src → _original}/lib/util.mtl +0 -0
- data/bytecode/{src → _original}/lib/var.mtl +0 -0
- data/bytecode/{src → _original}/lib/wav.mtl +0 -0
- data/bytecode/{src → _original}/lib/wifi.mtl +0 -0
- data/bytecode/{src → _original}/nominal-ping.mtl +0 -0
- data/bytecode/main.mtl +11 -11
- data/bytecode/test/test.mtl +8 -8
- data/examples/basic/Gemfile +1 -3
- data/examples/basic/config.ru +14 -4
- data/examples/record/Gemfile +0 -5
- data/examples/record/{config.ru.example → config.ru} +2 -2
- data/examples/record/server.rb +0 -2
- data/ext/Makefile +10 -0
- data/ext/bin/mtl_comp +29 -0
- data/{bytecode → ext}/bin/mtl_merge +0 -0
- data/ext/bin/mtl_simu +29 -0
- data/{bytecode/src/mtl → ext}/extconf.rb +0 -0
- data/ext/mtl_linux/.gitignore +7 -0
- data/ext/mtl_linux/LICENSE +21 -0
- data/ext/mtl_linux/Makefile +116 -0
- data/ext/mtl_linux/MetalC.project +196 -0
- data/ext/mtl_linux/conf.bin +0 -0
- data/{bytecode/src/mtl → ext/mtl_linux}/conf.bin.sans_password +0 -0
- data/{bytecode/src/mtl → ext/mtl_linux}/config.txt +0 -0
- data/ext/mtl_linux/inc/log.h +21 -0
- data/{bytecode/src/mtl → ext/mtl_linux/inc}/properties.h +0 -0
- data/{bytecode/src/mtl/linux_simuaudio.h → ext/mtl_linux/inc/simu/linux/simuaudio.h} +0 -0
- data/{bytecode/src/mtl/linux_simunet.h → ext/mtl_linux/inc/simu/linux/simunet.h} +0 -0
- data/{bytecode/src/mtl → ext/mtl_linux/inc/simu/win}/simuaudio.h +18 -18
- data/{bytecode/src/mtl → ext/mtl_linux/inc/simu/win}/simunet.h +0 -0
- data/ext/mtl_linux/inc/vcomp/compiler.h +200 -0
- data/{bytecode/src/mtl → ext/mtl_linux/inc}/vcomp/file.h +11 -11
- data/{bytecode/src/mtl → ext/mtl_linux/inc}/vcomp/filesystem.h +0 -0
- data/ext/mtl_linux/inc/vcomp/interpreter.h +121 -0
- data/{bytecode/src/mtl → ext/mtl_linux/inc}/vcomp/memory.h +120 -92
- data/{bytecode/src/mtl → ext/mtl_linux/inc}/vcomp/param.h +0 -0
- data/{bytecode/src/mtl → ext/mtl_linux/inc}/vcomp/parser.h +27 -27
- data/ext/mtl_linux/inc/vcomp/prodbuffer.h +42 -0
- data/{bytecode/src/mtl → ext/mtl_linux/inc}/vcomp/resource.h +1 -1
- data/{bytecode/src/mtl → ext/mtl_linux/inc}/vcomp/terminal.h +8 -8
- data/{bytecode/src/mtl → ext/mtl_linux/inc}/vcomp/util.h +7 -7
- data/{bytecode/src/mtl → ext/mtl_linux/inc/vm}/vaudio.h +0 -0
- data/{bytecode/src/mtl → ext/mtl_linux/inc/vm}/vbc.h +1 -1
- data/ext/mtl_linux/inc/vm/vbc_str.h +167 -0
- data/{bytecode/src/mtl → ext/mtl_linux/inc/vm}/vinterp.h +0 -0
- data/{bytecode/src/mtl → ext/mtl_linux/inc/vm}/vloader.h +0 -0
- data/{bytecode/src/mtl → ext/mtl_linux/inc/vm}/vlog.h +0 -0
- data/{bytecode/src/mtl → ext/mtl_linux/inc/vm}/vmem.h +0 -0
- data/{bytecode/src/mtl → ext/mtl_linux/inc/vm}/vnet.h +0 -0
- data/ext/mtl_linux/nominal.mtl +3959 -0
- data/ext/mtl_linux/src/comp/main.cpp +123 -0
- data/ext/mtl_linux/src/simu/dumpbc.c +2566 -0
- data/ext/mtl_linux/src/simu/linux/main.cpp +288 -0
- data/ext/mtl_linux/src/simu/linux/simu.c +309 -0
- data/ext/mtl_linux/src/simu/linux/simuaudio.c +44 -0
- data/ext/mtl_linux/src/simu/linux/simunet.c +707 -0
- data/ext/mtl_linux/src/simu/log.c +340 -0
- data/ext/mtl_linux/src/simu/properties.c +368 -0
- data/{bytecode/src/mtl → ext/mtl_linux/src/simu/win}/mp3/GTKANAL.H +0 -0
- data/{bytecode/src/mtl → ext/mtl_linux/src/simu/win}/mp3/LAYER3.C +0 -0
- data/{bytecode/src/mtl → ext/mtl_linux/src/simu/win}/mp3/TABINIT.C +0 -0
- data/ext/mtl_linux/src/simu/win/mp3/common.c +302 -0
- data/ext/mtl_linux/src/simu/win/mp3/dct64_i386.c +316 -0
- data/ext/mtl_linux/src/simu/win/mp3/decode_i386.c +160 -0
- data/ext/mtl_linux/src/simu/win/mp3/huffman.h +332 -0
- data/ext/mtl_linux/src/simu/win/mp3/interface.c +276 -0
- data/{bytecode/src/mtl → ext/mtl_linux/src/simu/win}/mp3/mpg123.h +34 -30
- data/ext/mtl_linux/src/simu/win/mp3/mpglib.h +47 -0
- data/ext/mtl_linux/src/simu/win/simu.c +819 -0
- data/ext/mtl_linux/src/simu/win/simuaudio.c +787 -0
- data/ext/mtl_linux/src/simu/win/simunet.c +489 -0
- data/ext/mtl_linux/src/vcomp/bootstrap.cpp +95 -0
- data/ext/mtl_linux/src/vcomp/compiler.cpp +587 -0
- data/ext/mtl_linux/src/vcomp/compiler_file.cpp +1253 -0
- data/ext/mtl_linux/src/vcomp/compiler_prog.cpp +437 -0
- data/ext/mtl_linux/src/vcomp/compiler_term.cpp +1500 -0
- data/ext/mtl_linux/src/vcomp/compiler_type.cpp +1238 -0
- data/ext/mtl_linux/src/vcomp/compiler_var.cpp +502 -0
- data/ext/mtl_linux/src/vcomp/file.cpp +100 -0
- data/ext/mtl_linux/src/vcomp/interpreter.cpp +93 -0
- data/ext/mtl_linux/src/vcomp/memory.cpp +313 -0
- data/ext/mtl_linux/src/vcomp/parser.cpp +584 -0
- data/ext/mtl_linux/src/vcomp/parser_xml.cpp +137 -0
- data/{bytecode/src/mtl → ext/mtl_linux/src}/vcomp/prodbuffer.cpp +57 -36
- data/ext/mtl_linux/src/vcomp/stdlib_core.cpp +130 -0
- data/ext/mtl_linux/src/vcomp/terminal.cpp +80 -0
- data/{bytecode/src/mtl → ext/mtl_linux/src}/vcomp/util.cpp +18 -11
- data/ext/mtl_linux/src/vm/vaudio.c +830 -0
- data/ext/mtl_linux/src/vm/vinterp.c +1780 -0
- data/ext/mtl_linux/src/vm/vloader.c +139 -0
- data/ext/mtl_linux/src/vm/vlog.c +782 -0
- data/ext/mtl_linux/src/vm/vmem.c +461 -0
- data/ext/mtl_linux/src/vm/vnet.c +298 -0
- data/{bytecode/src/mtl → ext/mtl_linux}/utils/correct_const.sh +0 -0
- data/lib/nabaztag_hack_kit/server.rb +4 -7
- data/lib/nabaztag_hack_kit/version.rb +1 -1
- data/lib/nabaztag_hack_kit.rb +2 -2
- data/nabaztag_hack_kit.gemspec +10 -11
- data/spec/integration/server_spec.rb +3 -3
- data/spec/spec_helper.rb +2 -0
- data/spec/unit/message_spec.rb +12 -18
- data/spec/unit/server_spec.rb +13 -10
- metadata +145 -137
- data/bytecode/bin/mtl_comp +0 -50
- data/bytecode/bin/mtl_simu +0 -49
- data/bytecode/src/mtl/Makefile +0 -42
- data/bytecode/src/mtl/README.md +0 -13
- data/bytecode/src/mtl/bc.cpp +0 -1891
- data/bytecode/src/mtl/dumpbc.c +0 -2566
- data/bytecode/src/mtl/linux_simu.c +0 -271
- data/bytecode/src/mtl/linux_simuaudio.c +0 -16
- data/bytecode/src/mtl/linux_simunet.c +0 -620
- data/bytecode/src/mtl/log.c +0 -297
- data/bytecode/src/mtl/log.h +0 -20
- data/bytecode/src/mtl/main_compiler.cpp +0 -104
- data/bytecode/src/mtl/main_simu.cpp +0 -221
- data/bytecode/src/mtl/mp3/common.c +0 -265
- data/bytecode/src/mtl/mp3/dct64_i386.c +0 -316
- data/bytecode/src/mtl/mp3/decode_i386.c +0 -155
- data/bytecode/src/mtl/mp3/huffman.h +0 -332
- data/bytecode/src/mtl/mp3/interface.c +0 -258
- data/bytecode/src/mtl/mp3/mpglib.h +0 -44
- data/bytecode/src/mtl/properties.c +0 -293
- data/bytecode/src/mtl/simu.c +0 -750
- data/bytecode/src/mtl/simuaudio.c +0 -662
- data/bytecode/src/mtl/simunet.c +0 -400
- data/bytecode/src/mtl/vaudio.c +0 -677
- data/bytecode/src/mtl/vbc_str.h +0 -166
- data/bytecode/src/mtl/vcomp/Makefile +0 -29
- data/bytecode/src/mtl/vcomp/bootstrap.cpp +0 -89
- data/bytecode/src/mtl/vcomp/compiler.cpp +0 -470
- data/bytecode/src/mtl/vcomp/compiler.h +0 -200
- data/bytecode/src/mtl/vcomp/compiler_file.cpp +0 -929
- data/bytecode/src/mtl/vcomp/compiler_prog.cpp +0 -250
- data/bytecode/src/mtl/vcomp/compiler_term.cpp +0 -1053
- data/bytecode/src/mtl/vcomp/compiler_type.cpp +0 -872
- data/bytecode/src/mtl/vcomp/compiler_var.cpp +0 -289
- data/bytecode/src/mtl/vcomp/file.cpp +0 -79
- data/bytecode/src/mtl/vcomp/interpreter.cpp +0 -85
- data/bytecode/src/mtl/vcomp/interpreter.h +0 -121
- data/bytecode/src/mtl/vcomp/memory.cpp +0 -241
- data/bytecode/src/mtl/vcomp/parser.cpp +0 -427
- data/bytecode/src/mtl/vcomp/parser_xml.cpp +0 -124
- data/bytecode/src/mtl/vcomp/prodbuffer.h +0 -42
- data/bytecode/src/mtl/vcomp/stdlib_core.cpp +0 -122
- data/bytecode/src/mtl/vcomp/terminal.cpp +0 -73
- data/bytecode/src/mtl/vinterp.c +0 -1349
- data/bytecode/src/mtl/vloader.c +0 -127
- data/bytecode/src/mtl/vlog.c +0 -589
- data/bytecode/src/mtl/vmem.c +0 -424
- data/bytecode/src/mtl/vnet.c +0 -255
- data/examples/basic/Procfile +0 -2
- data/examples/basic/server.rb +0 -14
@@ -0,0 +1,302 @@
|
|
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
|
+
{
|
16
|
+
{ {0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,},
|
17
|
+
{0,32,48,56, 64, 80, 96,112,128,160,192,224,256,320,384,},
|
18
|
+
{0,32,40,48, 56, 64, 80, 96,112,128,160,192,224,256,320,}
|
19
|
+
},
|
20
|
+
|
21
|
+
{ {0,32,48,56,64,80,96,112,128,144,160,176,192,224,256,},
|
22
|
+
{0,8,16,24,32,40,48,56,64,80,96,112,128,144,160,},
|
23
|
+
{0,8,16,24,32,40,48,56,64,80,96,112,128,144,160,}
|
24
|
+
}
|
25
|
+
};
|
26
|
+
|
27
|
+
long freqs[9] = { 44100, 48000, 32000,
|
28
|
+
22050, 24000, 16000,
|
29
|
+
11025, 12000, 8000
|
30
|
+
};
|
31
|
+
|
32
|
+
int bitindex;
|
33
|
+
unsigned char *wordpointer;
|
34
|
+
unsigned char *pcm_sample;
|
35
|
+
int pcm_point = 0;
|
36
|
+
|
37
|
+
|
38
|
+
#if 0
|
39
|
+
static void get_II_stuff(struct frame *fr)
|
40
|
+
{
|
41
|
+
static int translate[3][2][16] =
|
42
|
+
{
|
43
|
+
{ { 0,2,2,2,2,2,2,0,0,0,1,1,1,1,1,0 },
|
44
|
+
{ 0,2,2,0,0,0,1,1,1,1,1,1,1,1,1,0 }
|
45
|
+
},
|
46
|
+
{ { 0,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0 },
|
47
|
+
{ 0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0 }
|
48
|
+
},
|
49
|
+
{ { 0,3,3,3,3,3,3,0,0,0,1,1,1,1,1,0 },
|
50
|
+
{ 0,3,3,0,0,0,1,1,1,1,1,1,1,1,1,0 }
|
51
|
+
}
|
52
|
+
};
|
53
|
+
|
54
|
+
int table,sblim;
|
55
|
+
static struct al_table *tables[5] =
|
56
|
+
{ alloc_0, alloc_1, alloc_2, alloc_3, alloc_4 };
|
57
|
+
static int sblims[5] = { 27, 30, 8, 12, 30 };
|
58
|
+
|
59
|
+
if(fr->lsf)
|
60
|
+
{
|
61
|
+
table = 4;
|
62
|
+
}
|
63
|
+
else
|
64
|
+
{
|
65
|
+
table = translate[fr->sampling_frequency][2-fr->stereo][fr->bitrate_index];
|
66
|
+
}
|
67
|
+
sblim = sblims[table];
|
68
|
+
|
69
|
+
fr->alloc = tables[table];
|
70
|
+
fr->II_sblimit = sblim;
|
71
|
+
}
|
72
|
+
#endif
|
73
|
+
|
74
|
+
#define HDRCMPMASK 0xfffffd00
|
75
|
+
|
76
|
+
#if 0
|
77
|
+
int head_check(unsigned long head)
|
78
|
+
{
|
79
|
+
if( (head & 0xffe00000) != 0xffe00000)
|
80
|
+
{
|
81
|
+
return FALSE;
|
82
|
+
}
|
83
|
+
if(!((head>>17)&3))
|
84
|
+
{
|
85
|
+
return FALSE;
|
86
|
+
}
|
87
|
+
if( ((head>>12)&0xf) == 0xf)
|
88
|
+
{
|
89
|
+
return FALSE;
|
90
|
+
}
|
91
|
+
if( ((head>>10)&0x3) == 0x3 )
|
92
|
+
{
|
93
|
+
return FALSE;
|
94
|
+
}
|
95
|
+
return TRUE;
|
96
|
+
}
|
97
|
+
#endif
|
98
|
+
|
99
|
+
/*
|
100
|
+
* the code a header and write the information
|
101
|
+
* into the frame structure
|
102
|
+
*/
|
103
|
+
int decode_header(struct frame *fr,unsigned long newhead)
|
104
|
+
{
|
105
|
+
|
106
|
+
|
107
|
+
if( newhead & (1<<20) )
|
108
|
+
{
|
109
|
+
fr->lsf = (newhead & (1<<19)) ? 0x0 : 0x1;
|
110
|
+
fr->mpeg25 = 0;
|
111
|
+
}
|
112
|
+
else
|
113
|
+
{
|
114
|
+
fr->lsf = 1;
|
115
|
+
fr->mpeg25 = 1;
|
116
|
+
}
|
117
|
+
|
118
|
+
fr->lay = 4-((newhead>>17)&3);
|
119
|
+
if( ((newhead>>10)&0x3) == 0x3)
|
120
|
+
{
|
121
|
+
fprintf(stderr,"Stream error\n");
|
122
|
+
// MMechostr(1,"MP3 Stream error\n");
|
123
|
+
return -1;
|
124
|
+
}
|
125
|
+
if(fr->mpeg25)
|
126
|
+
{
|
127
|
+
fr->sampling_frequency = 6 + ((newhead>>10)&0x3);
|
128
|
+
}
|
129
|
+
else
|
130
|
+
{
|
131
|
+
fr->sampling_frequency = ((newhead>>10)&0x3) + (fr->lsf*3);
|
132
|
+
}
|
133
|
+
fr->error_protection = ((newhead>>16)&0x1)^0x1;
|
134
|
+
|
135
|
+
if(fr->mpeg25) /* allow Bitrate change for 2.5 ... */
|
136
|
+
{
|
137
|
+
fr->bitrate_index = ((newhead>>12)&0xf);
|
138
|
+
}
|
139
|
+
|
140
|
+
fr->bitrate_index = ((newhead>>12)&0xf);
|
141
|
+
fr->padding = ((newhead>>9)&0x1);
|
142
|
+
fr->extension = ((newhead>>8)&0x1);
|
143
|
+
fr->mode = ((newhead>>6)&0x3);
|
144
|
+
fr->mode_ext = ((newhead>>4)&0x3);
|
145
|
+
fr->copyright = ((newhead>>3)&0x1);
|
146
|
+
fr->original = ((newhead>>2)&0x1);
|
147
|
+
fr->emphasis = newhead & 0x3;
|
148
|
+
|
149
|
+
fr->stereo = (fr->mode == MPG_MD_MONO) ? 1 : 2;
|
150
|
+
|
151
|
+
if(!fr->bitrate_index)
|
152
|
+
{
|
153
|
+
fprintf(stderr,"Free format not supported.\n");
|
154
|
+
return (0);
|
155
|
+
}
|
156
|
+
//fprintf(stderr,"newhead = %x\n",newhead);
|
157
|
+
//fprintf(stderr,"layer = %d\n",fr->lay);
|
158
|
+
switch(fr->lay)
|
159
|
+
{
|
160
|
+
case 1:
|
161
|
+
#if 0
|
162
|
+
fr->do_layer = do_layer1;
|
163
|
+
fr->jsbound = (fr->mode == MPG_MD_JOINT_STEREO) ?
|
164
|
+
(fr->mode_ext<<2)+4 : 32;
|
165
|
+
fr->framesize = (long) tabsel_123[fr->lsf][0][fr->bitrate_index] * 12000;
|
166
|
+
fr->framesize /= freqs[fr->sampling_frequency];
|
167
|
+
fr->framesize = ((fr->framesize+fr->padding)<<2)-4;
|
168
|
+
#else
|
169
|
+
fprintf(stderr,"Not supported!\n");
|
170
|
+
#endif
|
171
|
+
break;
|
172
|
+
case 2:
|
173
|
+
#if 0
|
174
|
+
fr->do_layer = do_layer2;
|
175
|
+
get_II_stuff(fr);
|
176
|
+
fr->jsbound = (fr->mode == MPG_MD_JOINT_STEREO) ?
|
177
|
+
(fr->mode_ext<<2)+4 : fr->II_sblimit;
|
178
|
+
fr->framesize = (long) tabsel_123[fr->lsf][1][fr->bitrate_index] * 144000;
|
179
|
+
fr->framesize /= freqs[fr->sampling_frequency];
|
180
|
+
fr->framesize += fr->padding - 4;
|
181
|
+
#else
|
182
|
+
fprintf(stderr,"Not supported!\n");
|
183
|
+
#endif
|
184
|
+
break;
|
185
|
+
case 3:
|
186
|
+
#if 0
|
187
|
+
fr->do_layer = do_layer3;
|
188
|
+
if(fr->lsf)
|
189
|
+
{
|
190
|
+
ssize = (fr->stereo == 1) ? 9 : 17;
|
191
|
+
}
|
192
|
+
else
|
193
|
+
{
|
194
|
+
ssize = (fr->stereo == 1) ? 17 : 32;
|
195
|
+
}
|
196
|
+
#endif
|
197
|
+
|
198
|
+
#if 0
|
199
|
+
if(fr->error_protection)
|
200
|
+
{
|
201
|
+
ssize += 2;
|
202
|
+
}
|
203
|
+
#endif
|
204
|
+
fr->framesize = (long) tabsel_123[fr->lsf][2][fr->bitrate_index] * 144000;
|
205
|
+
fr->framesize /= freqs[fr->sampling_frequency]<<(fr->lsf);
|
206
|
+
fr->framesize = fr->framesize + fr->padding - 4;
|
207
|
+
break;
|
208
|
+
default:
|
209
|
+
fprintf(stderr,"Sorry, unknown layer type.\n");
|
210
|
+
return (0);
|
211
|
+
}
|
212
|
+
|
213
|
+
/* print_header(fr); */
|
214
|
+
|
215
|
+
return 1;
|
216
|
+
}
|
217
|
+
|
218
|
+
|
219
|
+
#if 1
|
220
|
+
void print_header(struct frame *fr)
|
221
|
+
{
|
222
|
+
static char *modes[4] = { "Stereo", "Joint-Stereo", "Dual-Channel", "Single-Channel" };
|
223
|
+
static char *layers[4] = { "Unknown", "I", "II", "III" };
|
224
|
+
|
225
|
+
fprintf(stderr,"MPEG %s, Layer: %s, Freq: %ld, mode: %s, modext: %d, BPF : %d\n",
|
226
|
+
fr->mpeg25 ? "2.5" : (fr->lsf ? "2.0" : "1.0"),
|
227
|
+
layers[fr->lay],freqs[fr->sampling_frequency],
|
228
|
+
modes[fr->mode],fr->mode_ext,fr->framesize+4);
|
229
|
+
fprintf(stderr,"Channels: %d, copyright: %s, original: %s, CRC: %s, emphasis: %d.\n",
|
230
|
+
fr->stereo,fr->copyright?"Yes":"No",
|
231
|
+
fr->original?"Yes":"No",fr->error_protection?"Yes":"No",
|
232
|
+
fr->emphasis);
|
233
|
+
fprintf(stderr,"Bitrate: %d Kbits/s, Extension value: %d\n",
|
234
|
+
tabsel_123[fr->lsf][fr->lay-1][fr->bitrate_index],fr->extension);
|
235
|
+
}
|
236
|
+
|
237
|
+
void print_header_compact(struct frame *fr)
|
238
|
+
{
|
239
|
+
static char *modes[4] = { "stereo", "joint-stereo", "dual-channel", "mono" };
|
240
|
+
static char *layers[4] = { "Unknown", "I", "II", "III" };
|
241
|
+
|
242
|
+
fprintf(stderr,"MPEG %s layer %s, %d kbit/s, %ld Hz %s\n",
|
243
|
+
fr->mpeg25 ? "2.5" : (fr->lsf ? "2.0" : "1.0"),
|
244
|
+
layers[fr->lay],
|
245
|
+
tabsel_123[fr->lsf][fr->lay-1][fr->bitrate_index],
|
246
|
+
freqs[fr->sampling_frequency], modes[fr->mode]);
|
247
|
+
}
|
248
|
+
|
249
|
+
#endif
|
250
|
+
|
251
|
+
unsigned int getbits(int number_of_bits)
|
252
|
+
{
|
253
|
+
unsigned long rval;
|
254
|
+
|
255
|
+
if(!number_of_bits)
|
256
|
+
{
|
257
|
+
return 0;
|
258
|
+
}
|
259
|
+
|
260
|
+
{
|
261
|
+
rval = wordpointer[0];
|
262
|
+
rval <<= 8;
|
263
|
+
rval |= wordpointer[1];
|
264
|
+
rval <<= 8;
|
265
|
+
rval |= wordpointer[2];
|
266
|
+
rval <<= bitindex;
|
267
|
+
rval &= 0xffffff;
|
268
|
+
|
269
|
+
bitindex += number_of_bits;
|
270
|
+
|
271
|
+
rval >>= (24-number_of_bits);
|
272
|
+
|
273
|
+
wordpointer += (bitindex>>3);
|
274
|
+
bitindex &= 7;
|
275
|
+
}
|
276
|
+
return rval;
|
277
|
+
}
|
278
|
+
|
279
|
+
unsigned int getbits_fast(int number_of_bits)
|
280
|
+
{
|
281
|
+
unsigned long rval;
|
282
|
+
|
283
|
+
{
|
284
|
+
rval = wordpointer[0];
|
285
|
+
rval <<= 8;
|
286
|
+
rval |= wordpointer[1];
|
287
|
+
rval <<= bitindex;
|
288
|
+
rval &= 0xffff;
|
289
|
+
bitindex += number_of_bits;
|
290
|
+
|
291
|
+
rval >>= (16-number_of_bits);
|
292
|
+
|
293
|
+
wordpointer += (bitindex>>3);
|
294
|
+
bitindex &= 7;
|
295
|
+
}
|
296
|
+
return rval;
|
297
|
+
}
|
298
|
+
|
299
|
+
|
300
|
+
|
301
|
+
|
302
|
+
//#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
|