/* -*- TABSIZE = 4 -*- */ /* * for new GOGO-no-coda ( 2000/1/15 ) * Copyright (C)1999,2000 PEN@MarineCat */ #ifndef __MUSUI_H__ #define __MUSUI_H__ #include typedef signed int MERET; #ifndef __os2__ typedef unsigned long MPARAM; #else typedef unsigned long MUPARAM; #endif typedef unsigned long UPARAM; #ifdef GOGO_DLL_EXPORTS #define EXPORT __declspec(dllexport) #else #define EXPORT #endif #define ME_NOERR (0) // return normally;正常終了 #define ME_EMPTYSTREAM (1) // stream becomes empty;ストリームが最後に達した #define ME_HALTED (2) // stopped by user;(ユーザーの手により)中断された #define ME_INTERNALERROR (10) // internal error; 内部エラー #define ME_PARAMERROR (11) // parameters error;設定でパラメーターエラー #define ME_NOFPU (12) // no FPU;FPUを装着していない!! #define ME_INFILE_NOFOUND (13) // can't open input file;入力ファイルを正しく開けない #define ME_OUTFILE_NOFOUND (14) // can't open output file;出力ファイルを正しく開けない #define ME_FREQERROR (15) // frequency is not good;入出力周波数が正しくない #define ME_BITRATEERROR (16) // bitrate is not good;出力ビットレートが正しくない #define ME_WAVETYPE_ERR (17) // WAV format is not good;ウェーブタイプが正しくない #define ME_CANNOT_SEEK (18) // can't seek;正しくシーク出来ない #define ME_BITRATE_ERR (19) // only for compatibility;ビットレート設定が正しくない #define ME_BADMODEORLAYER (20) // mode/layer not good;モード・レイヤの設定異常 #define ME_NOMEMORY (21) // fail to allocate memory;メモリアローケーション失敗 #define ME_CANNOT_SET_SCOPE (22) // thread error;スレッド属性エラー(pthread only) #define ME_CANNOT_CREATE_THREAD (23) // fail to create thear;スレッド生成エラー #define ME_WRITEERROR (24) // lock of capacity of disk;記憶媒体の容量不足 // definition of call-back function for user;ユーザーのコールバック関数定義 typedef MERET (*MPGE_USERFUNC)(void *buf, unsigned long nLength ); #define MPGE_NULL_FUNC (MPGE_USERFUNC)NULL // for HighC /////////////////////////////////////////////////////////////////////////// // Configuration /////////////////////////////////////////////////////////////////////////// // for INPUT #define MC_INPUTFILE (1) // para1 choice of input device #define MC_INPDEV_FILE (0) // input device is file;入力デバイスはファイル #define MC_INPDEV_STDIO (1) // stdin;入力デバイスは標準入力 #define MC_INPDEV_USERFUNC (2) // defined by user;入力デバイスはユーザー定義 // para2 (必要であれば)ファイル名。ポインタを指定する // メモリよりエンコードの時は以下の構造体のポインタを指定する. struct MCP_INPDEV_USERFUNC { MPGE_USERFUNC pUserFunc; // pointer to user-function for call-back or MPGE_NULL_FUNC if none // コールバック対象のユーザー関数。未定義時MPGE_NULL_FUNCを代入 unsigned int nSize; // size of file or MC_INPDEV_MEMORY_NOSIZE if unknown // ファイルサイズ。不定の時は MC_INPDEV_MEMORY_NOSIZEを指定 int nBit; // nBit = 8 or 16 ; PCMビット深度を指定 int nFreq; // input frequency ; 入力周波数の指定 int nChn; // number of channel(1 or 2) ; チャネル数 }; #define MC_INPDEV_MEMORY_NOSIZE (UINT_MAX) /* Using userfunction input; ユーザー関数利用時の挙動 ^^^^^^^^^^^^^^^^^^^^^^^^ ユーザーが登録した関数 UsefFuncに対して、DLLより読み込み要求が行われる。 MERET UserFunc_input(void *buf, unsigned long nLength ); 要求を処理する際に ・void *buf には nLength バイト分のデータを格納、 return ME_NOERRで抜ける ・ファイルの最後に達して、nLength分読み込めない(かつ少なくとも1バイト以上読み込める)場合、 memset( buf + 読み込んだデータbyte, 0, nLength - 読み込んだデータサイズ) ; として return ME_NOERR する。 ・1バイトも読めない場合は、何もせず return ME_EMPTYSTREAM; で抜ける */ /////////////////////////////////////////////////////////////////////////// // for OUTPUT ( now stdout is not support ) #define MC_OUTPUTFILE (2) // para1 choice of output device #define MC_OUTDEV_FILE (0) // output device is file;出力デバイスはファイル #define MC_OUTDEV_STDOUT (1) // stdout; 出力デバイスは標準出力 #define MC_OUTDEV_USERFUNC (2) // defined by user;出力デバイスはユーザー定義 #define MC_OUTDEV_USERFUNC_WITHVBRTAG (3) // defined by user;入力デバイスはユーザー定義/VBRタグ書き出し // para2 pointer to file if necessary ;(必要であれば)ファイル名。ポインタ指定 /* Using userfunction output ユーザー関数利用時の挙動 ^^^^^^^^^^^^^^^^^^^^^^^^ ユーザーが登録した関数 UsefFuncに対して、DLLより書込み要求が行われる。 MERET UserFunc_output(void *buf, unsigned long nLength ); 要求を処理する際に ・void *buf には nLength バイト分のデータが格納されているので fwrite( buf, 1, nLength, fp );の様にして書き出しreturn ME_NOERRで抜ける. 書き出しに失敗した時は、return ME_WRITEERROR;で抜ける. ・最後に buf == NULLで1度呼び出される. return 値は何でも良い。 (MC_OUTDEV_USERFUNC_WITHVBRTAGで登録した際には、以下の挙動が追加される) ・もう一度buf == NULLで呼び出される.この際にファイルの先頭へシークし、 ファイル全体のサイズを returnの値とする。filesize<=0の時は終了。 (誤って return ME_NOERR; で抜けない様に注意!! ) ・XING-VBRタグデータが bufに、XINGVBRタグのサイズが nLengthに格納されて呼び出される. ・最後にもう一度buf == NULLで呼び出される. */ /////////////////////////////////////////////////////////////////////////// // mode of encoding ;エンコードタイプ #define MC_ENCODEMODE (3) // para1 mode;モード設定 #define MC_MODE_MONO (0) // mono;モノラル #define MC_MODE_STEREO (1) // stereo;ステレオ #define MC_MODE_JOINT (2) // joint-stereo;ジョイント #define MC_MODE_MSSTEREO (3) // mid/side stereo;ミッドサイド #define MC_MODE_DUALCHANNEL (4) // dual channel;デュアルチャネル /////////////////////////////////////////////////////////////////////////// // bitrate;ビットレート設定 #define MC_BITRATE (4) // para1 bitrate;ビットレート 即値指定 /////////////////////////////////////////////////////////////////////////// // frequency of input file (force);入力で用いるサンプル周波数の強制指定 #define MC_INPFREQ (5) // para1 frequency;入出力で用いるデータ /////////////////////////////////////////////////////////////////////////// // frequency of output mp3 (force);出力で用いるサンプル周波数の強制指定 #define MC_OUTFREQ (6) // para1 frequency;入出力で用いるデータ /////////////////////////////////////////////////////////////////////////// // size ofheader if you ignore WAV-header (for example cda);エンコード開始位置の強制指定(ヘッダを無視する時) #define MC_STARTOFFSET (7) /////////////////////////////////////////////////////////////////////////// // psycho-acoustics ON/OFF;心理解析 ON/OFF #define MC_USEPSY (8) // PARA1 boolean(TRUE/FALSE) /////////////////////////////////////////////////////////////////////////// // 16kHz low-pass filter ON/OFF;16KHz低帯域フィルタ ON/OFF #define MC_USELPF16 (9) // PARA1 boolean(TRUE/FALSE) /////////////////////////////////////////////////////////////////////////// // use special UNIT, para1:boolean; ユニット指定 para1:BOOL値 #define MC_USEMMX (10) // MMX #define MC_USE3DNOW (11) // 3DNow! #define MC_USEKNI (12) // SSE(KNI) #define MC_USEE3DNOW (13) // Enhanced 3D Now! #define MC_USESPC1 (14) // special switch for debug #define MC_USESPC2 (15) // special switch for debug /////////////////////////////////////////////////////////////////////////// // addition of TAG; ファイルタグ情報付加 #define MC_ADDTAG (16) // dwPara1 length of TAG;タグ長 // dwPara2 pointer to TAG;タグデータのポインタ /////////////////////////////////////////////////////////////////////////// // emphasis;エンファシスタイプの設定 #define MC_EMPHASIS (17) // para1 type of emphasis;エンファシスタイプの設定 #define MC_EMP_NONE (0) // no empahsis;エンファシスなし(dflt) #define MC_EMP_5015MS (1) // 50/15ms ;エンファシス50/15ms #define MC_EMP_CCITT (3) // CCITT ;エンファシスCCITT /////////////////////////////////////////////////////////////////////////// // use VBR;VBRタイプの設定 #define MC_VBR (18) /////////////////////////////////////////////////////////////////////////// // SMP support para1: interger #define MC_CPU (19) /////////////////////////////////////////////////////////////////////////// // for RAW-PCM; 以下4つはRAW-PCMの設定のため // byte swapping for 16bitPCM; PCM入力時のlow, high bit 変換 #define MC_BYTE_SWAP (20) /////////////////////////////////////////////////////////////////////////// // for 8bit PCM #define MC_8BIT_PCM (21) /////////////////////////////////////////////////////////////////////////// // for mono PCM #define MC_MONO_PCM (22) /////////////////////////////////////////////////////////////////////////// // for Towns SND #define MC_TOWNS_SND (23) /////////////////////////////////////////////////////////////////////////// // BeOS & Win32 Encode thread priority #define MC_THREAD_PRIORITY (24) // (WIN32) dwPara1 MULTITHREAD Priority (THREAD_PRIORITY_**** at WinBASE.h ) /////////////////////////////////////////////////////////////////////////// // BeOS Read thread priority //#if defined(USE_BTHREAD) #define MC_READTHREAD_PRIORITY (25) //#endif /////////////////////////////////////////////////////////////////////////// // output format #define MC_OUTPUT_FORMAT (26) // para1 #define MC_OUTPUT_NORMAL (0) // mp3+TAG(see MC_ADDTAG) #define MC_OUTPUT_RIFF_WAVE (1) // RIFF/WAVE #define MC_OUTPUT_RIFF_RMP (2) // RIFF/RMP /////////////////////////////////////////////////////////////////////////// // LIST/INFO chunk of RIFF/WAVE or RIFF/RMP #define MC_RIFF_INFO (27) // para1 size of info(include info name) // para2 pointer to info // offset contents // 0..3 info name // 4..size of info-1 info /////////////////////////////////////////////////////////////////////////// // verify and overwrite #define MC_VERIFY (28) /////////////////////////////////////////////////////////////////////////// // output directory #define MC_OUTPUTDIR (29) /////////////////////////////////////////////////////////////////////////// // VBRの最低/最高ビットレートの設定 #define MC_VBRBITRATE (30) // para1 最低ビットレート (kbps) // para2 最高ビットレート (kbps) /////////////////////////////////////////////////////////////////////////// // 拡張フィルタの使用 LPF1, LPF2 #define MC_ENHANCEDFILTER (31) // para1 LPF1 (0-100) // para2 LPF2 (0-100) /////////////////////////////////////////////////////////////////////////// // Joint-stereoにおける、ステレオ/MSステレオの切り替えの閾値 #define MC_MSTHRESHOLD (32) // para1 threshold (0-100) // para2 mspower (0-100) /////////////////////////////////////////////////////////////////////////// // Language #define MC_LANG (33) // t_lang defined in message.h MERET EXPORT MPGE_initializeWork(); #ifndef __os2__ MERET EXPORT MPGE_setConfigure(MPARAM mode, UPARAM dwPara1, UPARAM dwPara2 ); MERET EXPORT MPGE_getConfigure(MPARAM mode, void *para1 ); #else MERET EXPORT MPGE_setConfigure(MUPARAM mode, UPARAM dwPara1, UPARAM dwPara2 ); MERET EXPORT MPGE_getConfigure(MUPARAM mode, void *para1 ); #endif MERET EXPORT MPGE_detectConfigure(); #ifdef USE_BETHREAD MERET EXPORT MPGE_processFrame(int *frameNum); #else MERET EXPORT MPGE_processFrame(); #endif MERET EXPORT MPGE_closeCoder(); MERET EXPORT MPGE_endCoder(); MERET EXPORT MPGE_getUnitStates( unsigned long *unit ); MERET EXPORT MPGE_processTrack(int *frameNum); // This function is effective for gogo.dll;このファンクションはDLLバージョンのみ有効 MERET EXPORT MPGE_getVersion( unsigned long *vercode, char *verstring ); // vercode = 0x125 -> version 1.25 // verstring -> "ver 1.25 1999/09/25" (allocate abobe 260bytes buffer) //////////////////////////////////////////////////////////////////////////// // for getting configuration //////////////////////////////////////////////////////////////////////////// #define MG_INPUTFILE (1) // name of input file ;入力ファイル名取得 #define MG_OUTPUTFILE (2) // name of output file;出力ファイル名取得 #define MG_ENCODEMODE (3) // type of encoding ;エンコードモード #define MG_BITRATE (4) // bitrate ;ビットレート #define MG_INPFREQ (5) // input frequency ;入力周波数 #define MG_OUTFREQ (6) // output frequency ;出力周波数 #define MG_STARTOFFSET (7) // offset of input PCM;スタートオフセット #define MG_USEPSY (8) // psycho-acoustics ;心理解析を使用する/しない #define MG_USEMMX (9) // MMX #define MG_USE3DNOW (10) // 3DNow! #define MG_USEKNI (11) // SSE(KNI) #define MG_USEE3DNOW (12) // Enhanced 3DNow! #define MG_USESPC1 (13) // special switch for debug #define MG_USESPC2 (14) // special switch for debug #define MG_COUNT_FRAME (15) // amount of frame #define MG_NUM_OF_SAMPLES (16) // number of sample for 1 frame;1フレームあたりのサンプル数 #define MG_MPEG_VERSION (17) // MPEG VERSION #define MG_READTHREAD_PRIORITY (18) // thread priority to read for BeOS #endif /* __MUSUI_H__ */