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