Mercurial > audlegacy
comparison Plugins/Input/mpg123/mpg123.h @ 970:0f294f2b0a9b trunk
[svn] - integer-mode decoding accuracy improvements
author | nenolod |
---|---|
date | Wed, 26 Apr 2006 10:54:58 -0700 |
parents | 12f57026da8f |
children | 4de9f286bdce |
comparison
equal
deleted
inserted
replaced
969:971bd2b03ff5 | 970:0f294f2b0a9b |
---|---|
10 # include "config.h" | 10 # include "config.h" |
11 #endif | 11 #endif |
12 | 12 |
13 #include <glib.h> | 13 #include <glib.h> |
14 #include <tag_c.h> | 14 #include <tag_c.h> |
15 | |
16 #ifdef INTEGER_COMPILE | |
17 | |
18 typedef int mpgdec_real; | |
19 | |
20 #else | |
21 | |
22 typedef float mpgdec_real; | |
23 | |
24 #endif | |
15 | 25 |
16 enum { | 26 enum { |
17 SYNTH_AUTO, | 27 SYNTH_AUTO, |
18 SYNTH_FPU, | 28 SYNTH_FPU, |
19 SYNTH_3DNOW, | 29 SYNTH_3DNOW, |
30 | 40 |
31 #include "audacious/plugin.h" | 41 #include "audacious/plugin.h" |
32 #include "dxhead.h" | 42 #include "dxhead.h" |
33 #include "xmms-id3.h" | 43 #include "xmms-id3.h" |
34 | 44 |
35 #define real float | 45 #define mpgdec_real float |
36 | 46 |
37 #define SBLIMIT 32 | 47 #define SBLIMIT 32 |
38 #define SCALE_BLOCK 12 | 48 #define SCALE_BLOCK 12 |
39 #define SSLIMIT 18 | 49 #define SSLIMIT 18 |
40 | 50 |
106 short d; | 116 short d; |
107 }; | 117 }; |
108 | 118 |
109 struct frame { | 119 struct frame { |
110 struct al_table *alloc; | 120 struct al_table *alloc; |
111 int (*synth) (real *, int, unsigned char *, int *); | 121 int (*synth) (mpgdec_real *, int, unsigned char *, int *); |
112 int (*synth_mono) (real *, unsigned char *, int *); | 122 int (*synth_mono) (mpgdec_real *, unsigned char *, int *); |
113 int stereo; | 123 int stereo; |
114 int jsbound; | 124 int jsbound; |
115 int single; | 125 int single; |
116 int II_sblimit; | 126 int II_sblimit; |
117 int down_sample_sblimit; | 127 int down_sample_sblimit; |
173 int framesize; | 183 int framesize; |
174 int fsizeold; | 184 int fsizeold; |
175 struct frame fr; | 185 struct frame fr; |
176 /* int (*do_layer)(struct mpstr *,struct frame *fr,int,struct audio_info_struct *); */ | 186 /* int (*do_layer)(struct mpstr *,struct frame *fr,int,struct audio_info_struct *); */ |
177 unsigned char bsspace[2][MAXFRAMESIZE+512]; /* MAXFRAMESIZE */ | 187 unsigned char bsspace[2][MAXFRAMESIZE+512]; /* MAXFRAMESIZE */ |
178 real hybrid_block[2][2][SBLIMIT*SSLIMIT]; | 188 mpgdec_real hybrid_block[2][2][SBLIMIT*SSLIMIT]; |
179 int hybrid_blc[2]; | 189 int hybrid_blc[2]; |
180 unsigned long header; | 190 unsigned long header; |
181 int bsnum; | 191 int bsnum; |
182 real synth_buffs[2][2][0x110]; | 192 mpgdec_real synth_buffs[2][2][0x110]; |
183 int synth_bo; | 193 int synth_bo; |
184 | 194 |
185 struct bitstream_info bsi; | 195 struct bitstream_info bsi; |
186 }; | 196 }; |
187 | 197 |
226 unsigned region1start; | 236 unsigned region1start; |
227 unsigned region2start; | 237 unsigned region2start; |
228 unsigned preflag; | 238 unsigned preflag; |
229 unsigned scalefac_scale; | 239 unsigned scalefac_scale; |
230 unsigned count1table_select; | 240 unsigned count1table_select; |
231 real *full_gain[3]; | 241 mpgdec_real *full_gain[3]; |
232 real *pow2gain; | 242 mpgdec_real *pow2gain; |
233 }; | 243 }; |
234 | 244 |
235 struct III_sideinfo { | 245 struct III_sideinfo { |
236 unsigned main_data_begin; | 246 unsigned main_data_begin; |
237 unsigned private_bits; | 247 unsigned private_bits; |
253 | 263 |
254 extern int mpg123_do_layer3(struct frame *fr); | 264 extern int mpg123_do_layer3(struct frame *fr); |
255 extern int mpg123_do_layer2(struct frame *fr); | 265 extern int mpg123_do_layer2(struct frame *fr); |
256 extern int mpg123_do_layer1(struct frame *fr); | 266 extern int mpg123_do_layer1(struct frame *fr); |
257 | 267 |
258 extern int mpg123_synth_1to1(real *, int, unsigned char *, int *); | 268 extern int mpg123_synth_1to1(mpgdec_real *, int, unsigned char *, int *); |
259 extern int mpg123_synth_1to1_8bit(real *, int, unsigned char *, int *); | 269 extern int mpg123_synth_1to1_8bit(mpgdec_real *, int, unsigned char *, int *); |
260 extern int mpg123_synth_1to1_mono(real *, unsigned char *, int *); | 270 extern int mpg123_synth_1to1_mono(mpgdec_real *, unsigned char *, int *); |
261 extern int mpg123_synth_1to1_mono2stereo(real *, unsigned char *, int *); | 271 extern int mpg123_synth_1to1_mono2stereo(mpgdec_real *, unsigned char *, int *); |
262 extern int mpg123_synth_1to1_8bit_mono(real *, unsigned char *, int *); | 272 extern int mpg123_synth_1to1_8bit_mono(mpgdec_real *, unsigned char *, int *); |
263 extern int mpg123_synth_1to1_8bit_mono2stereo(real *, unsigned char *, | 273 extern int mpg123_synth_1to1_8bit_mono2stereo(mpgdec_real *, unsigned char *, |
264 int *); | 274 int *); |
265 | 275 |
266 extern int mpg123_synth_2to1(real *, int, unsigned char *, int *); | 276 extern int mpg123_synth_2to1(mpgdec_real *, int, unsigned char *, int *); |
267 extern int mpg123_synth_2to1_8bit(real *, int, unsigned char *, int *); | 277 extern int mpg123_synth_2to1_8bit(mpgdec_real *, int, unsigned char *, int *); |
268 extern int mpg123_synth_2to1_mono(real *, unsigned char *, int *); | 278 extern int mpg123_synth_2to1_mono(mpgdec_real *, unsigned char *, int *); |
269 extern int mpg123_synth_2to1_mono2stereo(real *, unsigned char *, int *); | 279 extern int mpg123_synth_2to1_mono2stereo(mpgdec_real *, unsigned char *, int *); |
270 extern int mpg123_synth_2to1_8bit_mono(real *, unsigned char *, int *); | 280 extern int mpg123_synth_2to1_8bit_mono(mpgdec_real *, unsigned char *, int *); |
271 extern int mpg123_synth_2to1_8bit_mono2stereo(real *, unsigned char *, | 281 extern int mpg123_synth_2to1_8bit_mono2stereo(mpgdec_real *, unsigned char *, |
272 int *); | 282 int *); |
273 | 283 |
274 extern int mpg123_synth_4to1(real *, int, unsigned char *, int *); | 284 extern int mpg123_synth_4to1(mpgdec_real *, int, unsigned char *, int *); |
275 extern int mpg123_synth_4to1_8bit(real *, int, unsigned char *, int *); | 285 extern int mpg123_synth_4to1_8bit(mpgdec_real *, int, unsigned char *, int *); |
276 extern int mpg123_synth_4to1_mono(real *, unsigned char *, int *); | 286 extern int mpg123_synth_4to1_mono(mpgdec_real *, unsigned char *, int *); |
277 extern int mpg123_synth_4to1_mono2stereo(real *, unsigned char *, int *); | 287 extern int mpg123_synth_4to1_mono2stereo(mpgdec_real *, unsigned char *, int *); |
278 extern int mpg123_synth_4to1_8bit_mono(real *, unsigned char *, int *); | 288 extern int mpg123_synth_4to1_8bit_mono(mpgdec_real *, unsigned char *, int *); |
279 extern int mpg123_synth_4to1_8bit_mono2stereo(real *, unsigned char *, | 289 extern int mpg123_synth_4to1_8bit_mono2stereo(mpgdec_real *, unsigned char *, |
280 int *); | 290 int *); |
281 | 291 |
282 extern void mpg123_rewindNbits(int bits); | 292 extern void mpg123_rewindNbits(int bits); |
283 extern int mpg123_hsstell(void); | 293 extern int mpg123_hsstell(void); |
284 extern void mpg123_set_pointer(long); | 294 extern void mpg123_set_pointer(long); |
294 | 304 |
295 void mpg123_init_layer3(int); | 305 void mpg123_init_layer3(int); |
296 void mpg123_init_layer2(gboolean); | 306 void mpg123_init_layer2(gboolean); |
297 void mpg123_make_decode_tables(long scaleval); | 307 void mpg123_make_decode_tables(long scaleval); |
298 void mpg123_make_conv16to8_table(void); | 308 void mpg123_make_conv16to8_table(void); |
299 void mpg123_dct64(real *, real *, real *); | 309 void mpg123_dct64(mpgdec_real *, mpgdec_real *, mpgdec_real *); |
300 | 310 |
301 int mpg123_decode_header(struct frame *fr, unsigned long newhead); | 311 int mpg123_decode_header(struct frame *fr, unsigned long newhead); |
302 double mpg123_compute_bpf(struct frame *fr); | 312 double mpg123_compute_bpf(struct frame *fr); |
303 double mpg123_compute_tpf(struct frame *fr); | 313 double mpg123_compute_tpf(struct frame *fr); |
304 guint mpg123_strip_spaces(char *src, size_t n); | 314 guint mpg123_strip_spaces(char *src, size_t n); |
307 | 317 |
308 | 318 |
309 extern gchar ** mpg123_id3_encoding_list; | 319 extern gchar ** mpg123_id3_encoding_list; |
310 extern unsigned char *mpg123_conv16to8; | 320 extern unsigned char *mpg123_conv16to8; |
311 extern const int mpg123_freqs[9]; | 321 extern const int mpg123_freqs[9]; |
312 extern real mpg123_muls[27][64]; | 322 extern mpgdec_real mpg123_muls[27][64]; |
313 extern real mpg123_decwin[512 + 32]; | 323 extern mpgdec_real mpg123_decwin[512 + 32]; |
314 extern real *mpg123_pnts[5]; | 324 extern mpgdec_real *mpg123_pnts[5]; |
315 | 325 |
316 #define GENRE_MAX 0x94 | 326 #define GENRE_MAX 0x94 |
317 extern const char *mpg123_id3_genres[GENRE_MAX]; | 327 extern const char *mpg123_id3_genres[GENRE_MAX]; |
318 extern const int tabsel_123[2][3][16]; | 328 extern const int tabsel_123[2][3][16]; |
319 | 329 |