OSDN Git Service

Merge develop branch.
[timidity41/timidity41.git] / gogo / gogo.h
1 /* -*- TABSIZE = 4 -*- */
2 /*
3  *      for GOGO-no-coda
4  *      Copyright (C) 1999, 2000, 2001 gogo develop team
5  */
6
7
8 #ifndef GOGO_H_
9 #define GOGO_H_
10
11 typedef int MERET;
12
13 /* for only compatibility */
14 #define MUPARAM UPARAM
15
16 typedef unsigned long                   UPARAM;
17
18 #define ME_NOERR                                        (0)             // return normally;\90³\8fí\8fI\97¹
19 #define ME_EMPTYSTREAM                          (1)             // stream becomes empty;\83X\83g\83\8a\81[\83\80\82ª\8dÅ\8cã\82É\92B\82µ\82½
20 #define ME_HALTED                                       (2)             // stopped by user;(\83\86\81[\83U\81[\82Ì\8eè\82É\82æ\82è)\92\86\92f\82³\82ê\82½
21 #define ME_MOREDATA                                     (3)     
22 #define ME_INTERNALERROR                        (10)    // internal error; \93à\95\94\83G\83\89\81[
23 #define ME_PARAMERROR                           (11)    // parameters error;\90Ý\92è\82Å\83p\83\89\83\81\81[\83^\81[\83G\83\89\81[
24 #define ME_NOFPU                                        (12)    // no FPU;FPU\82ð\91\95\92\85\82µ\82Ä\82¢\82È\82¢!!
25 #define ME_INFILE_NOFOUND                       (13)    // can't open input file;\93ü\97Í\83t\83@\83C\83\8b\82ð\90³\82µ\82­\8aJ\82¯\82È\82¢
26 #define ME_OUTFILE_NOFOUND                      (14)    // can't open output file;\8fo\97Í\83t\83@\83C\83\8b\82ð\90³\82µ\82­\8aJ\82¯\82È\82¢
27 #define ME_FREQERROR                            (15)    // frequency is not good;\93ü\8fo\97Í\8eü\94g\90\94\82ª\90³\82µ\82­\82È\82¢
28 #define ME_BITRATEERROR                         (16)    // bitrate is not good;\8fo\97Í\83r\83b\83g\83\8c\81[\83g\82ª\90³\82µ\82­\82È\82¢
29 #define ME_WAVETYPE_ERR                         (17)    // WAV format is not good;\83E\83F\81[\83u\83^\83C\83v\82ª\90³\82µ\82­\82È\82¢
30 #define ME_CANNOT_SEEK                          (18)    // can't seek;\90³\82µ\82­\83V\81[\83N\8fo\97\88\82È\82¢
31 #define ME_BITRATE_ERR                          (19)    // only for compatibility;\83r\83b\83g\83\8c\81[\83g\90Ý\92è\82ª\90³\82µ\82­\82È\82¢
32 #define ME_BADMODEORLAYER                       (20)    // mode/layer not good;\83\82\81[\83h\81E\83\8c\83C\83\84\82Ì\90Ý\92è\88Ù\8fí
33 #define ME_NOMEMORY                                     (21)    // fail to allocate memory;\83\81\83\82\83\8a\83A\83\8d\81[\83P\81[\83V\83\87\83\93\8e¸\94s
34 #define ME_CANNOT_SET_SCOPE                     (22)    // thread error;\83X\83\8c\83b\83h\91®\90«\83G\83\89\81[(pthread only)
35 #define ME_CANNOT_CREATE_THREAD         (23)    // fail to create thear;\83X\83\8c\83b\83h\90\90¬\83G\83\89\81[
36 #define ME_WRITEERROR                           (24)    // lock of capacity of disk;\8bL\89¯\94}\91Ì\82Ì\97e\97Ê\95s\91«
37
38
39 // definition of call-back function for user;\83\86\81[\83U\81[\82Ì\83R\81[\83\8b\83o\83b\83N\8aÖ\90\94\92è\8b`
40 typedef MERET   (*MPGE_USERFUNC)(void *buf, unsigned long nLength );
41 #define MPGE_NULL_FUNC (MPGE_USERFUNC)NULL
42
43 ///////////////////////////////////////////////////////////////////////////
44 // Configuration
45 ///////////////////////////////////////////////////////////////////////////
46 // for INPUT
47 #define         MC_INPUTFILE                    (1)
48         // para1 choice of input device
49         #define         MC_INPDEV_FILE          (0)     // input device is file;\93ü\97Í\83f\83o\83C\83X\82Í\83t\83@\83C\83\8b
50         #define         MC_INPDEV_STDIO         (1)     //                 stdin;\93ü\97Í\83f\83o\83C\83X\82Í\95W\8f\80\93ü\97Í
51         #define         MC_INPDEV_USERFUNC      (2)     //       defined by user;\93ü\97Í\83f\83o\83C\83X\82Í\83\86\81[\83U\81[\92è\8b`
52         #define         MC_INPDEV_LIBSND        (3) // input device is file via LIBSND ;\93ü\97Í\83f\83o\83C\83X\82Í LIBSND \8co\97R\82Å\83t\83@\83C\83\8b
53         // para2 (\95K\97v\82Å\82 \82ê\82Î)\83t\83@\83C\83\8b\96¼\81B\83|\83C\83\93\83^\82ð\8ew\92è\82·\82é
54         // \83\81\83\82\83\8a\82æ\82è\83G\83\93\83R\81[\83h\82Ì\8e\9e\82Í\88È\89º\82Ì\8d\\91¢\91Ì\82Ì\83|\83C\83\93\83^\82ð\8ew\92è\82·\82é.
55         struct MCP_INPDEV_USERFUNC {
56                 MPGE_USERFUNC   pUserFunc;              // pointer to user-function for call-back or MPGE_NULL_FUNC if none
57                                                                                         // \83R\81[\83\8b\83o\83b\83N\91Î\8fÛ\82Ì\83\86\81[\83U\81[\8aÖ\90\94\81B\96¢\92è\8b`\8e\9eMPGE_NULL_FUNC\82ð\91ã\93ü
58                 unsigned int    nSize;                  // size of file or MC_INPDEV_MEMORY_NOSIZE if unknown
59                                                                                         // \83t\83@\83C\83\8b\83T\83C\83Y\81B\95s\92è\82Ì\8e\9e\82Í MC_INPDEV_MEMORY_NOSIZE\82ð\8ew\92è
60                 int                             nBit;   // nBit = 8 or 16 ; PCM\83r\83b\83g\90[\93x\82ð\8ew\92è
61                 int                             nFreq;  // input frequency ; \93ü\97Í\8eü\94g\90\94\82Ì\8ew\92è
62                 int                             nChn;   // number of channel(1 or 2) ; \83`\83\83\83l\83\8b\90\94
63         };
64         #define         MC_INPDEV_MEMORY_NOSIZE         (0xffffffff)
65 /*
66   Using userfunction input;
67   \83\86\81[\83U\81[\8aÖ\90\94\97\98\97p\8e\9e\82Ì\8b\93\93®
68   ^^^^^^^^^^^^^^^^^^^^^^^^
69
70   \83\86\81[\83U\81[\82ª\93o\98^\82µ\82½\8aÖ\90\94 UsefFunc\82É\91Î\82µ\82Ä\81ADLL\82æ\82è\93Ç\82Ý\8d\9e\82Ý\97v\8b\81\82ª\8ds\82í\82ê\82é\81B
71   MERET UserFunc_input(void *buf, unsigned long nLength );
72
73   \97v\8b\81\82ð\8f\88\97\9d\82·\82é\8dÛ\82É
74      \81Evoid *buf \82É\82Í nLength \83o\83C\83g\95ª\82Ì\83f\81[\83^\82ð\8ai\94[\81A return ME_NOERR\82Å\94²\82¯\82é
75          \81E\83t\83@\83C\83\8b\82Ì\8dÅ\8cã\82É\92B\82µ\82Ä\81AnLength\95ª\93Ç\82Ý\8d\9e\82ß\82È\82¢(\82©\82Â\8f­\82È\82­\82Æ\82à1\83o\83C\83g\88È\8fã\93Ç\82Ý\8d\9e\82ß\82é)\8fê\8d\87\81A
76             memset( buf + \93Ç\82Ý\8d\9e\82ñ\82¾\83f\81[\83^byte, 0, nLength - \93Ç\82Ý\8d\9e\82ñ\82¾\83f\81[\83^\83T\83C\83Y) ;
77            \82Æ\82µ\82Ä return ME_NOERR \82·\82é\81B
78          \81E\82P\83o\83C\83g\82à\93Ç\82ß\82È\82¢\8fê\8d\87\82Í\81A\89½\82à\82¹\82¸ return ME_EMPTYSTREAM; \82Å\94²\82¯\82é
79 */
80
81 ///////////////////////////////////////////////////////////////////////////
82 // for OUTPUT ( now stdout is not support )
83 #define         MC_OUTPUTFILE                   (2)
84 // para1 choice of output device
85         #define         MC_OUTDEV_FILE          (0)     // output device is file;\8fo\97Í\83f\83o\83C\83X\82Í\83t\83@\83C\83\8b
86         #define         MC_OUTDEV_STDOUT        (1)     //                  stdout; \8fo\97Í\83f\83o\83C\83X\82Í\95W\8f\80\8fo\97Í
87         #define         MC_OUTDEV_USERFUNC      (2)     //        defined by user;\8fo\97Í\83f\83o\83C\83X\82Í\83\86\81[\83U\81[\92è\8b`
88         #define         MC_OUTDEV_USERFUNC_WITHVBRTAG   (3)     //       defined by user;\93ü\97Í\83f\83o\83C\83X\82Í\83\86\81[\83U\81[\92è\8b`/VBR\83^\83O\8f\91\82«\8fo\82µ
89 // para2 pointer to file if necessary ;(\95K\97v\82Å\82 \82ê\82Î)\83t\83@\83C\83\8b\96¼\81B\83|\83C\83\93\83^\8ew\92è
90
91 /*
92   Using userfunction output
93   \83\86\81[\83U\81[\8aÖ\90\94\97\98\97p\8e\9e\82Ì\8b\93\93®
94   ^^^^^^^^^^^^^^^^^^^^^^^^
95
96   \83\86\81[\83U\81[\82ª\93o\98^\82µ\82½\8aÖ\90\94 UsefFunc\82É\91Î\82µ\82Ä\81ADLL\82æ\82è\8f\91\8d\9e\82Ý\97v\8b\81\82ª\8ds\82í\82ê\82é\81B
97   MERET UserFunc_output(void *buf, unsigned long nLength );
98
99   \97v\8b\81\82ð\8f\88\97\9d\82·\82é\8dÛ\82É
100      \81Evoid *buf \82É\82Í nLength \83o\83C\83g\95ª\82Ì\83f\81[\83^\82ª\8ai\94[\82³\82ê\82Ä\82¢\82é\82Ì\82Å 
101            fwrite( buf, 1, nLength, fp );\82Ì\97l\82É\82µ\82Ä\8f\91\82«\8fo\82µreturn ME_NOERR\82Å\94²\82¯\82é.
102            \8f\91\82«\8fo\82µ\82É\8e¸\94s\82µ\82½\8e\9e\82Í\81Areturn ME_WRITEERROR;\82Å\94²\82¯\82é.
103   \83G\83\93\83R\81[\83h\8fI\97¹\82Ì\92Ê\92m/\8f\88\97\9d\82ÍMC_OUTDEV_USERFUNC\82ÆMC_OUTDEV_USERFUNC_WITHVBRTAG\82Å\88Ù\82È\82é
104         (MC_OUTDEV_USERFUNC\82Ì\8fê\8d\87)
105          \81E\8dÅ\8cã\82É buf == NULL\82Å1\93x\8cÄ\82Ñ\8fo\82³\82ê\82é. return \92l\82Í\89½\82Å\82à\97Ç\82¢\81B
106         (MC_OUTDEV_USERFUNC_WITHVBRTAG\82Ì\8fê\8d\87)
107          \81Ebuf == NULL\82Å\8cÄ\82Ñ\8fo\82³\82ê\82é.\82±\82Ì\8dÛ\82É\83t\83@\83C\83\8b\82Ì\90æ\93ª\82Ö\83V\81[\83N\82µ\81A
108            \83t\83@\83C\83\8b\91S\91Ì\82Ì\83T\83C\83Y\82ð return\82Ì\92l\82Æ\82·\82é\81Bfilesize<=0\82Ì\8e\9e\82Í\8fI\97¹\81B
109            (\8cë\82Á\82Ä return ME_NOERR; \82Å\94²\82¯\82È\82¢\97l\82É\92\8d\88Ó!! )
110          \81EXING-VBR\83^\83O\83f\81[\83^\82ª buf\82É\81AXINGVBR\83^\83O\82Ì\83T\83C\83Y\82ª nLength\82É\8ai\94[\82³\82ê\82Ä\8cÄ\82Ñ\8fo\82³\82ê\82é\82Ì\82Å
111            \83t\83@\83C\83\8b\90æ\93ª\82©\82ç\82»\82ê\82ð\8f\91\82«\8d\9e\82Þ.
112          \81E\8dÅ\8cã\82É\82à\82¤\88ê\93xbuf == NULL\82Å\8cÄ\82Ñ\8fo\82³\82ê\82é. return \92l\82Í\89½\82Å\82à\97Ç\82¢\81B
113 */
114
115 ///////////////////////////////////////////////////////////////////////////
116 // mode of encoding ;\83G\83\93\83R\81[\83h\83^\83C\83v
117 #define         MC_ENCODEMODE                   (3)
118 // para1 mode;\83\82\81[\83h\90Ý\92è
119         #define         MC_MODE_MONO            (0)             // mono;\83\82\83m\83\89\83\8b
120         #define         MC_MODE_STEREO          (1)             // stereo;\83X\83e\83\8c\83I
121         #define         MC_MODE_JOINT           (2)             // joint-stereo;\83W\83\87\83C\83\93\83g
122         #define         MC_MODE_MSSTEREO        (3)             // mid/side stereo;\83~\83b\83h\83T\83C\83h
123         #define         MC_MODE_DUALCHANNEL     (4)             // dual channel;\83f\83\85\83A\83\8b\83`\83\83\83l\83\8b
124
125 ///////////////////////////////////////////////////////////////////////////
126 // bitrate;\83r\83b\83g\83\8c\81[\83g\90Ý\92è
127 #define         MC_BITRATE                              (4)
128 // para1 bitrate;\83r\83b\83g\83\8c\81[\83\91¦\92l\8ew\92è
129
130
131 ///////////////////////////////////////////////////////////////////////////
132 // frequency of input file (force);\93ü\97Í\82Å\97p\82¢\82é\83T\83\93\83v\83\8b\8eü\94g\90\94\82Ì\8b­\90§\8ew\92è
133 #define         MC_INPFREQ                              (5)
134 // para1 frequency;\93ü\8fo\97Í\82Å\97p\82¢\82é\83f\81[\83^
135
136 ///////////////////////////////////////////////////////////////////////////
137 // frequency of output mp3 (force);\8fo\97Í\82Å\97p\82¢\82é\83T\83\93\83v\83\8b\8eü\94g\90\94\82Ì\8b­\90§\8ew\92è
138 #define         MC_OUTFREQ                              (6)
139 // para1 frequency;\93ü\8fo\97Í\82Å\97p\82¢\82é\83f\81[\83^
140
141 ///////////////////////////////////////////////////////////////////////////
142 // size ofheader if you ignore WAV-header (for example cda);\83G\83\93\83R\81[\83h\8aJ\8en\88Ê\92u\82Ì\8b­\90§\8ew\92è(\83w\83b\83_\82ð\96³\8e\8b\82·\82é\8e\9e)
143 #define         MC_STARTOFFSET                  (7)
144
145 ///////////////////////////////////////////////////////////////////////////
146 // psycho-acoustics ON/OFF;\90S\97\9d\89ð\90Í ON/OFF
147 #define         MC_USEPSY                               (8)
148 // PARA1 boolean(TRUE/FALSE)
149
150 ///////////////////////////////////////////////////////////////////////////
151 // 16kHz low-pass filter ON/OFF;16KHz\92á\91Ñ\88æ\83t\83B\83\8b\83^ ON/OFF
152 #define         MC_USELPF16                             (9)
153 // PARA1 boolean(TRUE/FALSE)
154
155 ///////////////////////////////////////////////////////////////////////////
156 // use special UNIT, para1:boolean; \83\86\83j\83b\83g\8ew\92è para1:BOOL\92l
157 #define         MC_USEMMX                               (10)    // MMX
158 #define         MC_USE3DNOW                             (11)    // 3DNow!
159 #define         MC_USESSE                               (12)    // SSE(KNI)
160 #define         MC_USEKNI                               MC_USESSE       // \8cß\8cã2\82Æ\82Ì\8cÝ\8a·\90«
161 #define         MC_USEE3DNOW                    (13)    // Enhanced 3D Now!
162 #define         MC_USECMOV                              (38)    // CMOV
163 #define         MC_USEEMMX                              (39)    // EMMX
164 #define         MC_USESSE2                              (40)    // SSE2
165 /* #define      MC_USECLFLUSH                           (43)    // CLFLUSH */
166 #define         MC_USEALTIVEC                           (44)    // ALTIVEC
167 #define         MC_USESPC1                              (14)    // special switch for debug
168 #define         MC_USESPC2                              (15)    // special switch for debug
169
170 ///////////////////////////////////////////////////////////////////////////
171 // addition of TAG; \83t\83@\83C\83\8b\83^\83O\8fî\95ñ\95t\89Á
172 #define         MC_ADDTAG                               (16)
173 // dwPara1  length of TAG;\83^\83O\92·  
174 // dwPara2  pointer to TAG;\83^\83O\83f\81[\83^\82Ì\83|\83C\83\93\83^
175
176 ///////////////////////////////////////////////////////////////////////////
177 // emphasis;\83G\83\93\83t\83@\83V\83X\83^\83C\83v\82Ì\90Ý\92è
178 #define         MC_EMPHASIS                             (17)    
179 // para1 type of emphasis;\83G\83\93\83t\83@\83V\83X\83^\83C\83v\82Ì\90Ý\92è
180         #define         MC_EMP_NONE                     (0)             // no empahsis;\83G\83\93\83t\83@\83V\83X\82È\82µ(dflt)
181         #define         MC_EMP_5015MS           (1)             // 50/15ms    ;\83G\83\93\83t\83@\83V\83X50/15ms
182         #define         MC_EMP_CCITT            (3)             // CCITT      ;\83G\83\93\83t\83@\83V\83XCCITT
183
184 ///////////////////////////////////////////////////////////////////////////
185 // use VBR;VBR\83^\83C\83v\82Ì\90Ý\92è
186 #define         MC_VBR                                  (18)
187
188 ///////////////////////////////////////////////////////////////////////////
189 // SMP support para1: interger
190 #define         MC_CPU                                  (19)
191
192 ///////////////////////////////////////////////////////////////////////////
193 // for RAW-PCM; \88È\89º4\82Â\82ÍRAW-PCM\82Ì\90Ý\92è\82Ì\82½\82ß
194 // byte swapping for 16bitPCM; PCM\93ü\97Í\8e\9e\82Ìlow, high bit \95Ï\8a·
195 #define         MC_BYTE_SWAP                    (20)
196
197 ///////////////////////////////////////////////////////////////////////////
198 // for 8bit PCM
199 #define         MC_8BIT_PCM                             (21)
200
201 ///////////////////////////////////////////////////////////////////////////
202 // for mono PCM
203 #define         MC_MONO_PCM                             (22)
204
205 ///////////////////////////////////////////////////////////////////////////
206 // for Towns SND
207 #define         MC_TOWNS_SND                    (23)
208
209 ///////////////////////////////////////////////////////////////////////////
210 // BeOS & Win32 Encode thread priority
211 #define         MC_THREAD_PRIORITY              (24)
212 // (WIN32) dwPara1 MULTITHREAD Priority (THREAD_PRIORITY_**** at WinBASE.h )
213
214 ///////////////////////////////////////////////////////////////////////////
215 // BeOS Read thread priority
216 //#if   defined(USE_BTHREAD)
217 #define         MC_READTHREAD_PRIORITY  (25)
218 //#endif
219
220 ///////////////////////////////////////////////////////////////////////////
221 // output format 
222 #define         MC_OUTPUT_FORMAT                (26)
223 // para1 
224         #define         MC_OUTPUT_NORMAL        (0)             // mp3+TAG(see MC_ADDTAG)
225         #define         MC_OUTPUT_RIFF_WAVE     (1)             // RIFF/WAVE
226         #define         MC_OUTPUT_RIFF_RMP      (2)             // RIFF/RMP
227
228 ///////////////////////////////////////////////////////////////////////////
229 // LIST/INFO chunk of RIFF/WAVE or RIFF/RMP 
230 #define         MC_RIFF_INFO                    (27)
231 // para1 size of info(include info name)
232 // para2 pointer to info
233 //   byte offset       contents
234 //   0..3              info name
235 //   4..size of info-1 info
236
237 ///////////////////////////////////////////////////////////////////////////
238 // verify and overwrite
239 #define         MC_VERIFY                               (28)
240
241 ///////////////////////////////////////////////////////////////////////////
242 // output directory
243 #define         MC_OUTPUTDIR                    (29)
244
245 ///////////////////////////////////////////////////////////////////////////
246 // VBR\82Ì\8dÅ\92á/\8dÅ\8d\82\83r\83b\83g\83\8c\81[\83g\82Ì\90Ý\92è
247 #define         MC_VBRBITRATE                   (30)
248 // para1 \8dÅ\92á\83r\83b\83g\83\8c\81[\83g (kbps)
249 // para2 \8dÅ\8d\82\83r\83b\83g\83\8c\81[\83g (kbps)
250
251
252 ///////////////////////////////////////////////////////////////////////////
253 // \8ag\92£\83t\83B\83\8b\83^\82Ì\8eg\97p LPF1, LPF2
254 #define         MC_ENHANCEDFILTER               (31)
255 // para1 LPF1 (0-100)   , dflt=auto setting by outfreq
256 // para2 LPF2 (0-100)   , dflt=auto setting by outfreq
257
258
259 ///////////////////////////////////////////////////////////////////////////
260 // Joint-stereo\82É\82¨\82¯\82é\81A\83X\83e\83\8c\83I/MS\83X\83e\83\8c\83I\82Ì\90Ø\82è\91Ö\82¦\82Ìè\87\92l
261 #define         MC_MSTHRESHOLD                  (32)
262 // para1 threshold  (0-100)     , dflt=auto setting by outfreq
263 // para2 mspower    (0-100) , dflt=auto setting by outfreq
264
265 ///////////////////////////////////////////////////////////////////////////
266 // Language
267 #define         MC_LANG                                 (33)
268 // t_lang defined in message.h
269
270 ///////////////////////////////////////////////////////////////////////////
271 // \93Ç\82Ý\8d\9e\82Ý\83f\81[\83^\82Ì\8dÅ\91å\83T\83C\83Y\90Ý\92è / max data length ( byte )
272 #define         MC_MAXFILELENGTH                (34)
273 // para1 maxfilesize (PCM body length, not include wave heaher size.)
274 //       (0-0xfffffffd)         // as byte
275                 #define         MC_MAXFLEN_IGNORE               (ULONG_MAX)             // DEFAULT
276                 #define         MC_MAXFLEN_WAVEHEADER   (ULONG_MAX-1)   // WAVE\83w\83b\83_\82Ì\92l\82ð\8eg\97p
277
278
279 ///////////////////////////////////////////////////////////////////////////
280 // \8fo\97Í\83X\83g\83\8a\81[\83\80\82Ì\83o\83b\83t\83@\83\8a\83\93\83O\83t\83\89\83O
281 #define         MC_OUTSTREAM_BUFFERD    (35)
282 // para1  enable(=1) or disable(=0), dflt=enable
283                 #define         MC_OBUFFER_ENABLE               1                               // DEFAULT
284                 #define         MC_OBUFFER_DISABLE              0
285
286 // \88È\89º\82Í\82Õ\82¿\8cß\8cã\90V\90Ý
287
288 ///////////////////////////////////////////////////////////////////////////
289 // quality (same as lame-option `-q')
290 #define         MC_ENCODE_QUALITY               (36)
291 // 1(high quality) <= para1 <= 9(low quality)
292 // 2:-h
293 // 5:default
294 // 7:-f
295
296
297
298 ///////////////////////////////////////////////////////////////////////////
299 // use ABR;ABR\83^\83C\83v\82Ì\90Ý\92è
300 #define         MC_ABR                                  (37)
301
302 ///////////////////////////////////////////////////////////////////////////
303 // \91\9d\90Ý\82³\82ê\82½CPU\83^\83C\83v\82Ì\90Ý\92è
304 // defined in `use special UNIT'
305 //#define               MC_USECMOV                              (38)    // CMOV \8fã\82Å\92è\8b`\8dÏ\82Ý
306 //#define               MC_USEEMMX                              (39)    // EMMX \8fã\82Å\92è\8b`\8dÏ\82Ý
307 //#define               MC_USESSE2                              (40)    // SSE2 \8fã\82Å\92è\8b`\8dÏ\82Ý
308
309 ///////////////////////////////////////////////////////////////////////////
310 // LAME\83^\83O\82Ì\8fo\97Í\90Ý\92è (\95¹\82¹\82ÄVBR\83^\83O\82Ì\8f\91\82«\8fo\82µ\82ð\97L\8cø\82É\82µ\82Ä\82­\82¾\82³\82¢)
311 #define         MC_WRITELAMETAG                                 (41)
312 /// para1: 0 = disable (default)
313 ///        1 = enable
314
315 ///////////////////////////////////////////////////////////////////////////
316 // VBR\83^\83O\82Ì\8fo\97Í\90Ý\92è (CBR\82Å\82È\82¨\82©\82Âlametag\96³\8cø\8e\9e\82Í\90Ý\92è\93à\97e\82É\8aÖ\8cW\82È\82­\96³\8cø\82Å\82·)
317 #define         MC_WRITEVBRTAG                                  (42)
318 /// para1: 0 = disable 
319 ///        1 = enable (default)
320
321
322 ///////////////////////////////////////////////////////////////////////////
323 //  Functions
324 ///////////////////////////////////////////////////////////////////////////
325 #ifdef GOGO_DLL_EXPORTS
326 #define         EXPORT                          __declspec(dllexport) __cdecl   
327 #define         EXPORT_VB                       __declspec(dllexport) __stdcall 
328 #else
329 #define         EXPORT
330 #define         EXPORT_VB
331 #endif
332
333 MERET   EXPORT  MPGE_initializeWork(void);
334 MERET   EXPORT  MPGE_setConfigure(UPARAM mode, UPARAM dwPara1, UPARAM dwPara2);
335 MERET   EXPORT  MPGE_getConfigure(UPARAM mode, void *para1);
336 MERET   EXPORT  MPGE_detectConfigure(void);
337 MERET   EXPORT  MPGE_processFrame(void);
338 MERET   EXPORT  MPGE_closeCoder(void);
339 MERET   EXPORT  MPGE_endCoder(void);
340 MERET   EXPORT  MPGE_getUnitStates( unsigned long *unit );
341 MERET   EXPORT  MPGE_processTrack(void);
342
343 // This function is effective for gogo.dll;\82±\82Ì\83t\83@\83\93\83N\83V\83\87\83\93\82ÍDLL\83o\81[\83W\83\87\83\93\82Ì\82Ý\97L\8cø
344 MERET   EXPORT  MPGE_getVersion( unsigned long *vercode,  char *verstring );
345 #define MGV_BUFLENGTH 260
346 // vercode = 0x125 ->  version 1.25
347 // verstring       ->  "ver 1.25 1999/09/25" (allocate abobe 260bytes buffer)
348
349
350 ////////////////////////////////////////////////////////////////////////////
351 // for getting configuration
352 ////////////////////////////////////////////////////////////////////////////
353
354 #define         MG_INPUTFILE                    (1)             // name of input file ;\93ü\97Í\83t\83@\83C\83\8b\96¼\8eæ\93¾
355 #define         MG_OUTPUTFILE                   (2)             // name of output file;\8fo\97Í\83t\83@\83C\83\8b\96¼\8eæ\93¾
356 #define         MG_ENCODEMODE                   (3)             // type of encoding   ;\83G\83\93\83R\81[\83h\83\82\81[\83h
357 #define         MG_BITRATE                              (4)             // bitrate            ;\83r\83b\83g\83\8c\81[\83g
358 #define         MG_INPFREQ                              (5)             // input frequency    ;\93ü\97Í\8eü\94g\90\94
359 #define         MG_OUTFREQ                              (6)             // output frequency   ;\8fo\97Í\8eü\94g\90\94
360 #define         MG_STARTOFFSET                  (7)             // offset of input PCM;\83X\83^\81[\83g\83I\83t\83Z\83b\83g
361 #define         MG_USEPSY                               (8)             // psycho-acoustics   ;\90S\97\9d\89ð\90Í\82ð\8eg\97p\82·\82é/\82µ\82È\82¢
362 #define         MG_USEMMX                               (9)             // MMX
363 #define         MG_USE3DNOW                             (10)    // 3DNow!
364 #define         MG_USESSE                               (11)    // SSE(KNI)
365 #define         MG_USEKNI                               MG_USESSE       // \8cß\8cã2\82Æ\82Ì\8cÝ\8a·\90«
366 #define         MG_USEE3DNOW                    (12)    // Enhanced 3DNow!
367 #define         MG_USECMOV                              (20)    // CMOV
368 #define         MG_USEEMMX                              (21)    // EMMX
369 #define         MG_USESSE2                              (22)    // SSE2
370 #define         MG_CLFLUSH                              (23)    // CLFLUSH
371 #define         MG_USEALTIVEC                           (24)    // ALTIVEC
372 #define         MG_USESPC1                              (13)    // special switch for debug
373 #define         MG_USESPC2                              (14)    // special switch for debug
374 #define         MG_COUNT_FRAME                  (15)    // amount of frame
375 #define         MG_NUM_OF_SAMPLES               (16)    // number of sample for 1 frame;1\83t\83\8c\81[\83\80\82 \82½\82è\82Ì\83T\83\93\83v\83\8b\90\94
376 #define         MG_MPEG_VERSION                 (17)    // MPEG VERSION
377 #define         MG_READTHREAD_PRIORITY  (18)    // thread priority to read for BeOS
378 #define         MG_FRAME                                (19)    // frame number
379 //#define               MG_USECMOV                              (20)    // CMOV \8fã\82Å\92è\8b`\8dÏ\82Ý
380 //#define               MG_USEEMMX                              (21)    // EMMX \8fã\82Å\92è\8b`\8dÏ\82Ý
381 //#define               MG_USESSE2                              (22)    // SSE2 \8fã\82Å\92è\8b`\8dÏ\82Ý
382
383
384
385 ////////////////////////////////////////////////////////////////////////////
386 //  for MPGE_getUnitStates()
387 ////////////////////////////////////////////////////////////////////////////
388 // x86 - Spec
389 #define         MU_tFPU                                 (1<<0)
390 #define         MU_tMMX                                 (1<<1)
391 #define         MU_t3DN                                 (1<<2)
392 #define         MU_tSSE                                 (1<<3)
393 #define         MU_tCMOV                                (1<<4)
394 #define         MU_tE3DN                                (1<<5)  /* for Athlon(Externd 3D Now!) */
395 #define         MU_tEMMX                                (1<<6)  /* EMMX = E3DNow!_INT = SSE_INT  */
396 #define         MU_tSSE2                                (1<<7)
397 #define         MU_tCLFLUSH                             (1<<18)
398 #define         MU_tMULTI                               (1<<12) /* for Multi-threaded encoder. Never set on UP or in the binary linked w/o multithread lib. */
399
400 // x86 - Vendor
401 #define         MU_tINTEL                               (1<<8)
402 #define         MU_tAMD                                 (1<<9)
403 #define         MU_tCYRIX                               (1<<10)
404 #define         MU_tIDT                                 (1<<11)
405 #define         MU_tUNKNOWN                             (1<<15) /* unknown vendor */
406
407 // x86 - Special
408 #define         MU_tSPC1                                (1<<16) /* special flag */
409 #define         MU_tSPC2                                (1<<17) /* freely available */
410 // x86 - CPU TYPES
411 #define         MU_tFAMILY4                             (1<<20) /* 486 vendor maybe isn't correct */
412 #define         MU_tFAMILY5                             (1<<21) /* 586 (P5, P5-MMX, K6, K6-2, K6-III) */
413 #define         MU_tFAMILY6                             (1<<22) /* 686 above P-Pro, P-II, P-III, Athlon */
414 #define         MU_tFAMILY7                             (1<<23) /* Pentium IV ? */
415
416 // for PPC arc
417 #define         MU_tPPC                                 (1<<0)
418 #define         MU_tGRAP                                (1<<1)  /* fres, frsqrte, fsel */
419 #define         MU_tFSQRT                               (1<<2)  /* fsqrt, fsqrts */
420 #define         MU_tALTIVEC                             (1<<3)  /* AltiVec */
421
422
423 #endif /* GOGO_H_ */