annotate Plugins/Input/mpg123/mpg123.h @ 127:05d824e30afd trunk

[svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
author nenolod
date Wed, 09 Nov 2005 16:40:03 -0800
parents fa848bd484d8
children a008c0b15ac8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1 /*
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
2 * mpg123 defines
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
3 * used source: musicout.h from mpegaudio package
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
4 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
5
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
6 #ifndef __MPG123_H__
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
7 #define __MPG123_H__
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
8
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
9 #ifdef HAVE_CONFIG_H
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
10 # include "config.h"
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
11 #endif
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
12
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
13 #include <glib.h>
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
14
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
15
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
16 enum {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
17 SYNTH_AUTO,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
18 SYNTH_FPU,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
19 SYNTH_3DNOW,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
20 SYNTH_MMX,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
21 };
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
22
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
23 enum {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
24 DETECT_EXTENSION,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
25 DETECT_CONTENT,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
26 DETECT_BOTH
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
27 };
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
28
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
29 #include <gtk/gtk.h>
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
30
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
31 #include "audacious/plugin.h"
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
32 #include "dxhead.h"
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
33 #include "xmms-id3.h"
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
34
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
35 #define real float
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
36
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
37 #define SBLIMIT 32
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
38 #define SCALE_BLOCK 12
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
39 #define SSLIMIT 18
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
40
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
41 #define MPG_MD_STEREO 0
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
42 #define MPG_MD_JOINT_STEREO 1
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
43 #define MPG_MD_DUAL_CHANNEL 2
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
44 #define MPG_MD_MONO 3
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
45
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
46 #define ENCODING_SEPARATOR " ,:;|/"
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
47
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
48 #define MAXFRAMESIZE 4096
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
49
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
50 #define DOUBLE_TO_REAL(x) (x)
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
51 #define REAL_MUL(x, y) (x * y)
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
52
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
53 #ifndef REAL_PLUS_32767
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
54 # define REAL_PLUS_32767 32767.0
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
55 #endif
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
56 #ifndef REAL_MINUS_32768
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
57 # define REAL_MINUS_32768 -32768.0
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
58 #endif
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
59
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
60 struct id3v1tag_t {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
61 char tag[3]; /* always "TAG": defines ID3v1 tag 128 bytes before EOF */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
62 char title[30];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
63 char artist[30];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
64 char album[30];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
65 char year[4];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
66 union {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
67 struct {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
68 char comment[30];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
69 } v1_0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
70 struct {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
71 char comment[28];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
72 char __zero;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
73 unsigned char track_number;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
74 } v1_1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
75 } u;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
76 unsigned char genre;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
77 };
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
78
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
79 struct id3tag_t {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
80 char title[64];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
81 char artist[64];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
82 char album[64];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
83 char comment[256];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
84 char genre[256];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
85 gint year;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
86 gint track_number;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
87 };
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
88
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
89 typedef struct {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
90 int going, num_frames, eof, jump_to_time, eq_active;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
91 int songtime;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
92 double tpf;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
93 float eq_mul[576];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
94 gboolean output_audio, first_frame, network_stream;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
95 guint32 filesize; /* Filesize without junk */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
96 } PlayerInfo;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
97
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
98 void mpg123_set_eq(int on, float preamp, float *band);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
99 void mpg123_file_info_box(char *);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
100
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
101 extern PlayerInfo *mpg123_info;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
102 extern InputPlugin mpg123_ip;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
103
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
104 struct al_table {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
105 short bits;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
106 short d;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
107 };
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
108
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
109 struct frame {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
110 struct al_table *alloc;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
111 int (*synth) (real *, int, unsigned char *, int *);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
112 int (*synth_mono) (real *, unsigned char *, int *);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
113 #ifdef USE_SIMD
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
114 void (*dct36) (real *, real *, real *, real *, real *);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
115 #endif
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
116 int stereo;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
117 int jsbound;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
118 int single;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
119 int II_sblimit;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
120 int down_sample_sblimit;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
121 int lsf;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
122 int mpeg25;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
123 int down_sample;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
124 int header_change;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
125 int lay;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
126 int (*do_layer) (struct frame * fr);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
127 int error_protection;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
128 int bitrate_index;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
129 int sampling_frequency;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
130 int padding;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
131 int extension;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
132 int mode;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
133 int mode_ext;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
134 int copyright;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
135 int original;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
136 int emphasis;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
137 int framesize; /* computed framesize */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
138 int synth_type;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
139 };
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
140
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
141 void mpg123_configure(void);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
142
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
143 typedef struct {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
144 gint resolution;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
145 gint channels;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
146 gint downsample;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
147 gint http_buffer_size;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
148 gint http_prebuffer;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
149 gboolean use_proxy;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
150 gchar *proxy_host;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
151 gint proxy_port;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
152 gboolean proxy_use_auth;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
153 gchar *proxy_user, *proxy_pass;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
154 gboolean save_http_stream;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
155 gchar *save_http_path;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
156 gboolean use_udp_channel;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
157 gchar *id3_format;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
158 gboolean title_override, disable_id3v2;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
159 gboolean title_encoding_enabled;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
160 gchar *title_encoding;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
161 int detect_by;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
162 int default_synth;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
163 } MPG123Config;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
164
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
165 extern MPG123Config mpg123_cfg;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
166
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
167 struct bitstream_info {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
168 int bitindex;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
169 unsigned char *wordpointer;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
170 };
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
171
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
172 extern struct bitstream_info bsi;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
173
127
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
174 struct mpstr {
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
175 int bsize;
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
176 int framesize;
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
177 int fsizeold;
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
178 struct frame fr;
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
179 /* int (*do_layer)(struct mpstr *,struct frame *fr,int,struct audio_info_struct *); */
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
180 unsigned char bsspace[2][MAXFRAMESIZE+512]; /* MAXFRAMESIZE */
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
181 real hybrid_block[2][2][SBLIMIT*SSLIMIT];
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
182 int hybrid_blc[2];
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
183 unsigned long header;
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
184 int bsnum;
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
185 real synth_buffs[2][2][0x110];
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
186 int synth_bo;
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
187
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
188 struct bitstream_info bsi;
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
189 };
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
190
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
191
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
192 #define AUSHIFT 3
05d824e30afd [svn] Synchronize mpg123 code with mpg123-0.59s.mc3. This brings us superior accuracy to libMAD, apparently.
nenolod
parents: 61
diff changeset
193
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
194 /* ------ Declarations from "http.c" ------ */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
195
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
196 extern int mpg123_http_open(char *url);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
197 int mpg123_http_read(gpointer data, gint length);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
198 void mpg123_http_close(void);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
199 char *mpg123_http_get_title(char *url);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
200 int mpg123_http_get_length(void);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
201 void mpg123_http_seek(long pos);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
202
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
203 /* ------ Declarations from "common.c" ------ */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
204 extern unsigned int mpg123_get1bit(void);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
205 extern unsigned int mpg123_getbits(int);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
206 extern unsigned int mpg123_getbits_fast(int);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
207
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
208 extern void mpg123_open_stream(char *bs_filenam, int fd);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
209 extern int mpg123_head_check(unsigned long);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
210 extern void mpg123_stream_close(void);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
211
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
212 extern void mpg123_set_pointer(long);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
213
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
214 extern unsigned char *mpg123_pcm_sample;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
215 extern int mpg123_pcm_point;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
216
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
217 struct gr_info_s {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
218 int scfsi;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
219 unsigned part2_3_length;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
220 unsigned big_values;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
221 unsigned scalefac_compress;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
222 unsigned block_type;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
223 unsigned mixed_block_flag;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
224 unsigned table_select[3];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
225 unsigned subblock_gain[3];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
226 unsigned maxband[3];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
227 unsigned maxbandl;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
228 unsigned maxb;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
229 unsigned region1start;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
230 unsigned region2start;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
231 unsigned preflag;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
232 unsigned scalefac_scale;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
233 unsigned count1table_select;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
234 real *full_gain[3];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
235 real *pow2gain;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
236 };
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
237
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
238 struct III_sideinfo {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
239 unsigned main_data_begin;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
240 unsigned private_bits;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
241 struct {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
242 struct gr_info_s gr[2];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
243 } ch[2];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
244 };
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
245
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
246 extern void open_stream(char *, int fd);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
247 extern long mpg123_tell_stream(void);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
248 extern void mpg123_read_frame_init(void);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
249 extern int mpg123_read_frame(struct frame *fr);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
250 extern int mpg123_back_frame(struct frame *fr, int num);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
251 int mpg123_stream_jump_to_frame(struct frame *fr, int frame);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
252 int mpg123_stream_jump_to_byte(struct frame *fr, int byte);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
253 int mpg123_stream_check_for_xing_header(struct frame *fr,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
254 xing_header_t * xhead);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
255 int mpg123_calc_numframes(struct frame *fr);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
256
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
257 extern int mpg123_do_layer3(struct frame *fr);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
258 extern int mpg123_do_layer2(struct frame *fr);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
259 extern int mpg123_do_layer1(struct frame *fr);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
260
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
261 extern int mpg123_synth_1to1(real *, int, unsigned char *, int *);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
262 extern int mpg123_synth_1to1_8bit(real *, int, unsigned char *, int *);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
263 extern int mpg123_synth_1to1_mono(real *, unsigned char *, int *);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
264 extern int mpg123_synth_1to1_mono2stereo(real *, unsigned char *, int *);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
265 extern int mpg123_synth_1to1_8bit_mono(real *, unsigned char *, int *);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
266 extern int mpg123_synth_1to1_8bit_mono2stereo(real *, unsigned char *,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
267 int *);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
268
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
269 extern int mpg123_synth_2to1(real *, int, unsigned char *, int *);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
270 extern int mpg123_synth_2to1_8bit(real *, int, unsigned char *, int *);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
271 extern int mpg123_synth_2to1_mono(real *, unsigned char *, int *);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
272 extern int mpg123_synth_2to1_mono2stereo(real *, unsigned char *, int *);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
273 extern int mpg123_synth_2to1_8bit_mono(real *, unsigned char *, int *);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
274 extern int mpg123_synth_2to1_8bit_mono2stereo(real *, unsigned char *,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
275 int *);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
276
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
277 extern int mpg123_synth_4to1(real *, int, unsigned char *, int *);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
278 extern int mpg123_synth_4to1_8bit(real *, int, unsigned char *, int *);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
279 extern int mpg123_synth_4to1_mono(real *, unsigned char *, int *);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
280 extern int mpg123_synth_4to1_mono2stereo(real *, unsigned char *, int *);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
281 extern int mpg123_synth_4to1_8bit_mono(real *, unsigned char *, int *);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
282 extern int mpg123_synth_4to1_8bit_mono2stereo(real *, unsigned char *,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
283 int *);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
284
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
285 extern void mpg123_rewindNbits(int bits);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
286 extern int mpg123_hsstell(void);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
287 extern void mpg123_set_pointer(long);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
288 extern void mpg123_huffman_decoder(int, int *);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
289 extern void mpg123_huffman_count1(int, int *);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
290 extern int mpg123_get_songlen(struct frame *fr, int no);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
291
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
292 #ifdef USE_SIMD
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
293 void mpg123_dct64_mmx(real *, real *, real *);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
294 int mpg123_synth_1to1_mmx(real *, int, unsigned char *, int *);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
295
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
296 void mpg123_dct36(real *, real *, real *, real *, real *);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
297 void dct36_3dnow(real *, real *, real *, real *, real *);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
298 int mpg123_synth_1to1_3dnow(real *, int, unsigned char *, int *);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
299
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
300 int mpg123_getcpuflags(guint32 * fflags, guint32 * efflags);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
301 #else
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
302 #define mpg123_getcpuflags(a, b) \
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
303 do { \
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
304 *(a) = 0; \
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
305 *(b) = 0; \
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
306 } while (0)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
307 #endif
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
308
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
309 void mpg123_init_layer3(int);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
310 void mpg123_init_layer2(gboolean);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
311 void mpg123_make_decode_tables(long scaleval);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
312 void mpg123_make_conv16to8_table(void);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
313 void mpg123_dct64(real *, real *, real *);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
314
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
315 int mpg123_decode_header(struct frame *fr, unsigned long newhead);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
316 double mpg123_compute_bpf(struct frame *fr);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
317 double mpg123_compute_tpf(struct frame *fr);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
318 guint mpg123_strip_spaces(char *src, size_t n);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
319 void mpg123_get_id3v2(struct id3_tag *id3d, struct id3tag_t *tag);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
320 gchar *mpg123_format_song_title(struct id3tag_t *tag, gchar * filename);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
321 double mpg123_relative_pos(void);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
322
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
323
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
324 extern gchar ** mpg123_id3_encoding_list;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
325 extern unsigned char *mpg123_conv16to8;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
326 extern const int mpg123_freqs[9];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
327 extern real mpg123_muls[27][64];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
328 extern real mpg123_decwin[512 + 32];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
329 extern real *mpg123_pnts[5];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
330
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
331 #define GENRE_MAX 0x94
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
332 extern const char *mpg123_id3_genres[GENRE_MAX];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
333 extern const int tabsel_123[2][3][16];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
334
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
335 #endif